【发布时间】:2019-11-05 11:04:03
【问题描述】:
我想获取相似词的列表。由于 Spacy 没有对此的内置支持,我想将 spacy 模型转换为 gensim word2vec 并获取相似词的列表。
我尝试使用以下方法。但这很耗时。
def most_similar(word):
by_similarity = sorted(word.vocab, key=lambda w: word.similarity(w), reverse=True)
return [w.orth_ for w in by_similarity[:10]]
nlp = spacy.load('en_core_web_md')
nlp.to_disk(filename)
nlp.vocab.vectors.to_disk(filename)
这不会将模型保存到文本文件中。因此,我无法使用以下方法。
from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec
glove_file = datapath('test_glove.txt')
tmp_file = get_tmpfile("test_word2vec.txt")
_ = glove2word2vec(glove_file, tmp_file)
【问题讨论】:
-
你见过这个吗? spacy.io/usage/vectors-similarity#_title 每个 Doc、Span 和 Token 都带有一个 .similarity() 方法,可让您将其与另一个对象进行比较,并确定相似度。
-
是的。但是,我试图获得与 gensim 中 most_similar() 方法等效的结果,它给出了相似标记的列表。
标签: python-3.x nlp gensim spacy similarity