给出最相似的单词,给出单词的向量(不是单词本身)

ami*_*min 19 python gensim word2vec

使用该gensim.models.Word2Vec库,您可以提供一个模型和一个"单词",您可以为其找到最相似的单词列表:

model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True)
model.most_similar(positive=[WORD], topn=N)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能将系统作为输入模型和"向量",并要求系统返回顶部相似的单词(它们的向量非常接近给定的向量).类似的东西:

model.most_similar(positive=[VECTOR], topn=N)
Run Code Online (Sandbox Code Playgroud)

我需要这个功能用于双语设置,其中我有2个模型(英语和德语),以及一些英语单词,我需要找到他们最相似的德国候选人.我想要做的是从英语模型中获取每个英语单词的向量:

model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True)
vector_w_en=model_EN[WORD_EN]
Run Code Online (Sandbox Code Playgroud)

然后用这些向量查询德国模型.

model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True)
model_DE.most_similar(positive=[vector_w_en], topn=N)
Run Code Online (Sandbox Code Playgroud)

我已经使用word2vec包中的原始距离函数在C中实现了这一点.但是,现在我需要它在python中,以便能够将它与我的其他脚本集成.

你知道在gensim.models.Word2Vec库或其他类似的库中是否已经有一个方法可以做到这一点吗?我需要自己实施吗?

小智 22

该方法similar_by_vector通过向量返回前N个最相似的单词:

similar_by_vector(vector, topn=10, restrict_vocab=None)
Run Code Online (Sandbox Code Playgroud)