Graphviz で歌詞を可視化してみる
昨日の続きです。Graphviz で何か面白い事を出来ないかなあ、と考えて、ミクシーのマイミクリスト相関図とか、エログサイトのサイト間リンクを可視化とか色々考えて作ってみたりしたものの、どれもありふれてるネタのような気がして今イチな感じ。
で、、、今日ふと旧友に会ったら、最近 Perfume を聞いてる、という話を聞きました。そこで、おーそうだ歌詞を可視化(ダジャレ)してみたら面白いんじゃないか(←ダジャレが)と思いついたので、早速作ってみた。
コードはこんな感じ。
# -*- coding: utf-8 -*- require 'MeCab' require 'kconv' require 'rubygems' require "graphviz" c = MeCab::Tagger.new("-O wakati") lyrics = open(ARGV[0]).read.toutf8 words = c.parse(lyrics).split(" ") nodes = Hash.new([].freeze) preword = "" words.each do |word| nodes[preword] += [word] if preword != "" preword = word end GraphViz::new("G", {:type => "digraph", :use => "dot", :output => "png", :charset=>"utf8", :file => "#{ARGV[0]}.png"}) {|g| g.node[:fontname] = "osaka" nodes.each do |parent, children| p = g.add_node(parent) children.map {|child| g.add_edge(p, g.add_node(child)) } end }.output()