Kuromoji(ピュアJavaでナイスなライセンスの形態素解析エンジン)を試してみる

職場の人の繋がりでお声がけいただいて、Kuromojiという形態素解析エンジンを紹介していただきました。   ■ Kuromoji  ATILIKAという某検索エンジン会社に勤めていた人の会社で作っている  ApacheライセンスなピュアJava形態素解析エンジンです。  Javaって言う事でMavenでホゲホゲできるそうです。  http://atilika.org/こちらで紹介されています。  #黒文字ってのは植物の名前で、そっからできたつまようじの事を言うんだそうで、  #これがモチーフになんだよーと見せていただきましたw   形態素解析 / N-Gram  形態素解析N-Gram〜とかコレ系だとよくある感じですが、その辺のサポートもされてます。  #詳しい話を聞かせてもらったのですが、そもそもの知識不足と英語力不足でイマイチ…orz   ■ 辞書  IPAのヤツがベースになっていて、拡張する事も出来ます。   ■ その他  Solr用のプラグインがある~とか、Senより2~3倍早い~とか、  自分みたいなシャバ造には Lattice and Viterbi とか言われても良く分かりましぇんが・・・。

  

■ 以下、動かしてみます

  1. ダウンロードページからtarを落としてみます  ↓がダウンロードページになります。  http://atilika.org/confluence/pages/viewpage.action?pageId=131141  ※ そういえば約11MBって事でその辺のシンプルさも売りだっておっしゃってました。

$ wget http://atilika.org/nexus/content/repositories/atilika/org/atilika/kuromoji/kuromoji/0.7.4/kuromoji-0.7.4.tar.gz
長さ: 11630839 (11M) [application/x-gzip]
`kuromoji-0.7.4.tar.gz' に保存中

100%[==================================================================================================================>] 11,630,839  6.58M/s   時間 1.7s

2011-02-16 21:51:24 (6.58 MB/s) - `kuromoji-0.7.4.tar.gz' へ保存完了 [11630839/11630839]

  2. 解凍して出てくるファイルたちも少なめです。

$ tar xvf kuromoji-0.7.4.tar.gz
kuromoji-0.7.4/CHANGES.txt
kuromoji-0.7.4/LICENSE.txt
kuromoji-0.7.4/NOTICE.txt
kuromoji-0.7.4/README.txt
kuromoji-0.7.4/src/main/java/org/atilika/kuromoji/example/TokenizerExample.java
kuromoji-0.7.4/src/main/resources/userdict.txt
kuromoji-0.7.4/lib/kuromoji-0.7.4.jar

  3. README読みながら叩いてみます。

$ cd kuromoji-0.7.4/
$ javac -cp lib/kuromoji-0.7.4.jar src/main/java/org/atilika/kuromoji/example/TokenizerExample.java

 コンパイルしたJavaは↓のようにバラしてそれぞれを標準出力に出してくれる感じになってます。

while ((line = reader.readLine()) != null) {
 List result = tokenizer.tokenize(line);
 for (Token token : result) {
  System.out.println(token.getSurfaceForm() + "t"
    + token.getAllFeatures());
 }
}

 コンパイルしたJavaを叩いてみます。↓のようになったら受付完了的な。

java -Dfile.encoding=UTF-8 -cp lib/kuromoji-0.7.4.jar:src/main/java org.atilika.kuromoji.example.TokenizerExample
Tokenizer ready.  Provide input text and press RET.

  4. 文章を入力してエンターキー叩いてみます。

私はお腹が減りました。
私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
お腹  名詞,一般,*,*,*,*,お腹,オナカ,オナカ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
減り  動詞,自立,*,*,五段・ラ行,連用形,減る,ヘリ,ヘリ
まし  助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。

 おぉ。いいじゃないですか。   5. サーチオプション(N-gram)  例えば、『関西国際空港』ってIPAの辞書に登録されてしまっているので、  『国際』とかで引っかかってきません。(Mecabだとオプションでバラしてもくれるみたいですが。)

関西国際空港
関西国際空港  名詞,固有名詞,組織,*,*,*,関西国際空港,カンサイコクサイクウコウ,カンサイコクサイクーコー

 ということで、サーチオプション指定してみます。(ケツにsearchって付けるだけ)

$ java -Dfile.encoding=UTF-8 -cp lib/kuromoji-0.7.4.jar:src/main/java org.atilika.kuromoji.example.TokenizerExample search
Tokenizer ready.  Provide input text and press RET.
関西国際空港
関西  名詞,固有名詞,地域,一般,*,*,関西,カンサイ,カンサイ
国際  名詞,一般,*,*,*,*,国際,コクサイ,コクサイ
空港  名詞,一般,*,*,*,*,空港,クウコウ,クーコー

 お。ちゃんとバラけてますね。   6. ユーザー拡張辞書  拡張辞書も使ってみます。  ↓に  src/main/resources/userdict.txt  ↓のような記載を追加しました。

ほげ男,ほげ男,ホゲオ,カスタム名詞

 で、

$ java -Dfile.encoding=UTF-8 -cp lib/kuromoji-0.7.4.jar:src/main/java org.atilika.kuromoji.example.TokenizerExample normal src/main/resources/userdict.txt
Tokenizer ready.  Provide input text and press RET.
彼女はほげ男を愛しています。
彼女  名詞,代名詞,一般,*,*,*,彼女,カノジョ,カノジョ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
ほげ男   ホゲオ,カスタム名詞
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
愛し  動詞,自立,*,*,五段・サ行,連用形,愛す,アイシ,アイシ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
ます  助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。

 これまたイイ感じでございます。     多分、まだイロイロ大っぴろげにしてないっぽいんですが、 シンプルで使いやすいしこれから人気出るかもしれませんね。