yahoo!の日本語形態素解析をrubyから使おうとしたらはまった

テキスト解析:日本語形態素解析 - Yahoo!デベロッパーネットワークが便利そうなので、今更ながら使おうとしてみた…ら、1時間くらいはまったのでメモ。ってか間抜けすぎるので、こんなところではまるのは私だけかも。
結局、動いたのは下のような見た目簡単すぎるコード

require 'open-uri'
require 'nkf'
require 'kconv'

$KCODE = "s"

sentence = "裏庭には二羽、庭には二羽ニワトリがいる。"	
open(URI.escape("http://jlp.yahooapis.jp/MAService/V1/parse?appid=<自分のAPIのID>&results=uniq&uniq_filter=1|2|3|4|9|10&sentence=" + sentence.toutf8)){|file|
	file.each{|line|
		p NKF.nkf("-s",line)
	}
}

はまったポイントは、

  • sentenceをescapeする前に、UTF8にしなくてはいけない
  • APIの引数として|を使いたいのでURI.escapeしなくてはいけない

に尽きるんですが…。下は[ruby-dev:32169] Re: Can't use "|" in open-uriから割とすぐ解決しましたが、上ではまった。文字コードかなーとは早いうちから気がついてたのですが、NKFのUTF8変換のときの引数が-uでなかったところが致命的すぎて…(プログラミング言語 Ruby リファレンスマニュアル)。確かめろという話なのですが。