【python3】word2vecでKeyError
環境
Windows10 cygwin word2vec 0.91 pyton3.5.1
事象
こんな感じで「KeyError」ってエラー発生
$ python-windows -i Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import word2vec >>> word2vec.word2vec('c:/tmp/wakati_text.txt', 'c:/tmp/wakati_text.bin', size=300, verbose=True) b'Starting training using file c:/tmp/wakati_text.txt\r\n'b'Vocab size: 279\r\n'b'Words in train file: 3935\r\n'>>> >>> model = word2vec.load('c:/tmp/wakati_text.bin') >>> model.cosine('ブラジル') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python3.5\lib\site-packages\word2vec\wordvectors.py", line 76, in cosine metrics = np.dot(self.vectors, self[word].T) File "C:\Python3.5\lib\site-packages\word2vec\wordvectors.py", line 45, in __getitem__ return self.get_vector(word) File "C:\Python3.5\lib\site-packages\word2vec\wordvectors.py", line 54, in get_vector idx = self.ix(word) File "C:\Python3.5\lib\site-packages\word2vec\wordvectors.py", line 42, in ix return self.vocab_hash[word] KeyError: 'ブラジル'
関係しそうな情報発見
>その語が登録されていないと、KeyErrorを返す
ノート/テキストマイニング/gensim-word2vecでベクトル空間を試す - 東邦大学理学部情報科学科 山内のサイト
もしかしたら元データが文字化けとしかしてる?
それか文字コードの関係とか・・
wakati_text.txtを確認した所、UTF-8。
これも関係しそう。
>word2vecでモデルを構築するときにデフォルトだと頻度が5未満の文字は無視されてしまう。頻度がどれくらいなら無視するかはmin_countパラメータで設定できる。
Tech Tips: word2vecで遊ぶ
コーパスファイルの中を確認して頻出しそうなワードを指定してみるとエラー出なかった。
>>> model.cosine('ライフ')