使用 gensim.models.Word2Vec
库,您可以提供一个模型和一个“单词”,您希望找到最相似的单词列表:
model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True)
model.most_similar(positive=[WORD], topn=N)
我想知道是否有可能给系统作为输入模型和“向量”,并要求系统返回最相似的词(它们的向量非常接近给定向量)。类似于:
model.most_similar(positive=[VECTOR], topn=N)
我需要此功能用于双语设置,其中我有 2 个模型(英语和德语),以及一些我需要找到它们最相似的德语候选者的英语单词。 我要做的是从英文模型中得到每个英文单词的向量:
model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True)
vector_w_en=model_EN[WORD_EN]
然后用这些向量查询德国模型。
model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True)
model_DE.most_similar(positive=[vector_w_en], topn=N)
我使用 word2vec 包中的原始距离函数在 C 中实现了这一点。但是,现在我需要它在 python 中,以便能够将它与我的其他脚本集成。
你知道 gensim.models.Word2Vec
库或其他类似库中是否已经有一个方法可以做到这一点?需要我自己实现吗?
最佳答案
方法similar_by_vector
按向量返回前 N 个最相似的词:
similar_by_vector(vector, topn=10, restrict_vocab=None)
关于python - 给定单词的向量(不是单词本身),获取最相似的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818426/