【PHP】Yahoo 日本語形態素解析APIの使い方

公開日:
更新日:
カテゴリー: PHP

PHPで日本語文章の分析(形態素解析)をするべくいろいろ調べていたら、Yahooデベロッパーネットワークで「日本語形態素解析API」というジャストなサービスがリリースされていたので、これを利用することにしました。

ここでは、その利用方法を紹介します。

Yahooの日本語形態素解析APIとは?

日本語の文章を名詞・形容詞・副詞・連体詞・・・など品詞に分割し、統計情報を取得できる機能を提供するものです。

1日(24時間以内)に1つのアプリケーションIDで50000件のリクエストを無料で利用できます。

※1リクエストの最大サイズは100KBまで。詳しくは利用制限を参照。

日本語形態素解析APIの利用方法

アプリケーションIDの取得

Yahooの日本語形態素解析APIを利用するには、アプリケーションIDが必要です。

まずYahooにログインし、こちらにアクセスし、アプリケーション情報を入力してください。

【備考】
私はPHPでサービスを利用する予定なので、アプリケーションの種類は「サーバーサイド」にしました。

入力が完了すると、「アプリケーションID」と「シークレット」が発行されます。

これらが取得できれば、あとはスルーしても大丈夫です。

使い方

使い方はいたって簡単で、次の3つです。

  1. 日本語形態素解析にかけるURLを組み立てる
  2. 戻り値をパースする
  3. データを取り出す

日本語形態素解析にかける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をセットし、そのまま実行すると、結果は以下のようになります。

ここ/に/形態素/解析/し/たい/文章/

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント