2016-06-14 86 views
7

使用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圖書館或其他類似的圖書館是否已經有這樣的方法?我需要自己實施嗎?

+0

是否'most_similar(..)'分數返回給你呢?我描繪了一個自定義函數,它爲矢量中的每個單詞調用'most_similar',將ALL的結果添加到同一個列表中,然後對得分和返回進行排序。 – nbryans

+0

謝謝nbryans。如果沒有現成的方法來實現這一點,我必須按如下方式實現它:詞彙表中的每個單詞從模型中獲取其相應的向量。計算輸入向量和返回值的餘弦相似度。然後返回最頂級的相似者。但是,我認爲這種方法可能存在。這似乎不是。 – amin

回答

6

similar_by_vector返回由矢量前N個最相似的單詞的方法:

similar_by_vector(vector, topn=10, restrict_vocab=None) 
相關問題