大阪Pythonユーザの集まり2014/10 
ツイートの取得と解析の間 
nemupm 
はざま
簡単に自己紹介 
修士1回の大学生です. 
データマイニングを研究してる関係で 
Pythonを使ってます. 
プログラミング系の勉強会は初めてです! 
@nemupm
本日喋りたいこと 
ツイート研究の概要 
研究を進める上で技術的に困ったこと
Twitter
Twitterとは… 
140文字のコミュニケーションツール 
幅広い使い方が可能 
不満の捌け口 
犯罪の自慢
Twitterとは… 
普段の趣味や生活に基づくツイートが投稿される 
ユーザの関心がツイートから分かる!
ユーザの関心が見れるWebサービス 
シロくも 
- 興味のある単語をワードクラウドで表示
ユーザの関心が見れるWebサービス 
ツイートプロファイリング 
- 興味をジャンルで分類
一体どうやってツイートを取得しているの?
Twitter API 1.1
Twitter API 1.1 
ツイートの取得や投稿など 
基本的な情報をJSONでやり取り 
REST API とStreaming APIがある. 
OAuth認証を利用 
ライブラリはTweepyなど.
しかし… 
TLの取得回数制限 
という壁が存在
TLの取得回数制限 
TLの取得回数制限が15分に180回まで 
同IPによるツイート取得リクエストは 
最大で200件×180回/1h 
ツイートの最大取得数は3200件/1アカウント 
- 自分のアカウントは全TL取得可能
研究者としては 
「せっかくこんなに沢山のユーザが居る」のに 
取得制限があるなんて 
ナンセンスだ!!
TLの取得回数制限 
TLの取得回数制限が15分に180回まで 
同IPによるツイート取得リクエストは 
最大で200件×180回/1h 
どうにかしたい 
ツイートの最大取得数は3200件/1アカウント 
- 自分のアカウントは全TL取得可能
200件×180回/1h は 
Twitter API 1.1の制限 
APIの制限だから仕方ない… 
・・・APIの制限? 
じゃあAPI使わなければ? これだ!!
クローリング
クローリング準備 
ブラウザでTLを見る&遡る時の 
リクエスト・レスポンスの内容を調べる.
クローリング準備 
ブラウザでTLを見る&遡る時の 
リクエスト・レスポンスの内容を調べる. 
GET 
20のツイートと 
max_idが埋め込まれたHTML 
max_idを指定してGET 
追加分の20のツイートが 
埋め込まれたHTMLと 
max_idパラメータ・ 
・
実装 
実装ですることは2つ 
リクエスト・レスポンスの処理 
HTMLのパース
リクエスト・レスポンスの処理 
requestsライブラリの利用 
使い方が直感的! 
書くのはこれだけ! 
ses = requests.session() 
res = ses.get(url, params, headers)
HTMLのパース 
HTMLParserライブラリの利用 
先頭から順に読み込んでいく 
開始タグ・終了タグ・中のデータを 
処理するメソッドをオーバーライドしてinstance化 
正直面倒くさい…
結果 
約3000件のツイートが1分で読めるように! 
※これ以上出来そうな気がしましたが 
sleep()で自重しています.
結果 
今までは一時間で… 
200件×180回=36000件 
これからは… 
5倍! 
20件×150回×60回=180000件 
苦労した割にショボイ
せっかく取得したので 
簡単に解析してみます.
ツイートの解析 
MeCabの利用 
日本語の形態素解析に最もよく用いられるツール 
ツイートから名詞だけを抽出
ツイートの解析 
TFIDFの利用 
特徴語の抽出に最もよく用いられるアルゴリズム 
特徴語のスコア: 
対象ユーザがその単語をツイートした回数 
TF 
その単語をツイートしたことがある人数の割合(レア度) 
DF
ツイートの解析 
TFIDFの利用 
特徴語の抽出に最もよく用いられるアルゴリズム 
特徴語のスコア: 
対象ユーザがその単語をツイートした回数 
TF 
その単語をツイートしたことがある人数の割合(レア度) 
DF 
珍しい単語を頻繁に使うほど 
関心が強いはずだ!!
あれ? 
でも各単語のレア度ってどうやって計算するの? 
既存研究者 
1万人?? 
1万人の 
ツイートデータがあれば 
計算できるよ~ 
by Polish Institute of International Affairs
クローリング
1~2週間のクローリングの後 
計算終了
実際に適用 
なら 
寝 
早く 
なかなか 
デモンズソウル 
将棋ウォーズ 
そのまま 
多少 
少し 
icpc 
カープ 
院試 
そんな 
棋譜 
銃規制 
マンu 
こんな 
ymca 
研究室 
デモンズ 
サーバ 
再帰 
増え 
見 
ウイイレ 
サンフレッチェ 
小島 
居 
lda 
python 
東海自然歩道 
アカリク 
fifa 
cloud 
天鳳 
インテル 
weaver 
グループワーク 
セカイカメラ 
喜連川 
まあまあ。
まとめ 
requests便利! 
- pythonのライブラリ頭良いなと思った 
Twitter社さん、ありがとう
ご清聴ありがとうございました!
photo credit 
The Aggressive Black Drongo! By Vinoth Chandar 
11th Grade - First Day of School By Mitchell Joyce 
Wretched By Piers Nye 
Dr. Michael Bravo, Scott Polar Research Institute, University of 
Cambridge 
By Polish Institute of International Affairs

ツイートの取得と解析の間