PHPで日本語形態要素解析をやってみる

入力された文章を日本語の単語に分割して読みを表示するプログラムを作ってみる。

形態要素解析に何を使うか?

レンタルサーバを使ってるんで、サーバにインストールするタイプは使うことが出来ない。
ちょっと調べてみると、Yahoo!が以下のようなサービスをやってるようなので、アプリケーションIDを取得してこれを使ってみることにする。

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

プログラムを解析してみる。

以下のリンクからYahoo!が提供しているサンプルプログラムをダウンロードすることが出来る。

テキスト解析サンプルコード:形態素解析 - Yahoo!デベロッパーネットワーク

これを見てどう使うのかを考える。

注目するのは26行目かな。

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

この$aidへ取得したアプリケーションID、$sentenceに解析したい文章を入力してxmlで取得に行って、それをsimplexml_load_fileで解析しているよう。
$xml->ma_result->word_list->wordの部分で取得したい要素にアクセスしている。どのような要素があるかは以下のリンクを参照してほしい。

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

で、今回は単純に単語に分割したいだけなんで、↑の動作でいいと思っている。

実装

で、実装。リンクにアクセスすると構文解析だけしてくれる。単語に分割って言うけどこんなに単語って短いものなのか?

http://steel-plate.jp/cambridge/kaiseki.php

感想

Yahoo!すごい。全然遅く無いしよいですね。