2019-11-28·
Aki Ariga
Aki Ariga
· 4 min read

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の簡単な使い方はこれを見るといいと思う

backspace_stats_2.ipynb

mecab以外の方向性

sudachiPyとGiNZA, spaCy の組み合わせに期待している。これは、マストドンのトレンドワードの記事を読んでもらえれば使い方はわかるだろう。

spaCyとGiNZAでマストドンのトレンドワード抽出をしてみた

ただ、sudachiPyはmecabと比較すると速度的に遅いことと、sym linkを使っている関係でまだWindowsでは動かないというネックがある。Windowsで動かすの自体は対応してもらえそうな雰囲気を感じているので、手伝っていきたい。

SudachiPy doesn’t work with Windows with “OSError: symbolic link privilege not held” · Issue #107 · WorksApplications/SudachiPy

SentencePieceはNN向けの前処理にはいいと思うけど、語彙数を決めて分割しにいく性格から、トレンドワードをとりにいく的なのには向かないんだろうなと思っている(教えて詳しい人)。


mecab-python3はオリジナルのクリエーターが、もう使ってないんじゃないかなー。彼の最初に作ったモチベーションは簡便なパッケージを用意すると言うところだと思うのにどうしてこうなった。

[20191217追記]

https://twitter.com/polm23/status/1206809665692000256

[/追記]

[20191225追記]

どうやら、fugashiの作者のpolmさんが新オーナーになる方向で進んでるらしい。新しいrepoは下記になる予定。

https://github.com/polm/mecab-python3

Memory leak: delete PyObjects when those are not needed anymore by akorobko · Pull Request #37 · SamuraiT/mecab-python3

[/追記]


Back to home

Aki Ariga
Authors
Principal Software Engineer
Interested in Machine Learning, ML Ops, and Data driven business. If you like my blog post, I’m glad if you can buy me a tea 😉

Related