【PHP】Yahoo 日本語形態素解析APIの使い方
PHPで日本語文章の分析(形態素解析)をするべくいろいろ調べていたら、Yahooデベロッパーネットワークで「日本語形態素解析API」というジャストなサービスがリリースされていたので、これを利用することにしました。
ここでは、その利用方法を紹介します。
Yahooの日本語形態素解析APIとは?
日本語の文章を名詞・形容詞・副詞・連体詞・・・など品詞に分割し、統計情報を取得できる機能を提供するものです。
1日(24時間以内)に1つのアプリケーションIDで50000件のリクエストを無料で利用できます。
※1リクエストの最大サイズは100KBまで。詳しくは利用制限を参照。
日本語形態素解析APIの利用方法
アプリケーションIDの取得
Yahooの日本語形態素解析APIを利用するには、アプリケーションIDが必要です。
まずYahooにログインし、こちらにアクセスし、アプリケーション情報を入力してください。
【備考】
私はPHPでサービスを利用する予定なので、アプリケーションの種類は「サーバーサイド」にしました。
入力が完了すると、「アプリケーションID」と「シークレット」が発行されます。
これらが取得できれば、あとはスルーしても大丈夫です。
使い方
使い方はいたって簡単で、次の3つです。
- 日本語形態素解析にかけるURLを組み立てる
- 戻り値をパースする
- データを取り出す
日本語形態素解析にかけるURLを組み立てる
Yahooのサービスを利用するので、形態素解析にかけたい文章をYahooに投げなければなりません。
投げるURLですが、このようにします。
http://jlp.yahooapis.jp/MAService/V1/parse?appid=ここにアプリケーションID&results=ma&sentence=ここにURLエンコードした文章
戻り値をパースする
戻り値はXMLファイルなので、simplexml_load_file関数でパースします。
simplexml_load_file("ここにURL")
なお、「ここに形態素解析したい文章」を形態素解析にかけ、パースするとこのようにオブジェクトが返ってきます。
SimpleXMLElement Object
(
[ma_result] => SimpleXMLElement Object
(
[total_count] => 7
[filtered_count] => 7
[word_list] => SimpleXMLElement Object
(
[word] => Array
(
[0] => SimpleXMLElement Object
(
[surface] => ここ
[reading] => ここ
[pos] => 名詞
)
[1] => SimpleXMLElement Object
(
[surface] => に
[reading] => に
[pos] => 助詞
)
[2] => SimpleXMLElement Object
(
[surface] => 形態素
[reading] => けいたいそ
[pos] => 名詞
)
[3] => SimpleXMLElement Object
(
[surface] => 解析
[reading] => かいせき
[pos] => 名詞
)
[4] => SimpleXMLElement Object
(
[surface] => し
[reading] => し
[pos] => 助動詞
)
[5] => SimpleXMLElement Object
(
[surface] => たい
[reading] => たい
[pos] => 助動詞
)
[6] => SimpleXMLElement Object
(
[surface] => 文章
[reading] => ぶんしょう
[pos] => 名詞
)
)
)
)
)
データを取り出す
上記戻り値を参考にし、欲しい情報を取り出します。
基本的にforeach関数を使うとスマートに取り出せると思います。
サンプルプログラム
上記使い方を参考に、実際に形態素解析をかけるプログラムを作成しました。
<?php
//アプリケーションIDのセット
$id = "ここにID";
//形態素解析したい文章
$word = "ここに形態素解析したい文章";
//URLの組み立て
$url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid=" . $id . "&results=ma&sentence=" . urlencode($word);
//戻り値をパースする
$parse = simplexml_load_file($url);
//戻り値(オブジェクト)からループでデータを取得する
foreach($parse->ma_result->word_list->word as $value){
//品詞を「/」で区切る
echo $value->surface;
echo "/";
}
?>
アプリケーションIDをセットし、そのまま実行すると、結果は以下のようになります。
ここ/に/形態素/解析/し/たい/文章/
あわせて読んでほしい!
コメント
まだコメントはありません。


