once upon a time,

Iris Tradをビール片手に聞くのが好きなエンジニアが、機械学習やRubyにまつわる話を書きます

RNNLMベースの形態素解析器 JUMAN++ をhomebrewでインストールできるようにした

京大の黒橋・河原研から最近出たJUMAN++macOSのhomebrewでinstallできるようにしました。

JUMAN++はRNNLMというディープラーニングベースの言語モデルを使っています。 こちらの記事を読んで知ったという方も多いのではないでしょうか。

qiita.com

インストール方法は、現段階では後述する理由のためhomebrew-coreにはまだ入っていないので、tapを使ってください。

[2016/10/23追記] やっと本家homebrewに入ったので、tapは要らなくなりました。 [/追記]

$ brew install jumanpp

github

github.com

JUMAN++のサイト凄い

JUMAN++のサイトには解析を試せるWebアプリケーションがあるのですが、それがなかなか面白いです。

このリンクに対して、

http://tulip.kuee.kyoto-u.ac.jp/demo/jumanpp_lattice?text=%E3%81%A9%E3%81%86%E3%82%82%E3%80%81julialang%E7%95%8C%E3%81%AE%E9%A0%91%E5%9B%BA%E3%81%8A%E3%81%98%E3%81%95%E3%82%93%E3%81%A7%E3%81%99

こういうラティスを出力してくれます。

f:id:chezou:20161015161841p:plain

楽しい

JUMAN++とMeCabどっちがいいの?

冒頭のQiitaの記事に対してはRNNLMベースだからというよりは、辞書の改善によるものなのでは?という話はMeCab作者の工藤さんからも指摘があります。

@overlast さんが精力的に更新をしているneologdとの比較をしているため、MeCab側としては現在普通に入手可能なMeCabの辞書としては最も良いものを使っていると思います。 なので、neologd以前に良く問題とされていた「最近の用語が入っていない」という部分に関しては議論の対象にはなっていませんね。

表記ゆれや長音記号のハンドリングに関してはJUMANの頃からやっていたことです。 JUMANの頃からWikipediaを使った語彙獲得やオノマトペの処理など、未知語獲得を黒橋研として頑張っている印象がありました。

また、部分アノテーションか辞書かという話に関しては、以前から議論が分かれている所です。

plus.google.com

JUMAN++(の前のJUMAN)とMeCabの比較は以下が詳しいのですが、使っている文法が違ったりなど癖が違うので注意が必要です。

rekken.g.hatena.ne.jp

個人的にはneologdが頻繁に辞書を更新してリリースし続けている状況に対して、JUMAN++の側がどれだけの頻度で更新されたモデルが出せるというところが実用的な差になるのではないでしょうか。普通のエンジニアが部分アノテーションのためのコーパスを作り続けるのは、正直かなり厳しいと思います。*1 JUMAN++の論文でも、4万5千文を再学習することで性能がMeCabを越えたと言っています。

現段階では、実際に比較をしてみてどちらが用途に合うのかを判断するのが良いと思います。

なお、読み推定がしたい場合はKyteaを使うといいと思います :)

homebrew-coreに入っていない理由

この記事を書いている段階では、upstream(v1.01)のMakefileにあるバグのため、make-jオプションを付与して並列でビルドすると失敗する問題があります。

このパッチを当てれば大丈夫です。 gist.github.com

で、何故これがcoreに入っていないかというと、

  • 特定のワークアラウンドが必要(並列ビルドを抑える ENV.depararelize を使う)な場合は、upstreamのissueを立ててそこへのリンクを貼る必要がある
  • juman++は2016/10/15現在レポジトリが公開されておらず*2、publicなissueがない
  • homebrew-coreにはupstreamにマージされないパッチを当てるFormulaは受け入れられない

つまり、homebrewでビルド時のバグが有り、かつpublicなレポジトリ(正確にはpublicなticketやissueなど)がないという条件下ではcoreに登録することはできないようです。 気持ちはわからなくもないけど、すべてGithubにissueがある(あるいは公開MLがある)という前提はちょっと不寛容じゃないかと思います。 Githubで公開されていることしか考えていないんでしょうかね...。

github.com

はじめての、新規Formula作成でしたがちょっと疲れました。。。

*1:sugyanさんのアイドルコーパスも好きだから続けられると思っているし、それくらいコーパス作るの大変

*2:じきにgithubかbitbucketに公開される予定とのこと