【MeCab】Python3で解析時にbuiltins.UnicodeDecodeError【Flask】
Twitterから取得したデータをMeCabで処理し、Flaskを用いたWebアプリケーション上で表示しようとしたところ、下記のようなエラーが出現。
builtins.UnicodeDecodeError
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 0: invalid start byte
もしかしたらまたハマるかもしれないので念のためメモ。
環境
解決策
原因は不明だが、エラーメッセージを見るにエンコーディングがどうので死んでしまう模様。
ちなみにMeCabの実装コードは下記のような感じ。
import MeCab mecab = MeCab.Tagger() node = mecab.parseToNode("私はルイズが好きです。なぜなら、彼女はとてもキュートだからです。") while node: print(node.surface) node = node.next
中々解決策に辿りつけなかったのだが、一行追記することでエラーの回避が可能に。
原因は正直良くわからない。
修正したコードは以下。
import MeCab mecab = MeCab.Tagger() mecab.parse('') # これを追記! node = mecab.parseToNode("私はルイズが大好きです。なぜなら、彼女はとてもとてもキュートだからです。ルイズかわいい!") while node: print(node.surface) node = node.next
元々Python3でMeCabのparseToNode
メソッドを使用すると、最初に返されるnodeが空の値というバグがあり、この解決のためにmecab.parse('')
をするらしいのだが、UnicodeDecodeErrorへも対策として効果を発揮してくれた。
原因はよく分からないが、動くようになったので取り敢えず良しとする。