ただの適当な開発記

会社勤めしつつUnityでアプリ作ってる人の雑記

RubyとLINE履歴で遊ぶ(顔文字編

LINEって履歴をテキストファイルで保存できるじゃないですか。
なんか遊べないかなってことで顔文字の出現頻度を出力してみました。
適当なグループの会話を使ってます。
履歴はlinetalk.txtとして保存 

コードこんな感じ

・face_check.rb

dic = Hash.new(0)
while line = ARGF.gets
    if seed = /(¥(.*?¥))/.match(line)
        match_words = seed.captures
        match_words.each do |word|
            dic[word] += 1
	end
    end
end
puts dic.sort { |a,b| b[1] <=> a[1] }[0...30]

linetalk.txtを引数にして

ruby face_check.rb linetalk.txt

を実行

結果こんな感じ

f:id:cocokyoro:20140410034622p:plain

みにくー
あと正規表現の精度が低いですね。
(((o(*゚▽゚*)o)))の顔文字が(((o(*゚▽゚*)になってるし。。
下の方で(月)とかもカウントされてます。
whileの中もわかりにくい

というわけでお次はこのコードをリファクタリングしていきます。
発言者ごとの頻度分けもしたいですね。

http://melborne.github.io/2013/04/26/find-most-frequently-words-with-ruby/
こんなところに参考になりそうなサイトが・・・!
とか言いながらこの記事がまとまった電子書籍を既に買ってあったりします。
てか上のソート部分とかそのまま使わせて頂いております。
これを見ながらこのコードをよりオブジェクト指向的にしていきたいです。

続きはまた今度。おやすみなさいー