Hatena::ブログ(Diary)

兀兀 -雑多編- このページをアンテナに追加 RSSフィード

2009-05-09

rbuyでケブンリッジ

| 18:59 | rbuyでケブンリッジを含むブックマーク rbuyでケブンリッジのブックマークコメント

というわけで、rbuyでケブンリッジかするプラログムをかいてみた。

$KCODE = "UTF-8"

require 'jcode'
require 'kconv'
require 'open-uri'
require 'rexml/document'
require 'uri'

YMA_API_URL = "http://jlp.yahooapis.jp/MAService/V1/parse"
APPID = "ここにYahoo!JAPANデベロッパーネットワークの「アプリケーションID」を書く"
DEFAULT_TEXT = <<END
こんにちは。皆さんお元気ですか?私は元気です。
この文章は、イギリスのケンブリッジ大学の研究の結果
人間は文字を認識するとき、その最初と最後の文字さえ合っていれば
順番は滅茶苦茶でもちゃんと読めるという研究に基づいて
わざと文字の順番を入れ替えてあります。
どうです?ちゃんと読めちゃうでしょ?
ちゃんと読めたら反応よろしく。
END

# けぶんりっぢ化
def kebunridge(word)
  word_size = word.jsize
  if word_size >= 4
    head = tail = ""
    body = []
    index = 0
    word.each_char do |c|
      index = index + 1
      if index == 1
        head = c
      elsif index == word_size
        tail = c
      else
        body << c
      end
    end
    word = head + body.sort_by{rand}.join("") + tail
  else
    word
  end
end

# Yahoo! 提供の「日本語形態素解析」を使い、日本語文を形態素に分割し、そ
# の際に得られる読みがなを使って、けぶんりっじ化を行う。
sentence = DEFAULT_TEXT
url = URI.encode(YMA_API_URL + "?appid=" + APPID + "&sentence=" + sentence.toutf8 + "&results=ma")
open(url) do |f|
  words = []
  result = REXML::Document.new(f)
  result.elements.each("ResultSet/ma_result/word_list/word/reading") do |reading|
    words << kebunridge(reading.text.chomp)
  end
#  puts words.join(" ").tosjis
  puts words.join(" ")
end

じこっうは、こんなかんじで。

>ruby kebunridge.rb
こんにちは 。 みなさん おんげき です か ? わたし は げんき です 。  この ぶんし
ょう は 、 いりぎす の けりんぶっじ だがいく の けきゅんう の けっか  にげんん
は もじ を にんしき する とき 、 その さいしょ と さいご の もじ さえ あっ て い
れ ば  じばゅんん は めくちゃちゃ でも ちんゃと よめる と いう けゅきんう に も
づとい て  わざと もじ の じゅばんん を いれかえ て あり ます 。  どう です ?
ちんゃと よめ ちゃう でしょ ?  ちゃんと よめ たら はんのう よろしく 。

>