Androidで使える形態素解析器には、SenやGoSen、kuromojiなどがありますが、今回はメモリ使用量の小さなsanmokuを使ってみます。
実装の仕方
sanmokuのprojectページはgithubにあります。
github
githubのZIPから、使用するファイルをダウンロードしておきます。
サンプルコードは、android-sampleにあります。
READMEのところで、解析器(analyzer)をantでビルドする仕方が書かれていますが、これをやるとsanmoku-0.0.6.jarが生成されます。
sanmokuの現バージョンは2013/02/15現在0.0.6なのですが、android-sampleのコードは何故か0.0.5でしか動きません。
sanmoku-0.0.6.jarを使うと、sanmoku.Tagger.parseのところで落ちます。
ということで、一個前のバージョンのクラスライブラリ(
sanmoku-0.0.5.jar)を使います。
android-sampleの対応バージョンが0.0.6になる時に備えてantのやり方も追記しておきます。
では早速、Eclipseでプロジェクトを作るところからやってみます。
Eclipseを起動して、File -> New -> Projectで新しいプロジェクトを作成。
プロジェクト名はなんでもいいです。
Package Nameは、「net.reduls.sanmoku」にします。
ActivityはBlank Activityにして、Activity Nameは「Sanmoku」、Layout Nameは「main」にしておきます(意味はあまりないんですが)。
プロジェクトができたら、Package Explorereでres/menuフォルダーを削除します(main.xmlはsampleのLayoutのものを使用するためです)。
ダウンロードしたものを解凍して、sanmoku-master/android-sample/app内のファイルを使います。
Windowsに戻って、app内のresフォルダー、srcフォルダー、AndroidManifest.xmlをプロジェクトに上書きコピー。
libsフォルダーにsanmoku-0.0.5.jarをコピー。
Eclipseに戻って、文字コードをUTF-8にしておきます。
Package Explorereでプロジェクト -> Properties -> Resource -> Text file encoding -> Other -> UTF-8。
やらなくても動くのですが、念のためlibsのsanmoku-0.0.5.jarにBuild Pathを通しておきます。
最後にプロジェクトをRefreshして終了。
こんな感じ。
antでanalyzerをビルド
ant(ビルドツールソフト)を準備します。
Apache Antのバイナリをダウンロードするページはこちら。
ダウンロードしたら解凍して適当な場所に移しておきます。
Windowsの環境変数にantのbinフォルダーへのパスを記述。
これで準備完了。
DOS窓を開いて、sanmokuのanalyzerフォルダーへ移動。
antというコマンドを発行。
以上で、analyzerフォルダーの中にsanmoku-0.0.x.jarが生成されます。
sanmokuを他のアプリ内で実装する場合
libsフォルダーにsanmoku-0.0.5.jarをコピー。ビルドパスを通しておきます。
使用するパッケージにDataFormatterクラスを作成。
DataFormatter.javaの内容はサンプルと同じ。
文章の解析用関数はこんな感じ。
private String sanmoku_analyzer(String key){
String result = "";
if(key.length() > 0) {
for(net.reduls.sanmoku.Morpheme e : net.reduls.sanmoku.Tagger.parse(key)) {
SpannableString spannable = DataFormatter.format("<"+e.surface+">\n"+e.feature);
result = result + spannable + "\n";
}
}
return result;
}