【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をセットし、そのまま実行すると、結果は以下のようになります。
ここ/に/形態素/解析/し/たい/文章/
あわせて読んでほしい!
コメント
まだコメントはありません。