[Social] XFNによるソーシャルなつながりの解析 (Cygwin/python)
■XFNによるソーシャルなつながりの解析 (Cygwin/python)
[amazon_enhanced asin=”4873115132″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]
オライリーの入門ソーシャルデータ
を実際に手元にある Windows マシンで試したいと言う友人がおり、日頃似たようなテーマでソーシャル・ストリームをソースにした各種解析を実施している自身のニーズとマッチしたので、本 blog を通じてその内容を紹介したい。
===
■環境
cygwin で python が使える環境で、普通にソースが読める程度。
(ソースを読み、参照している関数を easy_install で追加するなど、その程度)
easy_install でミススペルしてるんじゃないか?というメッセージが出た時は、
http://pypi.python.org/simple/ ここを見て適切な文言に直してください。
http://pypi.python.org/simple/ ここを見て適切な文言に直してください。
—
■ソース入手
ギットハブから必要となるソースを得る。その他、本書で指定されたユーティリティや関連情報から適宜入手しておくこと。
—
■ソース修正
基本不要。
強いて言うならば、UTF-8 エンコードになっているかの確認くらい。
—
■[幅優先探索を使って XFN リンクをクロール microformats__xfn_crawl.py ] を試す。
特に悩むところはないので、例題通り実施する。
(赤字箇所が実際に入力する内容。引数として XFN情報を持つURLを渡すこと)
Tue Dec 27 13:35:28 ~/social/ptwobrussell-Mining-the-Social-Web-a1118d8/python_code/
yukio@Lets-note:$ python microformats__xfn_scrape.py http://www.almaer.com
(このクロールを実施すると ./out/ へ out.graph が生成される。生成される内容は次の枠線内)
補足:ノードとエッジで label 特性が使用されている。実際に [label=”*”]; として直列化されていることが結果からも明らかである。(DOT言語として必須要件)
strict digraph { “index.xml” [label=”All Entries”]; “http://www.almaer.com/blog/” -> “index.xml” [label=”me”]; “http://friendfeed.com/dion” [label=”FriendFeed”]; “http://www.almaer.com/blog/” -> “http://friendfeed.com/dion” [label=”me”]; “http://ajaxian.com/” [label=”Ajaxian”]; “http://www.almaer.com/blog/” -> “http://ajaxian.com/” [label=”me”]; “/blog/category/personal/feed” [label=”Personal”]; “http://www.almaer.com/blog/” -> “/blog/category/personal/feed” [label=”me”]; “http://twitter.com/statuses/user_timeline/4216361.atom” [label=”My Tweets”]; “http://www.almaer.com/blog/” -> “http://twitter.com/statuses/user_timeline/4216361.atom” [label=”me”]; “http://profile.to/dion” [label=”Facebook Profile”]; “http://www.almaer.com/blog/” -> “http://profile.to/dion” [label=”me”]; “/blog/category/tech/feed” [label=”Technical”]; “http://www.almaer.com/blog/” -> “/blog/category/tech/feed” [label=”me”]; “http://almaer.com/blog/comments/feed” [label=”Comments”]; “http://www.almaer.com/blog/” -> “http://almaer.com/blog/comments/feed” [label=”me”]; “http://www.google.com/reader/public/atom/user/13910122292257868277/label/dion” [label=”Activity Stream”]; “http://www.almaer.com/blog/” -> “http://www.google.com/reader/public/atom/user/13910122292257868277/label/dion” [label=”me”]; “http://www.linkedin.com/in/dalmaer” [label=”LinkedIn Profile”]; “http://www.almaer.com/blog/” -> “http://www.linkedin.com/in/dalmaer” [label=”me”] } |
※もし、XFN データを含まない URL を指定すると次のように digraph 入れ子が空っぽのものが生成されます(これは本書に記載ありませんが、python など LL言語を普通に使える方を想定しているからだと思います)
strict digraph { } |
↓ (次にグラフ描画するため、circo コマンドを実行する)
Tue Dec 27 13:35:28 ~/social/ptwobrussell-Mining-the-Social-Web-a1118d8/python_code
yukio@Lets-note:$ circo -Tpng -Ograph ./out/graph.dot
本書 P.31 の原図が生成されたことが分かります。
本書では、図 2-1 Ajaxian の XFNデータの有向グラフですが、ここでは波及する人名をここで公開するのは気が引けたので「me」は何に有向しているのかを描画しました。
詳しくは本書をご覧ください。
===
Windows でも何ら遜色なく例題を進められることを確認しました。
以上