Yahoo!の日本語形態素解析APIのgemを作ってみた
前回のキーフレーズ抽出のgemに続き、 Yahoo!が提供している 日本語形態素解析APIのgemを作りました。
kyohei8/yahoo_parse_api · GitHub
yahoo_parse_api | RubyGems.org | your community gem host
インストール
Gemfileに以下を追加
gem 'yahoo_parse_api'
そして bundle install
またはgemを直接インストール
$ gem install yahoo_parse_api
設定
アプリケーションIDをYahooから取得して、 以下の用に設定
require 'yahoo_parse_api' YahooParseApi::Config.app_id = [application_ID]
使い方
YahooParseApi::Parse
をnewして、parse
メソッドを呼び出します。
- 第一引数に解析したい文字列、
- 第二引数にリクエストパラメータをハッシュ形式で指定します。(リクエストパラメータについてはこちらをご参考下さい)
- 第三引数にはリクエスト方法(
:GET
か:POST
)を指定します。指定しない場合はGETリクエストになります。 - 戻り値はXML形式のレスポンスをハッシュにして返しています。
parse_api = YahooParseApi::Parse.new # GET Request result = parse_api.parse('庭には二羽ニワトリがいる。', { results: 'ma,uniq', uniq_filter: '9|10' }) # => {"ResultSet"=>{ # "ma_result"=>{ # "total_count"=>"8", # "filtered_count"=>"8", # "word_list"=>{"word"=>[{"surface"=>"庭", "reading"=>"にわ", "pos"=>"名詞"}, # {"surface"=>"に", "reading"=>"に", "pos"=>"助詞"}, # {"surface"=>"は", "reading"=>"は", "pos"=>"助詞"}, # {"surface"=>"二羽", "reading"=>"にわ", "pos"=>"名詞"}, # {"surface"=>"ニワトリ", "reading"=>"にわとり", "pos"=>"名詞"}, # {"surface"=>"が", "reading"=>"が", "pos"=>"助詞"}, # {"surface"=>"いる", "reading"=>"いる", "pos"=>"動詞"}, # {"surface"=>"。", "reading"=>"。", "pos"=>"特殊"}]}}, # "uniq_result"=>{ # "total_count"=>"8", # "filtered_count"=>"4", # "word_list"=>{"word"=>[{"count"=>"1", "surface"=>"いる", "reading"=>nil, "pos"=>"動詞"}, # {"count"=>"1", "surface"=>"ニワトリ", "reading"=>nil, "pos"=>"名詞"}, # {"count"=>"1", "surface"=>"二羽", "reading"=>nil, "pos"=>"名詞"}, # {"count"=>"1", "surface"=>"庭", "reading"=>nil, "pos"=>"名詞"}]}}, # "schemaLocation"=>"urn:yahoo:jp:jlp http://jlp.yahooapis.jp/MAService/V1/parseResponse.xsd"}} # POSTリクエストの場合 result = yp.parse('庭には二羽ニワトリがいる。', { results: 'ma,uniq', uniq_filter: '9|10' }, :POST) # => {"ResultSet"=>... # リクエストパラメータのサンプル result = yp.parse('庭には二羽ニワトリがいる。', { results: 'ma', ma_response: 'surface', ma_response: '2|5' })
リクエストする文字数について
渡す文字列ですが、公式の仕様にはリクエストは100KBまでと書いてあるが実際には13,000文字(38KB)くらいで 制限に引っかかってしまいます。(このへんがどういう計算なのかわからない・・・)。