我想知道是否可以更新Spacys默认词汇表。我试图做的是这样的:对我自己的语料库与gensim 更新spaCy词汇表
nlp.vocab.load_vectors_from_bin_loc(\path)
但自从我的文集很多的话大家还不
- 运行word2vec t在spacys默认词汇表我无法使用导入的向量。有没有一种(简单)的方式来添加这些缺失的类型?
编辑:
我意识到混合载体可能会有问题。所以我的问题是:
如何将一个自定义词汇导入到spacy?
我想知道是否可以更新Spacys默认词汇表。我试图做的是这样的:对我自己的语料库与gensim 更新spaCy词汇表
nlp.vocab.load_vectors_from_bin_loc(\path)
但自从我的文集很多的话大家还不
编辑:
我意识到混合载体可能会有问题。所以我的问题是:
如何将一个自定义词汇导入到spacy?
这在下个版本中会更容易,这个版本应该在本周出来---我只是在完成测试。现在:
默认情况下,spaCy会加载一个data/vocab/vec.bin文件,其中“data”目录位于spacy.en模块目录中 使用spacy.vocab从bz2文件创建vec.bin文件.write_binary_vectors 将运行时替换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)
这将是冷静轻松地通过gensim以可用的格式转储spacy.vocab矢量,在新的语料库上用gensim重新训练,然后在Spacy中重新加载。这目前是直截了当的? – geoffn91