2017-07-14 8 views
0

私は単語をベクトルとして表現するためにword2vecを使用しています。word2vec vocab vs char

text = np.loadtxt("file.txt", dtype=str, delimiter=" ") 
word2vec = w2v.Word2Vec(text, size=100, window=5, min_count=5, workers=4) 
print(len(word2vec.wv.vocab)) 

テキストは単語(文字列)のリストです。単語の数を印刷する代わりに、このコードは26、#英字を出力します。私のモデルにword2vecを訓練するためには、私は文字ではなく単語を扱う必要があります。テキストを文字列に変換しようとしましたが、成功しませんでした。私は間違って何をしていますか?

+0

'text'は、単語のリストですか? –

答えて

0

私はあなたが単語のリストのリストを渡す必要があると考えている:

word2vec = w2v.Word2Vec(text.reshape(-1, 1), size=100, window=5, min_count=5, workers=4) 
+0

私はそれが動作していると思います。ありがとうございました。ユニークな単語の数がカウントされているのか、繰り返し計算された単語が二重にカウントされたのか分かりますか? –

+0

@HYUNJAECHOこれらの単語が繰り返されている場合、私は語彙数がユニークな単語だけを考慮していると信じています。しかし、モデルを訓練する際には、左右の重複が考慮され、最終的な結果に影響を与えます。また、[this](https://stackoverflow.com/help/someone-answers)を見てみることを検討してください。 –

+0

@COLDSPEEDこれでベクトルを構築できますが、私のモデルは単語間の関係をうまくとらえているとは思いません。たとえば、print model.similarity( 'big'、 'large')は-0.0257764676135です。それを修正するアイデアはありますか?私はGoogleの事前構築モデルを使用することができますが、それを使用しても私のテキストを表すわけではありません。私のモデルにあらかじめ構築されたモデルを使用してトレーニングする方法はありますか? –