久しぶりにgensimのword2vecを使いたいなと思ってやってたら、model作成の際にエラーが出て悩んだ。下記のようなエラーである。
UnicodeDecodeError: 'utf-8' codec can't decode...
結論から言うと、学習用txtファイルがおかしくなっていたみたい。iconvコマンドでエンコーディングを確認すると、utf-8になっていたのだが、nkfコマンドでエンコーディングを確認すると何故かBINARYと表示されていた。
原因
原因は学習用のファイルを作成の際に行うmecabのowakatiがうまく行ってなかったようだ。
mecab -Owakati input.txt -o data.txt
としていたが、確かにこのときOVERFLOW...的なことを言っていた。
雰囲気上、問題無い感じで出来上がり、ファイルも開けていたので気にしていなかったが、これが原因だったみたいである。
mecab -b 81920 -Owakati input.txt -o data.txt
上記のようにメモリサイズを指定する必要がある。昔書いた記事に書いてて、実際にそれを見て思い出した(笑)
ただし、このときは別のエラーが起きていた気がする。
何はともあれ治ったので良かった。なんかあんまりこのエラーについて情報なかったけど、たしかに下準備からのエラーだからか。
それにしても、なぜiconvはUTF-8と判断したのか謎である…。