概要
やったことは表題の通り。
データの取得方法はStreaming APIを利用してPublic Timelineを流れた日本語(ひらがな)を含むツイートを保存した。
総ツイート数は100124、期間は途中タイムアウトなどで接続が切れたりして連続していないが12.4.17の16時〜22時である。ツイートはサンプルしたものでその期間中ツイートされたすべてのツイートをあらわすものではない。
Streaming APIの利用法
下記を参考にした。
kk6のメモ帳 tweepyがUser Streamsに対応していた
tweepyでOAuthを試してみた
結果
横軸はツイート長(文字数)、縦軸はツイート数である。
140を超えているグラフは140文字ぴったりのツイートである。
まあまあきれいなポアソン分布を描いている(よね?)。
140文字付近でグラフが増えるのはそれ以上の文字数を書きたいという欲求が切り詰められているように見える。
ソースコード
なんかひどい。
# -*- coding: utf-8 -*- import re import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 141, 10) y = np.zeros(15) l = re.compile("<") r = re.compile(">") for line in open("./tweets.txt", "r"): line = r.sub(">", l.sub("<", line.strip())) y[(len(line.decode("utf-8"))/10)] += 1 plt.bar(x, y, 10) plt.show()
おまけ
バズワードの割合を調べてみる。
ホモォ:ホモを求める腐女子のgifアニメ作りました。ほんの冗談なんで怒らないでください。(リンク消失)からバズった言葉。
雷:この日関東地方は非常に天気が悪く雷が降っていた。
割合は百分率。ホモォは16日から流行りだしていたので健闘したほうなのか。
# -*- coding: utf-8 -*- import re from itertools import ifilter homo = re.compile(r"(ホモォ|ホモォ)") kaminari = re.compile(r"雷") lines = [line for line in open("./tweets.txt", "r")] print float(len(list(ifilter(lambda x: homo.search(x), lines))))/len(lines)*100 # => 0.562302744597 print float(len(list(ifilter(lambda x: kaminari.search(x), lines))))/len(lines)*100 # => 1.0996364508