絶賛就職活動中。
こんにちは、就職活動まっただ中でございます。今日は自己分析のために自分のツイートを分析してみた。
ただMeCabとか使って単語をカウントするだけだと見栄えが悪いのでワードクラウドにしてみることにした。
ワードクラウドとは
ワードクラウドとは…単語のカウント数に応じて文字の大きさが変化し,いろんな方向に表示されたデザイン。
まあこんなヤツのことをいいます。というよりこれが分析結果。
何故か地名が多い…思考がばれるw
データの作成(単語のカウント)
全ツイートの取得はTwitterのアカウントの設定からcsvファイルでダウンロードできた。
データの作成はPythonで行った。csvファイルにcount(単語のカウント数)とword(単語)の1組で並ぶフォーマットにしたかった。
count,word 51,岡山 40,熊本 35,日本 34,ユナイテッド 31,東京
#coding: utf-8 import MeCab import pandas as pd import re def parse_tweet(text, words): mt = MeCab.Tagger ("-Ochasen") res = mt.parseToNode(text) pattern = re.compile("[!-/:-@≠\[-`{-~]") pattern2 = re.compile("[!-~]") while res: if res.feature.split(",")[1] == u"固有名詞".encode("utf-8"): if not(pattern2.search(res.surface)): words.append(res.surface) res = res.next if __name__ == "__main__": data = pd.read_csv("tweets.csv") texts = data.text words = [] texts = texts.values for text in texts: parse_tweet(text, words) count = [] word = list(set(words)) for w in word: c = words.count(w) count.append(c) df = pd.DataFrame({'word' : word, 'count': count}) df = df.sort('count', ascending=False) df.to_csv('wc_result.csv', index=False)
結果をwc_result.csvというファイルに書きだした。
d3-cloud
D3.jsとd3-cloudというワードクラウドのプラグインを使ってワードクラウドを作成。 カウントした結果をSVGに描画するwordcloud.jsを書いていく。
d3.csv("wc_result.csv", function(data){ var h = 800; var w = 800; data = data.splice(0, 200); var random = d3.random.irwinHall(2) var countMax = d3.max(data, function(d){ return d.count} ); var sizeScale = d3.scale.linear().domain([0, countMax]).range([10, 100]) var colorScale = d3.scale.category20(); var words = data.map(function(d) { return { text: d.word, size: sizeScale(d.count) }; }); d3.layout.cloud().size([w, h]) .words(words) .rotate(function() { return Math.round(1-random())*90; }) .font("Impact") .fontSize(function(d) { return d.size; }) .on("end", draw) .start(); function draw(words) { d3.select("svg") .attr({ "width": w, "height": h }) .append("g") .attr("transform", "translate(150,150)") .selectAll("text") .data(words) .enter() .append("text") .style({ "font-family": "Impact", "font-size":function(d) { return d.size + "px"; }, "fill": function(d, i) { return colorScale(i); } }) .attr({ "text-anchor":"middle", "transform": function(d) { return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")"; } }) .text(function(d) { return d.text; }) .on("click", function(d, i){ var url = "http://www.google.co.jp/search?q=" + d.text window.open(url, "_blank");[f:id:h-piiice16:20160218224644p:plain] }); } });
【D3.js】「全ツイート履歴」からWord cloudを作ってみた。 のスクリプトを参考にさせてもらいました。 またワード一つ一つにgoogleでの検索結果のリンクを付随してみた。
このデザイン好きなのでまた機会があったら使ってみたいと思った!