この類のプログラムをCで実装するのは煩雑になってしまうので、Clojureで作ったらどんなふうになるのかなと思い、文字列の解析時に使用する形態素ライブラリを調べてみた。
Lucene や Solr に対応したlucene-gosen が、結構使われているようだけど、mavenリポジトリにあるバージョンは少し古く、また、多くのライブラリに依存していており、それらのラブラリのバージョンも少し古かった。
その点、Kuromojiは、依存ライブラリがなく、lucene-gosenと同様に辞書も同梱されているので、こちらのライブラリを試してみた。
project.cljにKuromojiの設定を追加
Kuromojiをmavenで使うためには、リポジトリの追加が必要である。project.cljに次の設定を書く。
:repositories [["Atilika Open Source repository"
"http://www.atilika.org/nexus/content/repositories/atilika"]]
:dependencies [[[org.atilika.kuromoji/kuromoji "0.7.7"]]
リポジトリのURLの追加方法が最初分からず、いろいろ調べたが、
sample.project.cljのサンプルが参考になった。
サンプルコード
(ns gosen.core(:import (org.atilika.kuromoji Token Tokenizer)))
(defn -main []
(let [tokenizer (. (Tokenizer/builder) build)]
(doseq [token (. tokenizer tokenize "Javaより楽しいClojure。")]
(println (str (. token getSurfaceForm) "\t"
(. token getAllFeatures))))))
何のことはない。Kuromojiのクラスを使う単純なコードだ。
実行結果
replより実行した。gosen.core> (-main)
Java 名詞,固有名詞,組織,*,*,*,*
より 助詞,格助詞,一般,*,*,*,より,ヨリ,ヨリ
楽しい 形容詞,自立,*,*,形容詞・イ段,基本形,楽しい,タノシイ,タノシイ
Clojure 名詞,一般,*,*,*,*,*
。 記号,句点,*,*,*,*,。,。,。
nil
ユーザ辞書を追加することも簡単なようなので、試してみる予定。
0 件のコメント:
コメントを投稿