動かざることバグの如し

近づきたいよ 君の理想に

Yahooの日本語形態素解析APIをPHPで使ってみる

Yahoo!デベロッパーネットワークにて公開されている日本語形態素解析APIを使って簡単にテキスト解析をしてみる。
あらかじめアプリケーションIDを取得しておく。

<?php
$appId = "アプリケーションID";
$sentence = "エビフライはおいしい";

$url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=" . $appId . "&results=ma&sentence=" . urlencode($sentence);
$xml = simplexml_load_file($url);
foreach($xml->ma_result->word_list->word as $cur){
	echo $cur->surface . "|";
}
?>

結果

エビ|フライ|は|おいしい|

2013年10月4日追記
simplexml_load_fileで解析結果を読み込むわけだが、このxmlがクセモノでオブジェクトの中に文字列が格納された状態で返却される。普通に出力するだけなら特に問題ないけどその文字列を別の関数とかで処理しようとするとエラーになるのでStringへキャストする必要がある。

foreach($xml->ma_result->word_list->word as $cur){
	$pos = (string)$cur->pos;
	$reading = (string)$cur->reading;
	$surface = (string)$cur->surface;
	echo $surface . "<br>";
}

あと、URLのパラメータで品詞を指定できた。filterで指定する

filterに指定可能な品詞番号:
1 : 形容詞
2 : 形容動詞
3 : 感動詞
4 : 副詞
5 : 連体詞
6 : 接続詞
7 : 接頭辞
8 : 接尾辞
9 : 名詞
10 : 動詞
11 : 助詞
12 : 助動詞
13 : 特殊(句読点、カッコ、記号など)

テキスト解析:日本語形態素解析API - Yahoo!デベロッパーネットワークから引用
例えばURLに「&filter=9」を付けると名詞のみ抽出された結果が帰ってくる。これはこれで便利。

参考URL:
テキスト解析:日本語形態素解析API - Yahoo!デベロッパーネットワーク

simplexmlでパースした場合は文字列にキャストした方がいい - Kill one bird with two stones.