在下一个版本中,这将变得更加容易,该版本应该会在本周发布 --- 我正在测试它。目前为止:
默认情况下,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)