サンプル・プログラム
「Yahoo!JAPAN 日本語形態素解析Webサービス」による形態素解析
入力パラメータは翻訳したいテキストであるので、GET 渡しでは長くなりすぎてしまう。そこで、POST 渡しを使うことにする。
2008 年(平成 20 年)8 月 12 日、Yahoo!検索プロジェクトが Yahoo!デベロッパーネットワークで提供している WebAPI のドメインが、yahoo.co.jp から yahooapis.jp に変更されましたことに伴い、プログラムを修正した。⇒(Yahoo!検索、Yahoo!カテゴリの WebAPI ドメイン変更のお知らせ
マッシュアップを行う場合、このように突然、WebAPI が変更されることがあるので注意が必要だ。
| URL |
|---|
| http://jlp.yahooapis.jp/MAService/V1/parse |
| 項目名 | フィールド名 | 型 | 内 容 |
|---|---|---|---|
| アプリケーションID | appid | string | Yahoo! デベロッパーネットワークのアプリケーションID。無料で入手できる。 |
| 解析対象テキスト | sentence | string | 解析する日本語テキスト。UTF-8エンコード。 |
| 解析結果の種類 | results | string | "ma": 形態素解析の結果を ma_result に返す。 "uniq": 出現頻度情報を uniq_result に返す。 両方指定する場合は "ma,uniq"。 |
解説:準備
0026: //Yahoo! JAPAN Webサービス アプリケーションID
0027: //http://help.yahoo.co.jp/help/jp/developer/developer-06.html にて登録のこと.
0028: //define('APPLICATION_ID', '*************************************');
取得した ID は定数 $ApplicationID に格納すること。
サンプル・プログラムの解説:パラメータ渡し
サンプル・プログラムの解説:パラメータ受け
0092: /**
0093: * 指定したパラメータを取り出す
0094: * @param string $key パラメータ名(省略不可)
0095: * @param bool $auto TRUE=自動コード変換あり/FALSE=なし(省略時:TRUE)
0096: * @param mixed $def 初期値(省略時:空文字)
0097: * @return string パラメータ/NULL=パラメータ無し
0098: */
0099: function getParam($key, $auto=TRUE, $def='') {
0100: if (isset($_GET[$key])) $param = $_GET[$key];
0101: else if (isset($_POST[$key])) $param = $_POST[$key];
0102: else $param = $def;
0103: if ($auto) $param = mb_convert_encoding($param, INTERNAL_ENCODING, 'auto');
0104: return $param;
0105: }
サンプル・プログラムの解説:解析と並べ替え
0270: //出現頻度の結果
0271: foreach ($ResultSet->uniq_result->word_list->word as $val) {
0272: $surface = (string)$val->surface;
0273: $items[$surface]['count'] = (int)$val->count;
0274: }
解析された単語は配列変数 $response に格納し、出現頻度の多い順に並べ替える。なお、配列変数 $response は多次元連想配列なので、並べ替えには関数 uasort を利用した。
サンプル・プログラムの解説:型キャスト
0272: $surface = (string)$val->surface;
参考サイト
- 日本語形態素解析 Web サービス
- PHP で 2 つの文章の類似度を計算する(WebAPI版)(ぱふぅ家のホームページ)

サーバサイドで利用できる形態素解析は、「PHP と KAKASI を使って単語に分解する」で紹介した「KAKASI」や、「ChaSen」、「MeCab」が有名であるが、サーバに負荷がかかる処理である。この「日本語形態素解析 Web サービス」は処理速度も速く、サーバの負荷分散という意味では有用な WebAPI だ。