形態素解析システム Sen の使用



前回のJames話の続きなのですが、最終的に作りたいアプリケーションは

・携帯からメールを送信
・サーバ側でメールの内容を解析
・応答を返信

ということをやりたいわけで。

Webアプリで作ればよいのでしょうが、私は6年前に購入した携帯電話を
いまだに愛用しており、携帯でWebを見たことないんですよね・・・

本文に記載されている内容を解析するのはどうしたもんかね。と
悩んでいると「Sen」を使えばよいのでは?という回答にいたりました。

http://www.mlab.im.dendai.ac.jp/~yamada/ir/MorphologicalAnalyzer/Sen.html

※インストールはURLの手順どおりに行ってみました。


さて、Senのインストールは完了したのですが、実行時
-Dsen.home
オプションを指定して、Senのインストールフォルダを指定しなくてはなりません。

でも、James-mailetで処理を行いたいのでどうしたものかと悩んだ結果、
こんなコードで逃げることができました。


import net.java.sen.StringTagger;
import net.java.sen.Token;

public class Test {
    static{
        System.setProperty("sen.home", "[Senのインストールフォルダ]");
    }
    
    public static void main(String[] args) {
        
        String input = "すもももももももものうち";
        
        try {

            StringTagger tagger = StringTagger.getInstance();
            
            Token[] token = tagger.analyze(input);
            if (token != null) {
                for (int i = 0; i < token.length; i++) {
                    
                    //対象文字列
                    System.out.println(token[i].toString());
                    //基本形
                    System.out.println(token[i].getBasicString());
                    //品詞情報
                    System.out.println(token[i].getPos());
                    //読み方
                    System.out.println(token[i].getReading());
                    System.out.println(token[i].getPronunciation());
                    
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Error1");
        }
        
    }
}


staticで設定してしまうところがミソかも。

このやり方でmailetに仕込んでも動作してくれました。




もどる