『入門ソーシャルデータ』2章メモ ( #social_data )
『入門 ソーシャルデータ』真面目に勉強する会
木曜の夜、「第2回『入門 ソーシャルデータ』真面目に勉強する会」に参加してきました。
前半は、[twitter:@iwaim]さんの発表を聴きました。2章の内容を分かりやすくまとめてくださいました。また、本のとおりにやるとハマるポイントとその回避策も紹介してくださり、助かりました(原著の出版から1、2年たっているため、本文で扱っているAPIの仕様や、例として出されたWebサイトが、少し変更されています)。
後半は、皆で黙々と手を動かす時間でした。自分は2章本文の写経をしました。
最後に、各自何をしていたかを発表する時間がありました。本から発展したことに取り組んだ上で、使ったツールやライブラリを紹介してくださる方もいて、とても参考になりました。
主催の[twitter:@Kshi_Kshi]さん+一緒に勉強されている学生の皆さん、会場提供してくださったVoyage Groupさん、参加者の皆さん、ありがとうございました。
というわけで、勉強会で学んだこともまじえつつ、第2章のメモを書きます。
2章メモ
「ソーシャルデータを扱う」と一口にいっても、その作業は、収集、分析、可視化などのフェーズに分割されます。『入門ソーシャルデータ』の第2章は、「どんなデータをもとにデータを収集可能か」の一例と、可視化のための最も簡単なツールを紹介する章でした。
「どんなデータをもとに」の例として、Webページにデータを埋め込むためのマイクロフォーマットと呼ばれる技術が出てきます。規定のフォーマットでデータを埋め込んでおくことで、Webページの外から機械的に収集、分析することができます。これらは、検索やソーシャル系のサービスに活用されているそうです。
本文には、具体的なフォーマットであるXFN、geo、hRecipe、hReviewの簡単な解説と、実際に(単独の)Webページをスクレイピングしてそれらのデータを取り出すコードが載っています。
Cytoscape
さて、1章のメモで書いたとおり、GVEditの出力がいまいちです。なんせデフォルトでコレ。
良く言えばシンプル・・・? でしょうか?
そこで、勉強会でどなたかが紹介してくださった、Cytoscape(http://www.cytoscape.org/)を使ってみました。
本文の例である「XFNを使ったソーシャルなつながり」をそのまま入力とします。
ただし、Cytoscapeはdotファイルを読み込めないので、networkxでGML形式に変換します。(参考: Google グループ)
サンプルコードでnx.drawing.write_dot関数を使った箇所を、
OUT = "graph.dot" (中略) nx.drawing.write_dot(g, os.path.join('out', OUT))
nx.write_gml関数に置き換えるだけ。
OUT = "graph.gml" (中略) nx.write_gml(g, os.path.join('out', OUT))
こうして出力したgraph.gmlを、Cytoscapeの[File]→[Import]から読み込みます([Open]メニューからは、Cytoscape Session files(.csf)しか開けません)。
なるほど、こっちの方が素敵です ;-P
geo
geoは、緯度と経度で位置情報を表すマイクロフォーマットです。
本に掲載されたサイトからは現在データが取得できなくなっているので、geoデータを提供している他のサイトを探しました。しかし、見つけるのに難儀しました。国内の有名な大学のサイトや、国会図書館、国土地理院(←期待したが甘かった)などを当たってみましたが、軒並み使っていません。
結局、下記のサイトが提供しているサンプルページから取得しました。
また、iwaimさんの発表であったとおり、リクエストのユーザーエージェントを偽れば、Wikipediaから引っ張ってくることもできました。Wikipediaは、API経由以外でのデータ取得を弾いているそうです。
hRecipeとhReview
hRecipeはレシピ情報を、hReviewは評価記事を表すマイクロフォーマットです。
ちょっと本文のコードの話。itemクラスの取得コードも、(監訳者注で解説があったrevirwerクラスと同じく)エラーを吐きます。
item = hreview.find(True, 'item').text
取得先のページで、itemクラスの実装がなくなっているようです。そのため、この箇所は削除して実行しました。
・・・ところで、本の中で例として挙げられていたのは、もちろん外国のレシピサイトでした。
国内サイトで、hRecipeはどれくらい使われているのでしょうか?
Googleで料理名を検索すると、レシピによる絞込みができます。この左側の部分ですね。
もしかして、このパラメータ変更に追随してくる検索結果のページでは、hRecipeが使われてる??
勉強会でもそういう話があったので、「豚の角煮」のレシピ検索で結果が変動したサイトのコードを確認してみました。
実際、ぐるなびレシピ、味の素、AllAboutのレシピページなどのコードでは、hRecipeが使われていました。
- http://recipe.gnavi.co.jp/recipe/5591.html
- http://www.ajinomoto.co.jp/recipe/card/703500/703349.asp
- http://allabout.co.jp/gm/gc/374047/
しかし、クックパッドやキッコーマンのサイトでは使われていないようです。Google先生は、hRecipeなしのページからも、データを取ってきているんですね。
余談ですが、豚の角煮は、安全ちゃんのレシピ(http://dailyvitamin.jp/2010/06/7636/)で作ると美味しいです。
Social Graph API
2章の最後で触れられているGoogleのSocial Graph APIは、タイミングよく廃止のお知らせがありました。
TwitterやFlickrの上での、人びとのつながりをグラフで表すためのAPIは、4月20日をもって廃止される。このAPIを使うとデベロッパは、ユーザに関する情報を取り込んで自分の製品をより便利にできるが、Googleによれば、”期待したほど利用されていない”。
Googleがまたまたぜい肉落とし……6製品を整理 | TechCrunch Japan
あらま。。。
2章はこんな感じでした。
(追記: 2012/01/23)誤字修正しました。iwaimさん、ご指摘ありがとうございます。