使用 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)
我需要在双语环境中使用此功能,其中我有两种模型(英语和德语),以及一些英语单词,我需要找到它们最相似的德语候选者。 我的目标是从英语模型中获取每个英语单词的向量:
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
库或其他类似的库来完成此操作?还是我需要自己实现它?
most_similar(..)
会返回分数吗?我想象中你会编写一个自定义函数,对向量中的每个单词调用most_similar
,将所有结果添加到同一个列表中,然后按分数排序并返回。 - nbryans