Yahoo!デベロッパーネットワーク(YDN)にキーフレーズ抽出APIが登場しました。
テキストを渡すとそこに含まれる重要そうなフレーズを抽出してくれるAPIです。
公開から一ヶ月ほど経っていて目新しさはないのですが、ハックしてみたのでご報告。
- Yahoo!デベロッパーネットワーク
http://developer.yahoo.co.jp/
- Yahoo!デベロッパーネットワーク - テキスト解析 - キーフレーズ抽出
http://developer.yahoo.co.jp/webapi/jlp/keyphrase/v1/extract.html
- キーフレーズ抽出API の紹介 (Yahoo! JAPAN Tech Blog)
http://techblog.yahoo.co.jp/web/_api/api_6/
§
Yahoo! キーフレーズAPIを使って YeNikki を改造しました。
YeNikki (http://yapi.ta2o.net/yenikki/) は、
Yahoo! JAPAN API を利用した自動絵日記システムで、
2005年12月1日に公開したネタサイトです。
テキストが入力されると、
その中から重要そうな単語︵名詞︶を取り出し、
それら検索キーとして画像検索APIに投げて画像を取って来て、
それらの画像を表示するという﹁自動絵日記﹂的なサイトです。
もう少し具体的に仕組みを解説します‥
(1) 入力されたテキストをサーバ側で動いている形態素解析システム茶筌(ChaSen)で解析し名詞だけ取り出します。
(2) 事前に調べておいた25万語ほどの単語についてDF値を使い、1で得られたそれぞれの名詞についてのTF-IDF値を得て、その値により重要単語を選び出します。
(3) あとは、その単語で画像検索&Ajaxでの表示を行います。
で、キーフレーズ抽出APIを使うと、
前述の(1)と(2)の処理が、
URLを1回叩くだけで済んでしまうのです!
素晴らしい!
さらに、得られるのは単語ではなくフレーズなのです。
例えば﹁東京都内﹂は形態素解析すると﹁東京﹂と﹁都内﹂に分割されてしまうのですが、キーフレーズ抽出APIだと複合名詞やらいろいろな処理をしてくれるので、﹁東京都内﹂という塊で取り出してくれるのです。
YeNikki みたいなサービスにはうってつけです。
素晴らしい!
コードの一部を載せておきます。
Perlを使ったAPI呼び出し関数とその結果の利用部分︵サンプル︶です。
# INPUT: my $sentence = "東北新幹線で七夕祭りに!";
# OUTPUT: 東北新幹線 (100), 七夕祭り (97)
my $r_ref = yapikp({sentence => $sentence});
foreach my $ri (@$r_ref) {
my $k = $ri->{Keyphrase};
my $s = $ri->{Score};
print "$k ($s)\n";
}
...
sub yapikp {
my ($args_ref) = @_;
my $s = URI::Escape::uri_escape($args_ref->{sentence}) || "";
return [] unless $s;
my $url = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract?"
."appid=YahooDemo&sentence=$s";
my $response = get($url);
return [] unless $response;
my $xmlsimple = XML::Simple->new(ForceArray => [ 'Result' ]);
my $xml = $xmlsimple->XMLin($response);
return [] unless $xml->{Result};
return $xml->{Result};
}
appid は自分で取得したものをご利用ください。
(http://e.developer.yahoo.co.jp/webservices/register_application)