Chapter 4: Twitter: Friends, Followers, and Setwise Operations

RESTful and OAuth-Clasdded APIs

(メモ) REST については,"山本陽平,Webを支える技術,技術評論社 (2010)" を読む方が早いし,詳しい.

  • 本書で用いるクライアントでは,Pythontwitter パッケージを用いる.
  • Twitter API の概要および Twitter API "/users/show" を利用してユーザ情報を得るコード例.
  • OAuth 2.0 による認証・・・かなり詳しく書いてある.

A Lean, Mean Data-Collecting Machine

  • 以下を含む Python コード ・・・ OAuth による認証; Twitter API の /friends/ids メソッドによる friend's ID の取得;401 error (Not Authorized) と 503 error (Over Capacity) への対処
  • twitter.oauth モジュールは,OAuth token および PAuth token secret のローカル上での読み書きをサポートしているから,うまく使え(毎回,PINコードを入力するのは面倒でしょう).しかし,そのコードは本には載っていない.
A Very Brief Refactor Interlude
  • リファクタリングとして,OAuth による login(),エラーハンドリングも含めた makeTwitterRequest() を別建ての関数にする.
Redis: A Data Structure Server
  • Twitter API を利用して入手したデータをローカルに保管するため,Redis(Data structure server; http://redis.io/)というオープンソースの key-value store を利用する.また,Python は Redis へのアクセス手段をパッケージにより提供している.

(メモ)この辺りから,Redis のメソッドが出てきて(自分の場合)コードの見通しが悪くなった.

Elementary Set Operations
  • 集合(set)の操作である共通集合,和集合,差集合について,friends 集合と followers 集合を用いて説明.例えば,cap (friends, followes) は相互にフォローし合っている関係.
Souping Up the Machine with Basic Friend/Follower Metrics
  • Redis の提供する集合演算を利用して,# of friends, # of followes, # of (friends - followes), # of (followers - friends), # of mutual friends を求める.
  • /usr/lookup メソッドを用いて,ユーザ ID を screenName へマッピングし,各ユーザのユーザ情報を取得する.(ただし,ユーザ情報は Redis に保管されてデータを用いる)
Calculating Similarity by Comupting Common Friends amd Followers
  • (セクション・タイトルどおり)2人のユーザ間で共通する friends および followers を同定し,それらの screenName を列挙する.
  • "calculating similarity" とあるが,similarity を定量的に算出している訳ではない.
Measuring Influence
  • フォロワーが多いユーザほど,彼のツイートがリツイートされる可能性が高まる.ユーザの影響度を測定するため,フォロワー数を用いるのは簡単.
  • ユーザの潜在的影響度を測定するには,(フォロワー数のみでなく)ユーザ間のネットワークを考慮する必要がある.
  • 影響度を測定したいユーザを起点として,幅優先探索で friends / followers のユーザ情報を取得する.

-(メモ)Example 4-9 の "Calcurating a Twitterer's most popular followes" のソースコードを理解できない.→ このサブセクション,撃沈.→ 後で読み返す!

Constructing Friendship Graphs

  • セクション・タイトルどおり,friends 関係をグラフにする.Redis からデータを取り出して networkx へ渡す処理の繰り返しである.
Clique Detection and Analysis
  • social web において,クリークは「互いに友人関係にあること」を意味しており,最大クリークは「共通の友人関係の最大集合」を表す.
  • クリークを見つけることは NP 完全問題だが,networkx は find_cliques メソッドを提供している.
  • Example 4-11 は,最大クリーク・サイズや平均クリーク・サイズを求める,簡単なプログラム例.
The Infochimps "Strong Links" API

(メモ)infochimp のアドレスは,書籍では http://infochimps.org/ だが,アクセスすると http://www.infochimps.com/ へリダイレクトされる.
(メモ)Infochimps の Strong Links API を用いるのは,本書で述べた解析手法の健全さをチェックすることにある.

  • infochimps は(過去も含めた)大量の Twitter データを有し,かつそれを操作する API を提供している.その中でも,Strong Links API (http://api.infochimps.com/describe/soc/net/tw/strong_links/) は「最も頻繁に検索されたユーザ・コミュニティに属する(?)ユーザ・リスト」を返す API である.
  • Strong Links API を利用するためには,(無料の)ユーザ登録が必要.
  • Strong Links API の返す結果に含まれるユーザとして,Tim O'reilly の tweet を頻繁に retweet しているユーザ群が見られる.
Interactive 3D Graph Visualization
  • Ubigraph を利用すると,3次元グラフを作れる.Twitter 解析の本質的でないから流し読み.