小编Big*_*igD的帖子

如何在不使用嵌套for循环的情况下将两个列表合并到字典中

我有两个清单:

a = [0, 0, 0, 1, 1, 1, 1, 1, .... 99999]
b = [24, 53, 88, 32, 45, 24, 88, 53, ...... 1]
Run Code Online (Sandbox Code Playgroud)

我想将这两个列表合并到一个字典中,如:

{
    0: [24, 53, 88], 
    1: [32, 45, 24, 88, 53], 
    ...... 
    99999: [1]
}
Run Code Online (Sandbox Code Playgroud)

一个解决方案可能是使用for循环,它看起来不太优雅,如:

d = {}
unique_a = list(set(list_a))
for i in range(len(list_a)):
    if list_a[i] in d.keys:
        d[list_a[i]].append(list_b[i])
    else:
        d[list_a] = [list_b[i]]
Run Code Online (Sandbox Code Playgroud)

虽然这确实有效,但它效率很低,而且当列表非常大时会占用太多时间.我想知道更优雅的方法来构建这样的字典吗?

提前致谢!

python dictionary list

18
推荐指数
3
解决办法
3191
查看次数

使用 Bert 预测多个 token

我正在寻找有关使用 Bert 和 Bert 的屏蔽语言模型来预测多个标记的建议。

我的数据看起来像:

语境: some very long context paragraph

问题:rainy days lead to @placeholder这个问题的答案@placeholderwet weather。在模型中,wet environment是要预测的答案。

那么在预处理阶段,我应该将文本更改为rainy days lead to [MASK]或类似的内容rainy days lead to [MASK] [MASK]吗?我知道 masked LM 在单个 token 预测上效果很好,你认为 masked LM 可以在多个 token 预测上很好地工作吗?如果没有,您对如何预处理和训练此类数据有什么建议吗?

非常感谢!

python bert-language-model

5
推荐指数
1
解决办法
1594
查看次数

无法加载带有变压器包的 SpanBert 模型

我有一些关于使用转换器包加载 SpanBert 的问题。

我从SpanBert GitHub Repo 和vocab.txtBert下载了预训练文件。这是我用于加载的代码:

model = BertModel.from_pretrained(config_file=config_file,
                                  pretrained_model_name_or_path=model_file,
                                  vocab_file=vocab_file)
model.to("cuda")
Run Code Online (Sandbox Code Playgroud)

在哪里

  • config_file -> config.json
  • model_file -> pytorch_model.bin
  • vocab_file -> vocab.txt

但我得到了UnicodeDecoderError上面的代码说'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

我还尝试使用此处提到的方法加载 SpanBert 。但它回来了OSError: file SpanBERT/spanbert-base-cased not found

您对正确加载预训练模型有什么建议吗?任何建议都非常感谢。谢谢!

python bert-language-model huggingface-transformers

3
推荐指数
1
解决办法
889
查看次数

如何将strsplit应用于R中的数据帧?

我对这个问题有一个非常类似的问题,但我的情况比较复杂.

这是我的示例代码:

test = data.frame(x = c(1:4), 
                 y = c("/abc/werts/h1-1234", "/abc/fghye/seths/h2-234",
                           "/abc/gvawrttd/hyeadar/h3-9868", "/abc/qqras/x1-7653"))
test$y = as.character(test$y)
Run Code Online (Sandbox Code Playgroud)

我想要一个像这样的输出:

1 h1-1234
2 h2-234
3 h3-9868
4 x1-7653
Run Code Online (Sandbox Code Playgroud)

我试过了:

test$y = tail(unlist(strsplit(test$y, "/")), 1)
Run Code Online (Sandbox Code Playgroud)

但是,返回上述代码的结果:

1 h1-1234
2 h1-1234
3 h1-1234
4 h1-1234
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何修改我的代码以便我可以得到我想要的输出?

提前致谢!

r

2
推荐指数
1
解决办法
1102
查看次数

R:我应该如何删除以问号开头的图案

我有一个问题困扰了我很长一段时间:我应该如何删除以问号开头的模式?

例如:

## dataframe named test
x y
1 gffsd?lang=dfs
2 sdldfsd?lang=gsd
3 eoriwesd?lang=fh
4 eriywo?lang=asd
Run Code Online (Sandbox Code Playgroud)

我想要的是:

x y
1 gffsd
2 sdldfsd
3 eoriwesd
4 eriywo
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法,包括:

test$y = sapply(strsplit(test$y, '?'), head, 1)
test$y = sapply(strsplit(test$y, '?lang='), head, 1)
gsub("?",NA, test$y, fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

不幸的是,他们都失败了.

提前致谢!

BTW,任何人都知道如何将"®"替换为" - "

r

1
推荐指数
1
解决办法
1578
查看次数

无法连接AWS上的jupyter笔记本

我在 AWS 上连接 jupyter 笔记本时遇到问题。我尝试了几种解决方案,包括从任何IP设置端口8888的安全组规则,设置配置文件如下:

\n\n
c = get_config()\n\n# Notebook config this is where you saved your pem cert\nc.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' \n# Run on all IP addresses of your instance\nc.NotebookApp.ip = '*'\n# Don't open browser by default\nc.NotebookApp.open_browser = False  \n# Fix port to 8888\nc.NotebookApp.port = 8888\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,我尝试使用jupyter notebook --ip=my_aws_ip --port=8888. 对于登录部分,我使用ssh -i <pem key> ubuntu@<ec2...> -L 8888:localhost:8888返回的所有上述解决方案https://ip-172-31-44-200:8888/?token=******,并且我无法在网络浏览器中打开此网址,说ip-172-31-44-200\xe2\x80\x99s server IP address could not be found.

\n\n

有什么解决办法吗?提前致谢!

\n

amazon-web-services jupyter-notebook

0
推荐指数
1
解决办法
2244
查看次数