YAHOO!日本語形態素解析Web APIをPHPから使うサンプルコード

ただいま検索エンジンの開発中でして、検索エンジンの開発にはクローラーがダウンロードしたデータ(文章)を形態素解析する必要があります。(その後データベースなどにぶちこむ)
形態素解析といえば、ChaSenMeCabなどのオープンソースが有名ですが、いかんせんインストール作業が面倒。なので今回はYAHOO!日本語形態素解析Web APIを使ってみました。
ちょっと使ってみた感じ、APIとは思えないほどサクサク動きました。しかし、検索エンジンのデータベース作成に使えるかどうか考えると色々と問題点が・・・

  • 一つのアプリケーションIDにつき一日5万リクエストという制限
  • 一リクエストの最大サイズが100KB
  • 特殊な文字が入っているとHTTPエラーが起こる

と、API特有の制限がでてきました。
検索エンジンのデータベース作成のために使うとなるとかなり大量のデータの解析を行わなければならないので、リクエスト回数の制限とサイズの制限はきつい。
さらに、ネット上のいろいろな文章を解析する必要があるので、ちょっと特殊な文字が入っちゃうとエラーがでてくるところもきついです。
なので、今後はおとなしくMeCabを使おうかなと考えています。


以下はPHPからYAHOO!日本語形態素解析Web APIを使ったサンプルコードです。

$query = "ここに解析したい文章を入力";
$apiKey = "Yahoo!デベロッパーネットワークで取得したAPIキー";

$url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=" . $apiKey . "&sentence=" . $query;

$rss = file_get_contents($url);
$xml = simplexml_load_string($rss);

foreach($xml->ma_result->word_list->word as $item) {
	echo $item->surface . " " . $item->pos;
	echo "<br />";
	// $item->surfaceに解析後の単語、$item->posにその単語の品詞が入っているので、後は好きな用に処理すればよし。今回は単語と品詞を表示するだけ。
}

アプリケーションID取得方法や詳しいGETパラメータなどは以下のYahoo!デベロッパーネットワークのページを見てね。
http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html