特徴語抽出を行うサンプル
Yahoo! Developer APIのキーフレーズ抽出サービスを利用して、テキストから特徴語を抽出するサンプルです。といってもhttpclientでサービスにアクセスして結果を解析し返すだけですが・・・。
- 依存モジュールとして「httpclient」が必要です。
- また、実行時には、Yahoo! Developer APIのアプリケーションIDも必要になります。
- Yahoo! JAPAN のアカウントがあれば、こちらからさくっと取得できます。
require 'rubygems' require 'httpclient' require 'rexml/document' module YahooDeveloperAPI class Client def initialize( appid, proxy=ENV["http_proxy"] ) @appid = appid @client = HTTPClient.new( proxy, "client") end #テキストから特徴語を抽出する。 #q:: テキスト #戻り値:: YahooDeveloperAPI::Keyphrase の配列 def extract_keyphrase( q ) result = @client.get( "http://jlp.yahooapis.jp/KeyphraseService/V1/extract?sentence=#{URI.encode(q)}&appid=#{@appid}" ) phrases = [] doc = REXML::Document.new(result.content) doc.elements.each("/ResultSet/Result") {|e| phrases << Keyphrase.new( e.text("Keyphrase"), e.text("Score").to_i ) } return phrases end end # 特徴語 Keyphrase = Struct.new( :keyphrase, :score ) end # サンプル # client = YahooDeveloperAPI::Client.new( "<Yahoo! Developer APIのアプリケーションID>" ) query = "東京ミッドタウンから国立新美術館まで歩いて5分で着きます。" client.extract_keyphrase(query).each{|phrase| puts "#{phrase.keyphrase} : #{phrase.score}" }
実行結果です。
国立新美術館 : 100 東京ミッドタウン : 65 5分 : 9