GAE/Javaで、形態素解析のオープンソースを触ってみた。
というわけで、本エントリーは、google app engine javaで形態素解析が出来るオープンソースを使ってみたという内容。
Igoとは
Javaで実装された形態素解析器。→ Common Lisp版
辞書フォーマット及び解析結果は、ほぼMeCab互換。
単機能。
Javaの形態素解析器としては比較的高速。
スレッドセーフ。
Igo GAE は、GAE対応版。sileさんが対応させた様である。
感想
とても簡単に形態素解析が実現できた!便利だと思った!
導入も手順さえ分かっていれば、すぐに利用することも出来る!(あまり理解できておらず、つまづきました^^;)
yahooAPIで、形態素解析が提供されているが、制限がかかっているので、
Igoは気兼ねなく使える。
(yahooの制限⇒24時間以内で1つのアプリケーションIDにつき50000件のリクエスト,1リクエストの最大サイズを100KBに制限etc)
形態素解析とは
コンピュータ等の計算機を用いた自然言語処理の基礎技術のひとつ
対象言語の文法の知識(文法のルールの集まり)や辞書(品詞等の情報付きの単語リスト)を情報源として用い、
自然言語で書かれた文を形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、
それぞれの品詞を判別する作業を指す。
・辞書を用いて、自然言語を品詞に分けてくれたりしてくれる。
・人口無能を作成するときに、利用したりする人が多い。・・・はず。
形態素解析を利用すれば、
はてなブログの「最近言及したキーワード」的なものが作れると思ってる。
(投稿したブログ内容を形態素解析して、名詞だけを抽出すれば作れると思っている)
ということで、あまり詳しいことはわかってないんだお( ^ω^)
わかち書き(わかちがき)とは、
文章において語の区切りに空白を挟んで記述することである。
分かち書き・分ち書き・別ち書きとも表記する。
公式のindexページ
ダウンロード
1.サンプル&igoのgae版のjarをダウンのロード
https://github.com/sile/igo-gae
Downloadsをクリック
2.辞書のダウンロード
http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/
mecab-ipadic-2.7.0-20070801.tar.gzをクリック
インストール
1.igo-0.4.2-gae.jarをクラスパスに通す。
ダウンロードしたファイルを解凍する。
war\WEB-INF\libにあるigo-0.4.2-gae.jarをクラスパスに通す。
2.warフォルダ直下にipadic(こいつが辞書や!)を配置する。
ipadicの作成方法は下記参照
ipadic(辞書)の作成方法
以下のコマンドを打ちます。
java -cp igo-0.4.2-gae.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
javadoc
恐らく下記ページの箇所
http://igo.sourceforge.jp/#api
サンプル1
http://it-tech-dm.appspot.com/igo/igo1
surface:形態素の表記を返します。
feature:形態素の全情報を文字列で返します。
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain; charset=UTF-8"); PrintWriter out = res.getWriter(); out.println("★ハローワールドを形態素解析★"); out.println(); Tagger tagger = new Tagger("ipadic/"); List<Morpheme> parse = tagger.parse("ハローワールド"); for (Morpheme morpheme:parse) { out.println(morpheme.surface + "⇒" + morpheme.feature); } }
もういっちょサンプル。
http://it-tech-dm.appspot.com/igo/igo2
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain; charset=UTF-8"); String morphemeStr = "プロゴルファー石川遼選手も「聞き流すだけ」で英語が話せた!!"; PrintWriter out = res.getWriter(); out.println("★"+ morphemeStr + "を形態素解析★"); out.println("文言URL:http://www.espritline.co.jp/ad_af_net205/sle42-2-h6/?PHPSESSID=4f59a3b2697dddf16d7faddc7906edad"); out.println(); Tagger tagger = new Tagger("ipadic/"); List<Morpheme> parse = tagger.parse(morphemeStr); for (Morpheme morpheme:parse) { out.println(morpheme.surface + "\t" + morpheme.feature); } } //ダウンロードした中にもサンプルがあるので実行するべし。実行するべし。