2016-10-16 21 views
5

テンソルフローword2vecモデル出力を読む特定の単語に関連する単語をどのように出力できますか?word2vec - 最も近い単語を取得

src:https://github.com/tensorflow/tensorflow/blob/r0.11/tensorflow/examples/tutorials/word2vec/word2vec_basic.pyを読むと、画像がプロットされている様子を見ることができます。

しかし、与えられた単語に最も近いn個の最も近い単語にアクセスするモデルのトレーニングの一部として作成されたデータ構造(辞書など)はありますか?例えば word2vec生成された画像場合:

enter image description here

画像SRC:このイメージにhttps://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html

単語「に、彼は、それが」、同じクラスタに含まれているのように取る関数であります'to'を入力して 'he、it'(この場合n = 2)を出力しますか?

答えて

4

このアプローチは一般的にword2vecに適用されます。 word2vecをgoogle/GloVe単語ベクトルのようなテキスト/バイナリファイルに保存することができます。あなたが必要とするものはgensimです。

をインストールするには:

Via github

Pythonコード:

from gensim.models import Word2Vec 

gmodel=Word2Vec.load_word2vec_format(fname) 
ms=gmodel.most_similar('good',10) 
for x in ms: 
    print x[0],x[1] 

しかし、これは結果を出すために、すべての単語を検索しますが、そこにあるあなたを与えるだろう近似最近傍(ANN)結果はより速くなりますが、精度のトレードオフがあります。

最新のgensimで、annoyを使用してANNを実行します(詳細はnotebooksを参照してください)。

Flann is another library for Approximate Nearest Neighbors.

0

gensimを取得し、gensim.models.Word2Vecモデルにsimilar_by_wordメソッドを使用します。上位n類似語(オプション、デフォルト= 10)

  • restrict_vocab(オプション、デフォルト=なし)
  • ため -

    similar_by_wordは3つのパラメータ、

    1. 入力ワード
    2. Nを取り

      import gensim, nltk 
      
      class FileToSent(object): 
          """A class to load a text file efficiently """ 
          def __init__(self, filename): 
           self.filename = filename 
           # To remove stop words (optional) 
           self.stop = set(nltk.corpus.stopwords.words('english')) 
      
          def __iter__(self): 
           for line in open(self.filename, 'r'): 
            ll = [i for i in unicode(line, 'utf-8').lower().split() if i not in self.stop] 
            yield ll 
      

      あなたの入力文(sentence_file.txt)に応じて、

      sentences = FileToSent('sentence_file.txt') 
      model = gensim.models.Word2Vec(sentences=sentences, min_count=2, hs=1) 
      print model.similar_by_word('hack', 2) # Get two most similar words to 'hack' 
      # [(u'debug', 0.967338502407074), (u'patch', 0.952264130115509)] (Output specific to my dataset) 
      
    関連する問題