Home > Java > 形態素解析ライブラリ:lucene-gosenを使ってみました。

形態素解析ライブラリ:lucene-gosenを使ってみました。

  • 2012-01-25 (水) 2:27
  • Java

これまで、自然言語処理したいときは、yahooの日本語形態素解析WebAPIを使っていたのですが、最近、lucene-gosenというJavaの形態素解析ライブラリがあるのを知りましたので、少し試してみました。

lucene-gosenサンプルコード

 習作として作成したサンプルコードを以下に示します。
 たったこれだけで形態素解析できてしまいます。スゴイ。
 PlayFramework+Herokuと組み合わせると、形態素解析WebAPIとか簡単に作れそうです。おもしろい。

package test;

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 GosenTest {
	public static void main(String[] args){
		String text="今日はとても良い天気です。";
		try{
			StringTagger tagger=SenFactory.getStringTagger(null);
			List<Token> tokens = new ArrayList<Token>();
			tokens = tagger.analyze(text,tokens );
			for(Token t : tokens){
				System.out.println("---------------");
				System.out.println(t.getSurface());
				System.out.println(t.getMorpheme().getPartOfSpeech());
			}
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

ちなみに、Javaからyahooの日本語形態素解析WebAPIを使う時は、だいたい、以下のようなコードで使っていました。

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;

public class YahooWordAnalyzer {

	private static String appid="***";

	public static void  excute(String text) throws MalformedURLException,
		JDOMException, IOException{
		String url="http://jlp.yahooapis.jp/MAService/V1/parse?" +
				"appid=" + appid +"&sentence="+
				URLEncoder.encode(text, "UTF-8")+
				"&response=reading&filter=&results=ma";
		Document doc=new SAXBuilder().build(new URL(url));
		Namespace ns=Namespace.getNamespace("urn:yahoo:jp:jlp");
		Element eRoot=doc.getRootElement();
		List<?> list=eRoot.getChild("ma_result",ns).getChild(
			"word_list",ns).getChildren("word",ns);
		for(int i=0; i<list.size(); i++){
			Element word=(Element)list.get(i);
			Element surface=word.getChild("surface",ns);
			if(surface!=null)System.out.println(surface.getText());
			Element reading=word.getChild("reading",ns);
			if(reading!=null)System.out.println(reading.getText());
			Element pos=word.getChild("pos",ns);
			if(pos!=null)System.out.println(pos.getText());
		}
	}

	public static void main(String[] args){
		try{
			YahooWordAnalyzer.excute("今日はとても良い天気です。");
		}catch(Exception e){}
	}
}

 まだ、試していませんが、全文検索エンジンライブラリLuceneも扱いやすそうなので、近いうちに試してみたくなりました。

Related posts:

  1. Project Euler Problem42
  2. Project Euler Problem98 #ProjectEuler
  3. CSVFileReader
  4. JavaからSqliteを使ってみる
  5. Project Euler Problem95 #ProjectEuler

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://termat.sakura.ne.jp/java/%e5%bd%a2%e6%85%8b%e7%b4%a0%e8%a7%a3%e6%9e%90%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%ef%bc%9alucene-gosen%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%be%e3%81%97%e3%81%9f%e3%80%82/trackback/?_wpnonce=772db6aef3
Listed below are links to weblogs that reference
形態素解析ライブラリ:lucene-gosenを使ってみました。 from TM's Workspace

Home > Java > 形態素解析ライブラリ:lucene-gosenを使ってみました。

Google Analyticator

173
Unique
Visitors
Powered By Google Analytics

Return to page top