Yahoo!のキーワード抽出APIを使って、みたびTwitterで流行っているキーワードをクラウド化してみた
ということで、
Yahoo!デベロッパーネットワークにて、キーフレーズ抽出APIを公開しましたので紹介します。キーフレーズ抽出APIとは、与えられた文章から、その文章を特徴づける重要な部分(キーフレーズ)を抽出し、独自の算出方法により点数付けを行って返すAPIです。
- MeCab extensionを使ってTwitterで流行っているキーワードをクラウド化 - Do You PHP はてな
- Yahoo!の日本語形態素解析Webサービスを使ってTwitterで流行っているキーワードをクラウド化 - Do You PHP はてな
に続いて、キーワード抽出APIを使ったものを書いてみました。というか、Yahoo!の日本語形態素解析Webサービスを使ってTwitterで流行っているキーワードをクラウド化 - Do You PHP はてなの呼び出し先を変えたぐらいですが。。。とりあえず、ソースをさらしておきます。ホントにAPIの呼び出し部分と、レスポンスのXMLの処理が違うぐらいです(細かいところは別)。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Script-Type" content="text/javascript;charset=utf-8"> <style> div.taglist { float: none; width: 50%; margin-left: 20px; margin-bottom: 20px; line-height: 1.5em; font-size: 60%; text-align:center; text-transform: uppercase; } ul.taglist { margin: 0 0; padding: 0 0; background: none; display: block; letter-spacing:-0.1em; font-weight: bold; } a.latest { margin: 1em 0; letter-spacing:-0.1em; color: #333388 } a.latest:hover { color: #333388 } a.later { margin: 0 0; letter-spacing:-0.1em; color: #333388 } a.later:hover { color: #333388 } a.earlier { margin: 0 0; letter-spacing:-0.2em; color: #cccccc } a.earlier:hover { color: #333388 } a.earliest{ margin: 0 0;letter-spacing:-0.2em; color: #cccccc } a.earliest:hover { color: #333388 } </style> </head> <body> <ul> <li><a href="http://d.hatena.ne.jp/shimooka/20070618/1182163865">Yahoo!の日本語形態素解析Webサービスを使ってTwitterで流行っているキーワードをクラウド化</a> </ul> <hr> <?php error_reporting(E_ALL); mb_internal_encoding('utf-8'); ini_set('mbstring.http_output', 'utf-8'); require_once 'Services/Twitter.php'; require_once 'HTML/TagCloud.php'; require_once 'HTTP/Request.php'; $user = '[TwitterのログインID]'; $pass = '[Twitterのパスワード]'; $application_id = '[Yahoo! DEVELOPER NETWORKのアプリケーションID]'; $twitter = new Services_Twitter($user, $pass); $friends = json_decode($twitter->getFriendsTimeline()); if (!is_array($friends)) { exit; } $sentence = ''; foreach ($friends as $friend) { $text = $friend->text; $text = str_replace('[B!]', '', $text); $text = str_replace('[tM]', '', $text); $text = str_replace('*Tw*', '', $text); $text = str_replace('Bookmarked', '', $text); $text = mb_ereg_replace('\([012][0-9]:[0-9]{2}\)', '', $text); $text = mb_ereg_replace('https?://[-a-zA-Z0-9.-/=?&%]+', '', $text); $text = mb_ereg_replace('L:.*\*p', '', $text); $sentence .= '。' . $text; } echo '<!--' . $sentence . '-->'; $url = 'http://jlp.yahooapis.jp/KeyphraseService/V1/extract'; $request = new HTTP_Request($url); $request->addQueryString('appid', $application_id); $request->addQueryString('sentence', $sentence); $request->addQueryString('output', 'xml'); if (PEAR::isError($request->sendRequest())) { die('request failed'); } $xml = new SimpleXMLElement($request->getResponseBody()); $max_count = false; $cloud = new HTML_TagCloud(); foreach ($xml->Result as $result) { $cloud->addElement($result->Keyphrase, 'http://www.google.co.jp/search?hl=ja&q=' . urlencode($result->Keyphrase) . '&lr=lang_ja&aq=f&oq=', $result->Score); } echo $cloud->buildHTML(); ?> </body> </html>
とりあえず、Do You PHP?のEXPERIENCEで動作を確認できるようにしてみましたので、気になる方はどうぞ。キーフレーズなので、形態素解析したときの"名詞"だけといったような数にはならず、それなりに結果が出力されてますね。
しかし、めちゃくちゃ手抜きだ。。。でも、ネタがないので勘弁してください><