pochi-goya

ちゃんとしたプログラマになりたい

javaでMecab

Java系言語,あわよくばWebフレームワーク系の勉強のために,何か作ろう思ってネタはないかと思っていたところ,ふと学生時代にやってた自然言語処理をやってみようと思いつく.

学生時代はperlMecabを使っていましたが,

MecabJavaから呼べるのかしらと調べてみると,

ちゃんとJavaバインディングがありました

ちょっとMakefileをいじりつつ(64bit向けビルドしたり,JDKのパスをあわせたり)導入し, 無事以下のコードが動作しました.

import org.chasen.mecab.Tagger;
import org.chasen.mecab.Node;

public class main {
    public static void main(String args[]) {
        Tagger tagger = new Tagger("-Ochasen");
        Node node = tagger.parseToNode("すもももももももものうち");
        for(; node != null; node = node.getNext() ) {
            System.out.println( node.getSurface() + ":" + node.getFeature() + "\n");
        }
    }

    static {
        System.loadLibrary("MeCab");
    }

}

結果は以下.

:BOS/EOS,*,*,*,*,*,*,*,*

すもも:名詞,一般,*,*,*,*,すもも,スモモ,スモモ

も:助詞,係助詞,*,*,*,*,も,モ,モ

もも:名詞,一般,*,*,*,*,もも,モモ,モモ

も:助詞,係助詞,*,*,*,*,も,モ,モ

もも:名詞,一般,*,*,*,*,もも,モモ,モモ

の:助詞,連体化,*,*,*,*,の,ノ,ノ

うち:名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

:BOS/EOS,*,*,*,*,*,*,*,*

次はどうしようかな.どこかから素材になる文章をひっぱってこようか. それともScalaから使ってみようか.