この前リリースされた,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を使ってみました.
初心者ぺちぱーなので,書き方が冗長だったり,そもそも間違ってるかもしれません.
- -