PythonからYahooキーフレーズ抽出WebAPIを使う
概要
Yahooから提供されているテキスト解析WebAPIの中のキーフレーズ抽出APIを使って、入力された任意の文からキーフレーズ(重要語句)を抽出してみました。
テキスト解析WebAPIの中には「日本語形態素解析API」などがありますが、単に入力文から特徴的な単語を抜き出したいだけであれば、「キーフレーズ抽出API」の方がシンプルで簡単だと思います。
結果の形式はXML、JSON、PHP Serializeから選択することが出来ます。今回はJSONで受け取ることにしました。
ソースコード
#coding:utf-8 import json import urllib import urllib2 #取得したアプリケーションIDを指定 appid = "***" #キーフレーズ抽出APIのURL pageurl = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract" #入力文 sentence = u"東日本大震災の影響で2度登板が流れ、実戦は6日の巨人戦以来、約2週間ぶり。それでも「試合で投げることに関して不安はない。調整が遅れているのは自分だけじゃない」と話していた斎藤だったが、プロの洗礼を浴びてしまった。斎藤は降板後「コントロールも良くなかったし、変化球の切れも良くなかった。" def extract_keyphrase(sentence, id): sentence = urllib.quote_plus(sentence.encode("utf-8")) query = "%s?appid=%s&output=%s&sentence=%s" % (pageurl, id, "json", sentence) c = urllib2.urlopen(query) json_str = c.read() result = json.loads(json_str) return result result = extract_keyphrase(sentence, id=appid) #scoreの大きい順に表示 for k,v in sorted(result.items(), key=lambda x:x[1], reverse=True): print "keyphrase:%s, score:%d" % (k.encode("utf-8"), v)
実行結果
keyphrase:斎藤, score:100 keyphrase:東日本大震災, score:94 keyphrase:変化球, score:80 keyphrase:コントロール, score:76 keyphrase:洗礼, score:67 keyphrase:実戦, score:61 keyphrase:降板後, score:53 keyphrase:巨人戦, score:53 ...(省略)
公式のドキュメントによると、キーワードと共に取得出来るスコアは以下のような値との事です。
Scoreは、重要度を示す目安の数値です。先頭のKeyphraseのScoreは100となり、以下相対的な重要度に応じて 100以下の値が割り当てられます。
参考
- Yahoo WebAPIの使い方について
- dictをvalでソートする方法について