More Related Content
Similar to Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Similar to Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました― (20)
More from Hisao Soyama (10)
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
- 4. このスライドの目的
● とある元院生の修論体験記を通して
– Pythonのステマをする
– ソーシャルデータ分析に便利なツールを知る
– 実際のソーシャルデータ分析の流れを知る
● ただし自己流ですが
- 5. 修論の概要
● Twitterの分析
● リスト機能を使って自分とこの学生のアカウ
ントを抽出
● 2010年12月~2011年9月の期間、プロ
フィール、フォロワー、ツイート等を取得
- 6. ● スケールこのくらい
– アカウント数:1,631
– ツイート数:1,174,684
● このデータをもとにテキストマイニングやっ
たりクラスタリングしたりネットワーク分析
やったり
- 7. 下準備
● 研究テーマどうしよう?
– 適当にTwitter API叩いてたら楽しかったので、
適当にデータ取って分析でもするか
● 言語なにつかおう?
– Python!!!!
– 先生がPythonの人だったので
- 8. データの収集
● Twitter APIからデータ取得
● 取り始める前に考えよう
– 闇雲に集めても意味ないよ!
– 分析対象は誰?何?
● ランダムサンプリングはあんま意味ない
– ネットワーク分析できないし……
– 対象となるトピック、コミュニティを絞ろう
- 9. ● 生のAPI叩くより、各言語のラッパー使った
方がお手軽
– PythonならTweepyがお勧めらしい
● ただし自分はラッパー使いませんでした
– BASIC認証からOAuth認証に完全移行した直後
で、まだ対応してなかった、、、
– urllib, urllib2, oauth2などでゴリゴリと
- 10. Twitter APIの注意点
● 1時間に350回しかAPI叩けない
– 3垢作って回す
– 毎月1日にデータ取得した
– 日付変わると同時にスクリプト回す。昼前には終
わる
● よく落ちる(今は知らん)
● 仕様変わる(仕方ないけど)
- 11. データの永続化
● 何も考えずにMySQLを使った
● 今やるなら絶対にMongoDB使う
– JSONでデータ取ってそのままぶち込むだけ。ス
キーマレス最高!!!
– MySQLだといちいちデータの形式に合わせてス
キーマ定義するのめんどい
- 19. 分析するぞオラァ!!!!!
● まずはグラフ描くよね
– フォロー数、フォロワー数の分布
– 1ヶ月のツイート数
– こいつらの相関
● matplotlibを使いましょう
– Pythonのグラフ描画ライブラリ
- 21. ● テキストマイニングでもやるか
● ツイート内容でユーザー分類できたら面白い
よね
● MeCabで形態素解析
– ツイートを単語に区切る
● ユーザごとの名詞の使用頻度を算出
● k-meansでクラスタリング
- 22. cluster 0 cluster 1 cluster 2 cluster 3
・・・(名詞) 私(名詞) 僕(名詞) 俺(名詞)
ゆう(動詞) わたし(名詞) 日本(名詞) ww(名詞)
俺(名詞) lt(名詞) ありがとうございます(名詞) 僕(名詞)
ラーメン(名詞) ありがとう(名詞) ブログ(名詞) マジ(名詞)
ちょっと(名詞) gt(名詞) 考える(動詞) www(名詞)
リアル(名詞) ちゃう(動詞) 本(名詞) at(名詞)
一橋(名詞) うち(名詞) 仕事(名詞) 飲む(動詞)
嘘(名詞) 食べる(動詞) 問題(名詞) やつ(名詞)
食べる(動詞) バイト(名詞) 学生(名詞) 誰(名詞)
まあ(副詞) ちゃん(名詞) 者(名詞) リア充(名詞)
円(名詞) がんばる(動詞) 性(名詞) 卒論(名詞)
とりあえず(副詞) かわいい(名詞) the(名詞) バイト(名詞)
わかる(動詞) ふる(動詞) ため(名詞) 食う(動詞)
なに(名詞) みんな(名詞) 読む(動詞) 君(名詞)
寝る(名詞) 好き(名詞) 書く(動詞) わかる(動詞)
大学(名詞) 楽しみ(名詞) 必要(名詞) 行く(名詞)
曲(名詞) 先輩(名詞) 会(名詞) 友達(名詞)
怖い(形容詞) 素敵(名詞) 話(名詞) やっぱ(副詞)
無い(形容詞) ほんとに(副詞) ところ(名詞) とく(動詞)
帰宅(名詞) こ(名詞) おれ(名詞) 奴(名詞)
- 23. ● MeCab-pythonで形態素解析
● PyClusterでクラスタリング
● どっちもCで書いてあるから実行早い!!
- 28. 本格的に分析しましょう
● 中間発表乗り切ったので、本腰入れて分析し
よう!!!
– 発表終わった直後にPS3買いに走ったのは内緒だぜぇ
● データクリーニングしないと
– ウチの学生じゃない垢含まれてる
– プロフィールでだいたい判別できるかな?
- 29. ● 正解データ100個ぐらい用意してベイズ分類
器でも作るか?
– 精度低そう
● たかだか2,000アカウントぐらいだし、手作
業でやっちゃえ!!!!
● 大量のプロフィールを「正解」「不正解」
「判別不能」に分類
● 2日ぐらいで終わったからよかったよね
- 30. ゴールが見えてきたぞ!
● ユーザのクラスタリング
– 情報発信クラスタ
– 日常会話クラスタ(男)
– 日常会話クラスタ(女)
– 中間クラスタ
● 利用形態違うよねー
– 情報発信はRT多い、PC使う
– 日常会話は@多い、スマホ使う
- 32. ● 「片想い」に注目
– Facebookは対称
– Twitterは非対称
● 情報発信する人ほど、片想い/片想われの比
率が高い
– Twitterが情報発信によく使われるのって、関係
が非対称だからなのかなー
- 33. ● ネットワーク分析もやりましょう
– 利用目的違う人たちって、ネットワーク上の分布
も離れてるのかな?
● networkX!!!!!!
- 36. ● 情報発信する人たちはやや固まる傾向
– 他はバラバラ
● とはいえ、違う利用目的の人も活発に交流し
てるみたいだねー
- 38. vs. C, Java, ...
● Pythonの方が覚えるのが楽チン
● コーディングも楽
● もちろん実行速度は遅いけど……
- 39. vs. Ruby, Perl, ...
● Pythonは分析系のライブラリが豊富
– Numpy, Scipy
– matplotlib
– NLTK
– networkX
● オライリーのいい感じの本はだいたいPython
- 41. vs. R
● 最大のライバル!!!
– 向こうはライバルと思ってないだろうけど……
● 統計計算に特化してるだけあって、Rはすっ
ごく手軽に計算できる
- 42. ● でも、実はRって大規模データに向いてない
んだよね……
– メモリがすぐに溢れる
● Pythonの方がメモリの扱いはお上手な気がす
る
● Pythonだと API叩いてデータ収集→DBに保
存→分析→グラフ描く まで1つの言語でで
きる!!!
- 46. 修士号取るまでが修論です
● TeXで書きました。Wordなんか使ってられ
るか
● 製本出して提出すれば、あとは最終試験ある
のみ!!
– 先生の前でプレゼンして質疑応答
– 先生優しいし、楽勝だろ(ホジ
- 50. 結論
● Pythonは便利
● 日頃の行いが良くない人には報いが訪れる
– 神様っているんだね!!!
– 報いに備えてバックアップを
● 分析して終わり ではダメ
– 論文とか、報告書とか、企画書とか、ブログとか