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.
彼女はほげ男を愛しています。
彼女	名詞,代名詞,一般,*,*,*,彼女,カノジョ,カノジョ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
ほげ男	ホゲオ,カスタム名詞
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
愛し	動詞,自立,*,*,五段・サ行,連用形,愛す,アイシ,アイシ
て	助詞,接続助詞,*,*,*,*,て,テ,テ
い	動詞,非自立,*,*,一段,連用形,いる,イ,イ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。	記号,句点,*,*,*,*,。,。,。

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

テキストマイニングを使う技術/作る技術―基礎技術と適用事例から導く本質と活用法
那須川 哲哉
東京電機大学出版局
売り上げランキング: 159800

コメント

  1. […] […]

  2. […] 、と。 JapaneseKatakanaStemFilterFactoryでカタカナのステミングとか気が効いてるというか(サーバー⇒サーバ的な) (3年前くらいにお話伺った時はまだそんなじゃなかった⇒ http://shinodogg.com/?p=3346) […]

タイトルとURLをコピーしました