Yahoo! Web API テキスト解析の「キーフレーズ抽出API」の使い方
2015/11/18
Yahooにて公開されているAPI、「キーフレーズ抽出API」を使う機会があったので、その使い方を忘備録としてポストします。
Yahoo キーフレーズ抽出APIとは
Yahoo!Japanにて公開されているAPIで、対象としたい日本語テキストをポストすると日本語文を解析し、特徴的な表現(キーフレーズ)を抽出するといったもの。
いわゆる『形態素解析』を行って結果を返してくれるものですね。
使用するにはデベロッパーサイトにて登録し、アプリケーションIDを取得する必要があります。
※登録は無料。
仕様
仕様一覧はコチラで確認。
サンプルプログラム(PHP)
サンプルプログラムが以下のURLに公開されているので、ほぼそのまま使えます。
使い方
CakePHP(2.3.6)内で使ったので、その一部を抜粋して紹介。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$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; } |
結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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 ) ) |
各Scoreの値(数字)は、キーワードの重要度を表しているようです。
サンプルはなかなかいい感じに解析されていますが、対象文字列が長すぎると返ってこなくなるというのが、ちょっと残念。(1リクエストが100KBに制限されているからっぽい)
あと、2chのスレッド名をいくつか繋げてテストしましたが、戻り値がちょっと残念な結果になってしまいました。
無料で開放されているものについて品質云々は言いませんが、せめてもうちょっと多い文字数を投げてみたいな、と思いました。