
Yahoo! Web API テキスト解析の「キーフレーズ抽出API」の使い方
2015/11/18
Yahooにて公開されているAPI、「キーフレーズ抽出API」を使う機会があったので、その使い方を忘備録としてポストします。
Yahoo キーフレーズ抽出APIとは
Yahoo!Japanにて公開されているAPIで、対象としたい日本語テキストをポストすると日本語文を解析し、特徴的な表現(キーフレーズ)を抽出するといったもの。
いわゆる『形態素解析』を行って結果を返してくれるものですね。
使用するにはデベロッパーサイトにて登録し、アプリケーションIDを取得する必要があります。
※登録は無料。
仕様
仕様一覧はコチラで確認。
サンプルプログラム(PHP)
サンプルプログラムが以下のURLに公開されているので、ほぼそのまま使えます。
使い方
CakePHP(2.3.6)内で使ったので、その一部を抜粋して紹介。
サンプルコード
[php]
$appid = '**********'; // アプリケーションID(結構長い)
// 解析対象テキスト
$sentence = 'Webサイトやサービスの運営において、避けて通れないSEO対策。いざ施策を打っていると、気付かずスパム判定を受けている事もあります。そんな時の対策は出来ていますか?';
// 文字コード変換
$sentence = mb_convert_encoding($sentence, 'utf-8', 'auto');
// APIに投げる
$responsexml = $this->show_keyphrase($appid, $sentence);
// XMLオブジェクトをCakePHPで配列に変換
$xml = Set::reverse($responsexml);
pr($xml);
function escapestring($str)
{
return htmlspecialchars($str, ENT_QUOTES);
}
function show_keyphrase($appid, $sentence)
{
$output = "xml";
$request = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract?";
$request .= "appid=".$appid."&sentence=".urlencode($sentence)."&output=".$output;
$responsexml = simplexml_load_file($request);
$result_num = count($responsexml->Result);
return $responsexml;
}
[/php]
結果
[php]
Array
(
[ResultSet] => Array
(
[Result] => Array
(
[0] => Array
(
[Keyphrase] => スパム判定
[Score] => 100
)
[1] => Array
(
[Keyphrase] => 施策
[Score] => 76
)
[2] => Array
(
[Keyphrase] => SEO対策
[Score] => 70
)
[3] => Array
(
[Keyphrase] => サービス
[Score] => 60
)
[4] => Array
(
[Keyphrase] => Webサイト
[Score] => 56
)
[5] => Array
(
[Keyphrase] => 運営
[Score] => 53
)
)
[@xsi:schemaLocation] => urn:yahoo:jp:jlp:KeyphraseService http://jlp.yahooapis.jp/KeyphraseService/V1/extract.xsd
)
)
[/php]
各Scoreの値(数字)は、キーワードの重要度を表しているようです。
サンプルはなかなかいい感じに解析されていますが、対象文字列が長すぎると返ってこなくなるというのが、ちょっと残念。(1リクエストが100KBに制限されているからっぽい)
あと、2chのスレッド名をいくつか繋げてテストしましたが、戻り値がちょっと残念な結果になってしまいました。
無料で開放されているものについて品質云々は言いませんが、せめてもうちょっと多い文字数を投げてみたいな、と思いました。