gpt4 book ai didi

python - 更新 spaCy 词汇表

转载 作者:行者123 更新时间:2023-11-28 17:17:16 26 4
gpt4 key购买 nike

我想知道是否可以更新 spacys 的默认词汇表。我正在尝试做的是:

  • 使用 gensim 在我自己的语料库上运行 word2vec
  • 使用 nlp.vocab.load_vectors_from_bin_loc(\path) 将向量加载到我的模型中

但是由于我语料库中的很多词不在 spacys 默认词汇表中,所以我无法使用导入的向量。有没有一种(简单的)方法来添加那些缺失的类型?

编辑:
我意识到混合向量可能会有问题。所以我的问题是:
如何将自定义词汇表导入 spacy?

最佳答案

这在下一个版本中要容易得多,应该在本周发布 --- 我刚刚完成测试。现在:

默认情况下,spaCy 加载一个 data/vocab/vec.bin 文件,其中“data”目录位于 spacy.en 模块目录中使用 spacy.vocab.write_binary_vectors 从 bz2 文件创建 vec.bin 文件用二进制文件的路径替换 spaCy 的 vec.bin 文件,或在运行时调用 nlp.vocab.load_rep_vectors。上面的一开始有点不方便,但是二进制文件格式更小,加载速度更快,而矢量文件相当大。请注意,GloVe 以 gzip 格式而非 bzip 格式分发。

出于兴趣:您使用的是 GloVe 向量,还是您根据自己的数据训练的向量?如果你自己的数据,你用的是Gensim吗?我想让这一切变得更容易,所以如果您能就您希望看到的工作流程提出建议,我将不胜感激。

在运行时加载新的向量,可选择转换它们

    import spacy.vocab

def set_spacy_vectors(nlp, binary_loc, bz2_loc=None):
if bz2_loc is not None:
spacy.vocab.write_binary_vectors(bz2_loc, binary_loc)
write_binary_vectors(bz2_input_loc, binary_loc)

nlp.vocab.load_rep_vectors(binary_loc)

替换 vec.bin,这样您的载体将默认加载

from spacy.vocab import write_binary_vectors
import spacy.en

from os import path

def main(bz2_loc):
bin_loc = path.join(path.dirname(spacy.en.__file__), 'data', 'vocab', 'vec.bin')
write_binary_vectors(bz2_loc, bin_loc)

if __name__ == '__main__':
plac.call(main)

关于python - 更新 spaCy 词汇表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com