Yahoo!の係り受け解析APIをRubyから利用してみた

Yahoo!デベロッパーネットワークで日本語係り受け解析用のAPIが公開されているので,試しにRubyから利用してみた.APIの利用にはアプリケーションIDが必要(無料で取得できる).
http://developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html

#!/opt/local/bin/ruby
require 'open-uri'

$KCODE = 'u'

class DependencyParsing
  AppID = "アプリケーションID"
  RequestURI = "http://jlp.yahooapis.jp/DAService/V1/parse"
  
  def self.parse(text)
    uri = "#{RequestURI}?appid=#{AppID}&sentence=#{URI.encode(text)}"
    open(uri) {|f|
      return f.read
    }
  end
end

puts DependencyParsing.parse("明日の東京はいつ雨が降りますか")

出力は以下の通り.フォーマットはXML.
各文節にIDが割り振られ,どのIDの文節を修飾しているか(Dependency)が示されている.また同時に形態素解析の結果も得られている.あとはREXMLなどを使ってXMLから必要な情報を抽出してやればよさげ.

<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:jlp:DAService" xsi:schemaLocation="urn:yahoo:jp:jlp:DAService http://jlp.yahooapis.jp/DAService/V1/parseResponse.xsd">
 <Result>
  <ChunkList>
   <Chunk>
    <Id>0</Id>
    <Dependency>1</Dependency>
    <MorphemList>
     <Morphem>
      <Surface>明日</Surface><Reading>あした</Reading><Baseform>明日</Baseform><POS>副詞</POS><Feature>副詞,副詞,*,明日,あした,明日</Feature>
     </Morphem>
     <Morphem>
      <Surface></Surface><Reading></Reading><Baseform></Baseform><POS>助詞</POS><Feature>助詞,助詞連体化,*,の,の,の</Feature>
     </Morphem>
    </MorphemList>
   </Chunk>
   <Chunk>
    <Id>1</Id>
    <Dependency>4</Dependency>
    <MorphemList>
     <Morphem>
      <Surface>東京</Surface><Reading>とうきょう</Reading><Baseform>東京</Baseform><POS>名詞</POS><Feature>名詞,地名,*,東京,とうきょう,東京</Feature>
     </Morphem>
     <Morphem>
      <Surface></Surface><Reading></Reading><Baseform></Baseform><POS>助詞</POS><Feature>助詞,係助詞,*,は,は,は</Feature>
     </Morphem>
    </MorphemList>
   </Chunk>
   <Chunk>
    <Id>2</Id>
    <Dependency>4</Dependency>
    <MorphemList>
     <Morphem>
      <Surface>いつ</Surface><Reading>いつ</Reading><Baseform>いつ</Baseform><POS>副詞</POS><Feature>副詞,副詞,*,いつ,いつ,いつ</Feature>
     </Morphem>
    </MorphemList>
   </Chunk>
   <Chunk>
    <Id>3</Id>
    <Dependency>4</Dependency>
    <MorphemList>
     <Morphem>
      <Surface></Surface><Reading>あめ</Reading><Baseform></Baseform><POS>名詞</POS><Feature>名詞,名詞,*,雨,あめ,雨</Feature>
     </Morphem>
     <Morphem>
      <Surface></Surface><Reading></Reading><Baseform></Baseform><POS>助詞</POS><Feature>助詞,格助詞,*,が,が,が</Feature>
     </Morphem>
    </MorphemList>
   </Chunk>
   <Chunk>
    <Id>4</Id>
    <Dependency>-1</Dependency>
    <MorphemList>
     <Morphem>
      <Surface>降り</Surface><Reading></Reading><Baseform></Baseform><POS>動詞</POS><Feature>動詞,ラ五,連用タ接続,降り,ふ,降</Feature>
     </Morphem>
     <Morphem>
      <Surface>ます</Surface><Reading></Reading><Baseform></Baseform><POS>助動詞</POS><Feature>助動詞,助動詞ます,基本形,ます,ま,ま</Feature>
     </Morphem>
     <Morphem>
      <Surface></Surface><Reading></Reading><Baseform></Baseform><POS>助詞</POS><Feature>助詞,終助詞,*,か,か,か</Feature>
     </Morphem>
    </MorphemList>
   </Chunk>
  </ChunkList>
 </Result>
</ResultSet>

これをmickey24_botで活用できるといいなーと考えているけど,まだ具体的な利用方法は思い付いていない.