2013年8月12日月曜日

[java]形態素解析ライブラリ lucene-gosen 使ってみた

どうも僕です.

形態素解析なんて使うのかよって言うのは置いといてもらって,lucene-gosen使ってみたので紹介です.

まず,形態素解析ってなんぞやってとこはwikiによると

対象言語の文法の知識(文法のルールの集まり)や辞書(品詞等の情報付きの単語リスト)を情報源として用い、自然言語で書かれた文を形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、それぞれの品詞を判別する作業を指す

だそうです.要するに文章とかを決められたルールによって単語にバラしますよって話です(間違ってたらごめんなさい).

なんぞやってとこはこれぐらいにして,
導入法.

ここから以下の2つを落としてきてクラスパス通すだけでいいみたいです.辞書も用意してくれてるとか僕を甘やかしていいのかってぐらい簡単に使えます.
現在(2013/8/12)の最新版です.
lucene-gosen-4.4.0.jar(本体)
lucene-gosen-4.4.0-ipadic.jar(辞書)


 実際に使ってみた.コードはほぼここからのコピーです.

package jp.mwsoft.sample.lucene.gosen;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

public class StringTaggerSample {

public static void main(String[] args) throws IOException {

// この3行で解析できる
StringTagger tagger = SenFactory.getStringTagger(null);
List tokens = new ArrayList();
tagger.analyze("解析したい文字列", tokens);

// 解析結果
for (Token token : tokens) {
System.out.println("==============================");
System.out.println("surface : " + token.getSurface());
System.out.println("cost : " + token.getCost());
System.out.println("length : " + token.getLength());
System.out.println("start : " + token.getStart());
System.out.println("additionalInformation : " + token.getMorpheme().getAdditionalInformation());
System.out.println("basicForm : " + token.getMorpheme().getBasicForm());
System.out.println("conjugationalForm : " + token.getMorpheme().getConjugationalForm());
System.out.println("conjugationalType : " + token.getMorpheme().getConjugationalType());
System.out.println("partOfSpeech : " + token.getMorpheme().getPartOfSpeech());
System.out.println("pronunciations : " + token.getMorpheme().getPronunciations());
System.out.println("readings : " + token.getMorpheme().getReadings());
}

}
}

他にもいろいろ機能があるのでJavaDocを覗くといいかもしれないです. 辞書追加とかもあるらしいので時間がある時に触ってみます. 僕から以上.

0 件のコメント:

コメントを投稿