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;
}