2007-06-18
■[PHP]Yahoo!の日本語形態素解析Webサービスを使ってTwitterで流行っているキーワードをクラウド化
Yahoo!JAPANがまたサービスを出してきました。このサービス、利用制限はありますが、結構使えそうです。
ヤフーは6月18日、開発者向けサイト「Yahoo!デベロッパーネットワーク」において、日本語の文章を解析できるAPI「日本語形態素解析Webサービス」を公開した。
ヤフー、文章を解析できるAPI「日本語形態素解析Webサービス」を公開 - CNET Japan
先日MeCab extensionを使ってTwitterで流行っているキーワードをクラウド化してみましたが、MeCab extensionをYahoo!のサービスに置き換えたものを書いてみました。
使ったライブラリは
の3つです。まあ、そのうちYahoo用のライブラリも出てくるでしょうから、それを使えばもっと簡単に書けそうです。やっぱ、SimpleXML楽すぎ! :-D
<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> <?php error_reporting(E_ALL); 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('*Tw*', '', $text); $text = mb_ereg_replace('\([012][0-9]:[0-9]{2}\)', '', $text); $text = mb_ereg_replace('https?://[a-zA-Z0-9.-/=?&%]+', '', $text); /** * 対象となるテキストを半角スペースを付けて連結 * Yahoo!APIへのアクセスが1回になるよう手抜き ;-) */ $sentence .= ' ' . $text; } /** * PEAR::HTTP_Requestを使ってYahoo!APIをコール */ $url = 'http://api.jlp.yahoo.co.jp/MAService/V1/parse'; $request = new HTTP_Request($url); $request->addQueryString('appid', $application_id); $request->addQueryString('sentence', $sentence); $request->addQueryString('results', 'uniq'); $request->addQueryString('filter', '9'); if (PEAR::isError($request->sendRequest())) { die('request failed'); } $max_count = false; $cloud = new HTML_TagCloud(); /** * SimpleXMLを使って名詞と出現回数を抜き出し、PEAR::HTML_TagCloudに * 食わせる */ $xml = new SimpleXMLElement($request->getResponseBody()); foreach ($xml->uniq_result->word_list->word as $wd) { if ($max_count === false) { $max_count = $wd->count; } $cloud->addElement($wd->surface, null, $wd->count * (10 / $max_count), time() - ($max_count - $wd->count) * 60 * 60 * 24); } echo $cloud->buildHTML();
手抜きだ。。。(^^;
追記(2007/06/18 22:47)
Do You PHP?のEXPERIENCEで動作を確認できるようにしてみました。
トラックバック - http://d.hatena.ne.jp/shimooka/20070618/1182163865
リンク元
- 137 http://www.google.co.jp/search?q=日本語形態素解析Webサービス&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
- 95 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GFRC_jaJP206JP212&q=出力+バッファ
- 89 http://swik.net/XML/del.icio.us/tag/xml/Yahoo!の日本語形態素解析Webサービスを使ってTwitterで流行っ??
- 88 http://reader.livedoor.com/reader/
- 82 http://www.google.co.jp/search?q=形態素解析 yahoo&sourceid=navclient-ff&ie=UTF-8&rlz=1B2GGGL_ja___JP203
- 80 http://www.google.co.jp/search?hl=ja&q=日本語形態素解析+キーワード&lr=
- 74 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=smarty +配列+要素数&btnG=検索&lr=
- 69 http://d.hatena.ne.jp/rytich/20070715/1184479269
- 61 http://ideaup.seesaa.net/article/46101028.html
- 52 http://www.google.co.jp/search?hl=ja&q=形態素解析+yahoo+php&btnG=Google+検索&lr=







