Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

Yahoo!のキーワード抽出APIを使って、みたびTwitterで流行っているキーワードをクラウド化してみた

先日、Yahoo!キーフレーズ抽出APIが公開されました。


Yahoo!デベロッパーネットワークにて、キーフレーズ抽出APIを公開しましたので紹介します。

キーフレーズ抽出APIとは、与えられた文章から、その文章を特徴づける重要な部分(キーフレーズ)を抽出し、独自の算出方法により点数付けを行って返すAPIです。

ということで、

に続いて、キーワード抽出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で動作を確認できるようにしてみましたので、気になる方はどうぞ。キーフレーズなので、形態素解析したときの"名詞"だけといったような数にはならず、それなりに結果が出力されてますね。

しかし、めちゃくちゃ手抜きだ。。。でも、ネタがないので勘弁してください><