musirak.com

音楽制作に関することをメインに、他には趣味の話もぼちぼち書いているブログです。

Pythonで利用できる日本語形態素解析エンジンについてのメモ

Wakame

先日の記事で作詞してくれる人工知能の制作に取り組もうとしたことを書きましたが、そのキモとなる要素の一つに日本語の形態素解析があります。
と言っても私が日本語の形態素解析をしているわけでなく、日本語の形態素解析をコマンド一つでちょちょいとやってくれるエンジンがあるので、私はそれを使っているだけです。

そんな日本語形態素解析エンジンにしてもいろんな名前のいろんな手法のエンジンがあるので、私的に関係のありそうなものを調べてメモってみました。

www.musirak.com

日本語形態素解析エンジンとは

形態素解析とは自然言語(我々が普段から使うような言葉)を形態素、つまり言葉の最小単位に分割することです。
詳細についてはWikipedia先生を参照。

形態素解析 - Wikipedia

この形態素解析、日本語においてはとても面倒な作業です。
ご存知の通り、日本語の自然文には漢字、ひらがな、カタカナが入り混じっており、同じ読みだとしても違う意味を持ったり、あるいは同じ言葉でも場合によって意味が違ってきたりすることがしばしばあります。
また、英語のように単語と単語が明確に区切られていることもないということも重なって、形態素を判別するのが困難です。
そんなこともあって、日本語の形態素解析は自然言語処理におけるテーマともなっています。

そんな日本語形態素解析研究の成果を一般人が利用できるように仕立てたものが日本語形態素解析エンジンです。
日本語形態素解析エンジンを用いれば、誰でも手軽に難しいこと考えずとも日本語の形態素解析を利用したプログラミングができるようになります。

MeCab

日本語形態素解析エンジンといっても世には結構な種類があるようですが、その中でもMeCabは最もメジャーなエンジンではないでしょうか。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer

日本語の文章生成プログラムのことについて調べれば、大抵がMeCabを使った例を挙げています。
そういったサンプルの多さもあって私もMeCabを利用してプログラミングしていました。

MeCabについてはクックパッドのブログに詳しく載っています。
ってか、クックパッドなのになんでめかぶじゃなくてMeCabのレシピを載せてるんですかね・・・

日本語形態素解析の裏側を覗く!MeCab はどのように形態素解析しているか - クックパッド開発者ブログ

Janome

JanomeはPure Pythonで実装された日本語形態素解析エンジンです。
Pythonが導入されている環境であれば、Janomeは導入が容易というメリットがあります。
なにせ、Macなら「pip3 install janome」とターミナルに打ち込んで実行すれば、それだけでインストールができますので。

GitHub - mocobeta/janome: Japanese morphological analysis engine written in pure Python

Juman++

Juman++は最近登場した日本語形態素解析エンジンで、Jumanの後継に当たります。
ただ、Jumanとは全く別の仕組みで実装されているようです。

Juman++ではニューラルネットワークの一種であるRNNLM(Recurrent Neural Network Language Model)を用いており、より高精度な形態素解析ができるようになっています。
ただし動作はかなり重いようで、リアルタイムな解析には向かないと思われます。

JUMAN++ - KUROHASHI-KAWAHARA LAB

とりあえずMeCabが安パイか

私は今、MeCabを使って自動作詞プログラムを作っています。
MeCab以外にも形態素解析エンジンがあると知って他のエンジンでトライはして見たものの、劇的に何かが変わるとかそう言うわけではなかったので、今後もMeCabを使っていくでしょう。

自動生成プログラムは解析エンジンが劇的な改善をなしてくれるわけでなく、とにかく質の高い学習データを大量に用意する必要があると言うことですね。
誰かの発明に期待するより、そっちの方に励んでみます。