つきすけ の コーディング記

細かいところで嫌にならないように、小さいことでも解説していくブログ。たまに関係ないことも書く。

Polyglotで品詞タグづけしたときのエラー話(一部未解決)

Polyglotで品詞タグ付けをやろうと思った時のこと。

ユニコードエラー
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte

ぜんぜんわからないまま格闘すること一時間

polyglot自体を再インストールすることで直った(emmbeding2とpos2も一緒に入れ直した)

そしたら違うエラー(pos2.laがないよと言われた)

ラテン語なんて処理しているつもりはないのだが、どうもどこかに出てくるらしい。

ValueError: Package 'pos2.la' not found in index

しかし、download embedding2 pos2 をしても、pos2だけ、どーもうまく入らない。

[polyglot_data] Error loading pos2.la: Package 'pos2.la' not found in
[polyglot_data]     index
Error installing package. Retry? [n/y/e]

polyglot再インストールしてもだめ。PC再起動してもダメ。
そもそもラテン語を処理する必要なんてないので、スキップしてもらいたい。

言語判定をいれることにした

ソース

Detector(tokens.words[t])

出力

polyglot.detect.base.UnknownLanguage: Try passing a longer snippet of text

しかし今度は不明な言語に対してエラーが出る。そんな言語ねえよと。
どうやらこの例外は黙らせることができるらしい。

ソース

Detector(tokens.words[t],quiet=True)

例外はだまったが。では言語判定してラテン語が出てきたら弾く処理を書く。

ソース

if detector.language.name != "英語":
   ...

まさかの"!="の先は日本語だった。

しかし、pos2.laエラーは消えなかった

いくらprintデバッグしたって、意味がわからない。
Polyglotで超長文を処理するのはやめておくべきということだろうか。