WEBサービス

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のスレッド名をいくつか繋げてテストしましたが、戻り値がちょっと残念な結果になってしまいました。

無料で開放されているものについて品質云々は言いませんが、せめてもうちょっと多い文字数を投げてみたいな、と思いました。

-WEBサービス
-, , , ,