Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

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()

で、題材にしたのは、Perfumeポリリズム。↓これね

で、歌詞を可視化(←笑うところ)してみたのは↓これ。

歌詞の通り、面白いように繰り返してる様がみてとれますね。