fasttext の UnicodeDecodeError: ‘utf-8’

  • このエントリーをはてなブックマークに追加
  • LINEで送る

さて、fasttext の単語をベクトル表現を触っていたのだが、エラーがでた。
解決したので書いてみる。
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x82 in position 0: invalid start byte
fasttext の使用法を検索していると、バイナリファイルは使うなとの記載をよく見かけた。
問題があるらしい。
ベクトルのテキストファイルを使えとの事だった。

自分の開発環境は、Windows、python、PyCharmの利用だ。

コマンドラインで作れば、バイナリとベクトルファイルが吐き出されるらしいが。
自分の環境にはないんだが……
やり方を知らないだけなのかな?
独学だしね。

素直に分かち書きをして、pythonでベクトル表現を作成した。
fasttext.train_unsupervised(‘All.txt’, model=’skipgram’,thread=8,dim=300)
こんな感じ。
model.save_model(“All.bin”)
で保存した。

vec = model.get_word_vector('未練')
でベクトルは取れるのだが。

model.get_nearest_neighbors('未練')
で、
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 0: invalid start byte
が発生。

うーん。

検索しても解決方法が見つからない。
model.words
でベクトルを取れば?
みたいな事が書いてあったが、同じエラーが出る。
自分は、英語はさっぱり読めないんだがなぁ。

Unicode の DecodeError…… で……?
‘utf-8’に変換できなかった……と?
エラー内容が書いてあるのだろうか?

うーん。

この状況、覚えがあるな。
昔、web関係の仕事をしていた時だ。
文字コードで苦労した覚えがある。
はっ!

これは、もう、解決じゃないか!

はい!
作り直し。
model.get_nearest_neighbors(‘未練’)がきちんと動きました。

原因は、一番初めの食わせたファイル。
の文字コード。
でした。
iso-2022-jp 日本語(シフトJIS)

utf-8じゃない。
シフトJIS ー> utf-8 へ
UTF は、8、16、32とありますが。
utf-8へと変換しました。

文字コードを正しく直して、fasttextに入力すれば問題なく使えます。
文字コードの問題に気付かない人は、バイナリを使うな!
問題があるよ!
と書いているのだろう。
fasttextは、utf-8でないと正しく動作しないようです。
文字コードにはお気を付けください。

まぁ、よくわからないけど。
責任も持ちませんが、何か?

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

スポンサーリンク

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください