kakakakakku blog

Weekly Tech Blog: Keep on Learning!

PHPで「日本語係り受け解析Webサービス」を使ってみた

この前リリースされた,Yahoo!デベロッパーネットワークの「日本語係り受け解析Webサービス」を使って簡単な構文解析をしてみた.言語はPHP

とりあえず,簡単な係り受けを表示してみる.
実行例はこんな感じ.

入力文「我が家には10匹の犬がいます。」

  • -

我が家には → います。
可愛い → 犬が
犬が → います。
います。

ソースはこんな感じ.

<?php
	$apiid = "アプリケーションID";
	$text = "入力テキスト";
	$url = "http://jlp.yahooapis.jp/DAService/V1/parse?appid=".$apiid."&sentence=".urlencode($text);
	
	echo "入力文「".$text."」<br />--<br />";
	
	$xml = simplexml_load_file($url);
	//print_r($xml);
	//アウトプットを確認したいときにコメントアウト
	
	$chunks = $xml->Result->ChunkList->Chunk;
	foreach ($chunks as $chunk) {
		$id = (int)$chunk->Id;
		$dependency = (int)$chunk->Dependency;
		$morphems = $chunk->MorphemList->Morphem;
		foreach ($morphems as $morphem) {
			$seg = $seg.$morphem->Surface;
		}
		$str[$id][$dependency] = $seg;
		$seg = "";
	}
	
	for($i=0;$i<count($str);$i++){
		$key1=@array_keys($str[$i]);
		if($key1[0] == -1){
			echo $str[$i][$key1[0]];
		}else{
			$key2=@array_keys($str[$key1[0]]);
			echo $str[$i][$key1[0]]." → ".$str[$key1[0]][$key2[0]]."<br />";
		}
	}
?>

PEARなどは使わず,SimpleXMLを使ってみました.
初心者ぺちぱーなので,書き方が冗長だったり,そもそも間違ってるかもしれません.

  • -

参考エントリー:
[を] ヤフーの日本語係り受け解析APIとサンプルプログラム「なんちゃって文章要約」