Harukaのnote

Linuxやプログラミング,写真,旅行等の記録帳

Python3 gensimでUnicodeDecodeError

久しぶりに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と判断したのか謎である…。