古い記事
ランダムジャンプ
新しい記事
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)