2013-06-01 :-)
_ 読書メーター
2013年5月の読書メーター
読んだ本の数:7冊
読んだページ数:1962ページ
ナイス数:13ナイス
ゲームクリエイターが知るべき97のこと
読了日:5月24日 著者:
アラン・ケイ (Ascii books)
読了日:5月15日 著者:アラン・C. ケイ
考具 ―考えるための道具、持っていますか?の感想
アイデアを出すための手段いろいろ。あえて制限をつけることでアイデアをひねり出す
読了日:5月12日 著者:加藤 昌治
魔法少女育成計画 restart (後) (このライトノベルがすごい! 文庫)の感想
決着。著者の好みは年増云々、と言ったのは取り消します。ラズリーヌはお気に入りだったのにいーーー
読了日:5月5日 著者:遠藤 浅蜊
魔法少女育成計画 restart (前) (このライトノベルがすごい! 文庫)の感想
デスゲームと推理。途中で魔法少女と魔法効果を整理してたけど、あれは読者への挑戦であろうとは思うんだけど、犯人がさっぱり分からぬ / マジカルデイジーはさすがに生き残ると思ってたんだけど、前の巻といい、もしかしてこの著者は年増が嫌いなんだろうか
読了日:5月4日 著者:遠藤 浅蜊
魔法少女育成計画 (このライトノベルがすごい! 文庫)の感想
まどか☆マギカを知る前に読みたかった。ファヴが合理的に使命をもって行動しているんであればよかったんだけど快楽のために行動してるのが残念
読了日:5月4日 著者:遠藤 浅蜊
はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)の感想
UNIX V6のコードを読みながらオペレーティングシステムの仕組みを読み解く。当然ながらコードがたくさん出てくるが、それにより説明が具体化されるので、抽象化された文章よりもむしろ理解しやすい。これはもはやオペレーティングシステムの教科書と言ってよかろう。プロセス、割り込み、ファイルシステム、起動など幅広いが、スケジューラのところが熱い。スワッパの説明など感動すら覚える
読了日:5月3日 著者:青柳 隆宏
読書メーター
_ [ruby][Yahoo][係り受け解析][自然言語処理][NLP]Yahoo デベロッパーネットワークの日本語係り受け解析APIを使ってみる
テキスト解析:日本語係り受け解析API - Yahoo!デベロッパーネットワーク
こんな
# coding: utf-8
# Yahoo デベロッパーネットワーク の 日本語係り受け解析API を使う
# http://developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html
#
# ref.
# [を] ヤフーの日本語係り受け解析APIとサンプルプログラム「なんちゃって文章要約」
# http://chalow.net/2008-08-21-1.html
#
require 'uri'
require 'open-uri'
require 'rexml/document'
require 'pp'
def syntactic_parse(xml)
syntactic ||= []
doc = REXML::Document.new(xml)
doc.elements.each('ResultSet/Result/ChunkList/Chunk') do |chunk|
chunks = ""
chunk.elements.each('MorphemList') do |ml|
ml.elements.each("Morphem/Surface") do |mo|
chunks << mo.text
end
end
syntactic << chunks
end
return syntactic
end
def syntactic_analysis(text)
apiuri = "http://jlp.yahooapis.jp/DAService/V1/parse"
appid = "?appid=" + ここにあなたのAPI IDを入れる
sentence = "&sentence=" + URI.encode(text)
uri = apiuri + appid + sentence
response = open(uri).read()
syntactic = syntactic_parse(response)
return syntactic
end
def main(argv)
text = argv[0]
syntactic = syntactic_analysis(text)
puts syntactic
end
main(ARGV)
% ruby parse1.rb 隣の客はよく柿食う客だ 隣の 客は よく 柿食う 客だ
_ [ruby][Yahoo][係り受け解析][自然言語処理][NLP][マルコフ連鎖]Yahoo デベロッパーネットワークの日本語係り受け解析APIを使ってマルコフ連鎖してみる
あと、単純にYahooの形態素解析APIを使わないのは、言葉と言葉のつながりが学習できないと判断したからです。
例えば、「うちの庭には二羽鶏がいます。」をYahooの形態素解析APIと日本語係り受け解析APIでやってみると、
→形態素解析:うち/の/庭/に/は/二羽/鶏/が/い/ます/。
→日本語係り受け解析:うちの/庭には/二羽鶏が/います。
となるんですが、日本語係り受け解析ではランダムに並び替えられても意味は分かりそうですよね。対して形態素解析では、ランダムになると正しく意味を把握するのがかなり難しくなります。
今回の入力の形式上、言葉の順番という概念は存在しないので、ランダムに並べた時に意味が分かるというのは非常に重要な要素だと考えたわけです。
ということで形態素解析するよりも係り受け解析のほうがマルコフ連鎖作成時に単語の繋がりをあまり意識しなくていいので楽ちん。
マルコフ連鎖の考え方はこちらと同じ → マルコフ連鎖してみた - hitode909の日記
# coding: utf-8
require 'uri'
require 'open-uri'
require 'rexml/document'
require 'pp'
# XML を解析して係り受けごとにまとめる
def syntactic_parse(xml)
syntactic ||= []
doc = REXML::Document.new(xml)
doc.elements.each('ResultSet/Result/ChunkList/Chunk') do |chunk|
chunks = ""
chunk.elements.each('MorphemList') do |ml|
ml.elements.each("Morphem/Surface") do |mo|
chunks << mo.text
end
end
syntactic << chunks
end
return syntactic
end
# 係り受け解析
def syntactic_analysis(text)
apiuri = "http://jlp.yahooapis.jp/DAService/V1/parse"
appid = "?appid=" + ここにあなたのAPI IDを入れる
sentence = "&sentence=" + URI.encode(text)
uri = apiuri + appid + sentence
response = open(uri).read()
syntactic = syntactic_parse(response)
return syntactic
end
# マルコフ連鎖 学習
def learn(syntacticed)
statetab ||= {}
size = syntacticed.size
0.upto(size - 2) {|index|
w1 = syntacticed[index]
w2 = syntacticed[index + 1]
statetab[w1] ||= []
statetab[w1] << w2
}
return statetab
end
N_MAX = 5
# マルコフ連鎖 生成
def generate(input, statetab)
output = ""
term = statetab.keys.sample
output << term
0.upto(N_MAX) {|n|
if statetab.key?(term)
term = statetab[term].sample
else
term = statetab.keys.sample
end
output << term
}
return output
end
# テキスト読むだけ
# テキストの途中に \n があると chomp だと削除できないようなので gsub しとく
def read(text)
File.open(text).read.gsub("\n", "")
end
def main(argv)
file = argv[0]
input = read(file)
syntactic = syntactic_analysis(input)
statetab = learn(syntactic)
output = generate(input, statetab)
puts output
end
main(ARGV)
こんなテキストファイルを用意する。Yahoo の係り受け解析APIに渡せるのは 4KB までなので注意。
ほむらちゃん、ごめんね。私、魔法少女になる。 私、やっとわかったの。叶えたい願いごと見つけたの。だからそのために、この命を使うね。 ごめん。ホントにごめん。これまでずっと、ずっとずっと、ほむらちゃんに守られて、望まれてきたから、今の私があるんだと思う。 絶対に、今日までのほむらちゃんを無駄にしたりしないから。 全ての魔女を、生まれる前に消し去りたい。全ての宇宙、過去と未来の全ての魔女を、この手で。 今日まで魔女と戦ってきたみんなを、希望を信じた魔法少女を、私は泣かせたくない。最後まで笑顔でいてほしい。 それを邪魔するルールなんて、壊してみせる、変えてみせる。 これが私の祈り、私の願い。 さあ!叶えてよ、インキュベーター!!
実行する。
% ruby markov1.rb text0.txt ほむらちゃん、ごめんね。私、やっとわかったの。叶えたい願いごと見つけたの。だから
ううむ
たんにカタコトな文章になっている。なので






