wikipediaのデータでdoc2vec(UnicodeDecodeError)
doc2vecを使ってとあるコーパスのドキュメント類似度を取得してみましたが、思ったような結果が得られませんでした。
そこで、doc2vecの記事が同じように検証できるのか調べてみました。 まずは、これです。
doc2vecでWikipediaを学習する - TadaoYamaokaの日記
手順「頻度の少ない単語を除外する」でUnicodeDecodeErrorが発生しました。
Mecabで分かち書きしたwikipediaのデータをpythonで読み込む時に、UnicodeDecodeErrorが発生しました。
$ python ../../../../extract_low_freq_terms.py wiki_wakati.error wiki_lf_terms.1 Traceback (most recent call last): File "../../../../extract_low_freq_terms.py", line 12, in <module> for line in open(args.input, "r", encoding="utf-8"): File "/Users/unokun/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 5844: invalid continuation byte
python、UnicodeDecodeErrorで検索しましたが、それらしい記事は見つかりませんでした。
原因は、mecabによる分かち書きで、バッファサイズが足らなかったことが原因でした。バッファサイズを多くとるとそれ以降の処理を問題なく実行することができました。
mecabはバッファサイズを越えた時点で処理をするため、1文字分のデータを出力していないのだと思います。
変更前 $ mecab -O wakati wiki -o wiki_wakati.error input-buffer overflow. The line is split. use -b #SIZE option. 変更後 $ mecab -b 100000 -O wakati wiki -o wiki_wakati.error
同じくwikipediaのデータを使っている
が参考になりました。