2016-06-14 7 views
7

gensim.models.Word2Vecライブラリを使用すると、最も類似した単語のリストを検索するモデ​​ルと "単語"を提供することができます:単語のベクトル(単語自体ではない)が与えられた場合、最も類似した単語を取得

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

私は、入力として、モデルと「ベクター」のシステムを提供し、そのベクトルが与えられたベクトルに非常に近いである(トップ類似した単語を返すようにシステムを依頼する可能性がありますかしら)。私は2つのモデル(英語とドイツ語)、だけでなく、私は彼らの最も類似したドイツの候補者を見つけるために必要があるため、いくつかの英語の単語を持っているバイリンガル設定、この機能を必要と

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ライブラリまたはこれを実行する他の同様のライブラリに既にメソッドがあるかどうか知っていますか?自分でそれを実装する必要がありますか?

+0

は 'most_similar(..)は'だけでなく、あなたにスコアを返していますか?私はあなたが書いたカスタム関数を描いています。ベクトルのすべての単語に対して 'most_similar'を呼び出し、ALLの結果を同じリストに追加してスコアとソートを並べ替えます。 – nbryans

+0

ありがとうnbryans。これを行う既存のメソッドがない場合は、次のように実装する必要があります。ボキャブラリ内の各単語に対して、対応するベクトルをモデルから取得します。入力ベクトルと戻されたベクトルのコサイン類似度を計算します。そして、一番上の部分を返す。しかし、私はそのような方法が存在するかもしれないと思った。そうではないようだ。 – amin

答えて

6

ベクターによる最も類似した単語トップ-Nを返しsimilar_by_vector方法:

similar_by_vector(vector, topn=10, restrict_vocab=None) 
関連する問題