- 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:
Comments:0
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
