
tl;dr
mecab-python3は使い勝手が悪いのでやめよう後述するPaulがメンテナになってWindowsも含めたwheelが提供されたので今はだいぶマシです- IPAdicを使う場合にpip installで辞書を入れる必要があるのは注意(なんでwheelに辞書混入してたんや)
- 代わりはnatto-pyがおすすめ
- fugashiも選択肢としてあります(が、デフォルトUnidic推しなのでIPAdic使いたい人は説明読んでね)
mecab-python3を止める理由
メンテナが変わってDebianのパッケージを書いている人になったため、ユーザ寄りというよりは開発側の理屈が強く優先されるようになった。良くも悪くもUNIX的な思想?(一つ一つのやれる事は小さくというパイプ的なアレ)なんだが、これがすこぶるwheelのfat binary packageの方向性と相性が悪いと思う。具体的には
- Source build時にswig必須に
- WheelもIPAdicのみサポートでLinuxとmacOS向けのみ
つまり、Neologdがデファクトとなった現代では使いづらさしかないのでやめたほうがいい。機械学習の教科書的な本では必ずmecab-python3が出てくるが、あれは古い話と思ったほうがいい。
MacとLinuxのユーザは迷わずnatto-pyを使いましょう。nattoシリーズはFFIベースでmecabを使うので、余計なバインディングのビルドは必要ありません。また、作者にお話を聞いたところ、Windows環境で動かすことを一つのモチベーションにしているとのことなので、割とWindowsユーザにも良いかと思います。
Windowsユーザは以下の記事を読んで、libmecab.dllを手に入れてnatto-pyを使いましょう。
Windows 64bitでMeCab(とKyTea)を使う方法 2018
余談だが、最近spaCyがfugashiというMeCabのCython wrapperに依存するように変わったが、これは今のところUniDic専用だ。この背景はmecab-python3がほぼIPAdic専用になったからだろう。なお、韓国語はnatto-pyを使っている。
natto-pyは作者に聞いたところ、もうmecabがメンテナンスされていないのでnatto自身もあまり大きな変更はしないだろうとのこと。
natto-pyの簡単な使い方はこれを見るといいと思う
mecab以外の方向性
sudachiPyとGiNZA, spaCy の組み合わせに期待している。これは、マストドンのトレンドワードの記事を読んでもらえれば使い方はわかるだろう。
spaCyとGiNZAでマストドンのトレンドワード抽出をしてみた
ただ、sudachiPyはmecabと比較すると速度的に遅いことと、sym linkを使っている関係でまだWindowsでは動かないというネックがある。Windowsで動かすの自体は対応してもらえそうな雰囲気を感じているので、手伝っていきたい。
SentencePieceはNN向けの前処理にはいいと思うけど、語彙数を決めて分割しにいく性格から、トレンドワードをとりにいく的なのには向かないんだろうなと思っている(教えて詳しい人)。
mecab-python3はオリジナルのクリエーターが、もう使ってないんじゃないかなー。彼の最初に作ったモチベーションは簡便なパッケージを用意すると言うところだと思うのにどうしてこうなった。
[20191217追記]
https://twitter.com/polm23/status/1206809665692000256
[/追記]
[20191225追記]
どうやら、fugashiの作者のpolmさんが新オーナーになる方向で進んでるらしい。新しいrepoは下記になる予定。
https://github.com/polm/mecab-python3
[/追記]