GoogleMapとTwitterであなたの回り半径3kmで起こっていることを調べる

GoogleMapAPIを使ってみることにした。JavaScriptはよく分からないのだが、Googleが公開しているサンプルコードをそのままコピペしてみるときちんと動作した。GoogleMapはKMLというファイルを読みこんでレイヤー表示することができる。何かできないかなあと思って、以下の要領で試してみた。

  • まず、GoogleMapAPIを使って任意の場所の座標を調べる。
  • 次にTwitterAPIを使って任意の場所の周辺で呟かれたツイートを抽出した。式はhttps://api.twitter.com/1.1/search/tweets.json?count=100&geocode=35.6625031,139.73192029999996,2kmのように書く。これは六本木6丁目の周囲2kmで呟かれているツイートを抽出せよという意味だ。位置情報を示すデータはgeocodeと呼ばれる。
  • このデータをKMLというファイルに整形する。手作業でやるのは大変なので予めプログラミングして置くとよい。
  • このKMLファイルをGoogleMapに読み込ませて表示する。下記のような画面が得られた。
  • このプログラムはバージョン2でも3でも動作した。2はかなり昔に終っているバージョンのはずだが未だに動かしてくれているらしい。古いAPIを切り捨ててしまうサービス(例えばTwitterやFacebook)もあるので、有り難い限りだ。

googlemapKMLファイルはかなり強力にキャッシュされるらしい。頻繁に情報が更新されるデータなどに使うのはやめた方がよさそうだ。CData形式にしておくと、httpで始まるテキストには自動でリンクが貼られている。

場所付きのデータはかなり多く見つかった。最近流行っていると思われる、スマホを使って場所をチェックインするサービスが普及しているようだ。たいていのデータは「どこで買い物をした」とか「どこで食事をした」などといったたわいもないものだった。イベントなどがあれば参加者の反応を見る事ができて面白いのかもしれない。

意外に思われるかもしれないが、これらのツイートのほとんどが公開されており、誰でも利用することができる。個人情報とか守秘義務などを気にする人はGPS機能を切っておいた方がいいのかもしれない。

KMLファイルは手動で作る事もできるが、最近のスマホカメラ(iPhoneやiPadなど)には最初から場所のコードが添付されている。これをPicasaにアップロードする。PicasaにはKMLファイルを出力するオプションがあり、コメントなども付加することができるので、プログラミングなしで情報の共有地図を作る事も可能だ。災害情報を近所と共有したり、お薦めのお店マップを作ったりと様々に応用できそうだ。

Twitterを使ったお手軽テキストマイニング

Twitter APIを使うと、特定の用語を含むツイート(直近100件)を抽出することができる。式はhttps://api.twitter.com/1.1/search/tweets.json?count=100&q=内閣改造のような形式だ。

本来なら、取得したデータを品詞ごとに分解してネットワーク解析を行う必要がある。Rを使うRMeCabというパッケージが有名だが、最近更新が止まっているらしい。いずれにせよ素人にはなかなかハードルが高い作業だ。そこで「無料ツール」を探したところ、オンラインで形態素解析をしてネットワーク図まで作ってくれるツールを見つけた。どの用語が使われているかを品詞ごとに分解してダウンロードすることもできる。

内閣改造を検索したところこのような結果が出た。もっぱらの噂は新しい農水大臣森山裕氏だ。どうやら暴力団絡みの黒い噂があるらしい。検索したところこのような記事が見つかった。河野太郎氏に期待が集っているように思えたので、ツイートを見てみると「生け贄として囲い込まれた」という記事が人気を集めているらしかった。何かと世知辛い。

他の政党に対するツイートの傾向は下記の通り。維新で検索すると西尾維新という小説家の名前の方が多くひっかかるという難点もある。

もっとも、Twitterで一度に取得できるツイート数の上限は100件なので、これくらいであれば手作業で見た方が早いのかもしれない。大雑把な傾向をテキストマイニングで見つけて、あとはコツコツと元データを当たるというのがいいのかもしれない。

CytoscapeとRでTwitterネットワークを概観する(技術篇)

Twitter APIでデータを集める。APIは JavaScriptや PHPからアクセスすることができる。最新版のRであれば直接アクセスすることも可能だ。今回は安保法制賛成派(右翼)と反対派(左翼)でそれぞれ4人を選びネットワークを作った。

TwitterデータからSIFファイルを作る。SIFファイルはusername1 follow username2のような形式をしている。

Cytoscapeに読み込ませて、並べ替え(Spring Embedなどを使う)て概要を掴む。データが大きくなると並べ替えに時間がかかるので、手作業で1名からフォローしているだけ、されているだけの人を取り除いた。

CytoscapeからGMLファイルを書き出す。

Rで読み込む。予めライブラリigraphを読み込んでおく。library(igraph) と read.graph(,format=”gml”)

コミュニティを調べるために下調べする。edge.betweenness.communityなどを使うが、いくつかの違った分類法を使うことができるが、方法によって精度や計算時間などに違いがあるらしい。

コミュニティを分割する。コミュニティの数が集約するまでNの数を増やして行く。詳しい事は分からないが、影響のないエッジを消していっているいるらしい。community.to.membership(g,data$merge,step=N)

データセットを作成する。data.frame(membership=d$membership,label=V(g)$label,betweenness=betweenness(g),closeness=closeness(g))

データセットを書き出す。write.table(df,file=”data.txt”)

エクセルなどに取り込んで betweennessで並べ直す。数値が大きければ中心にあることが分かる。

属性テーブルに編集し直すと(ID名 = メンバーシップ)Cytoscapeに取り込むことができる。ファイルの先頭に1行加えておくこと。それが属性名になる。

新しいビジュアルスタイルを加える。 Node Shapeを選び、Discrete Mappingを選ぶと属性ごとに色分けができる。Betweennessやclosenessを属性を利用して中心に近い円ほど大きく表示する事もできる。

手作業で並べたもの。大体正しくグループ分けされていることが分かる。ただし、異なるグループが共有されているアカウントはランダムにグループ分けされているらしい。黄色とオレンジが安保法案反対派(左翼)で、残りが安保法制賛成派(右翼)に属する。右翼は結びつきが薄いのでそれぞれ別グループを形成している。

colornetwork1

機械的(Spring Embed)に並べ替えたもの。

colornetwork3

Twitter上の左翼層と政権奪取構想

安保法制議論も一段落したので、Twitter上の右翼と左翼のつながり具合について調べてみた。前回の候補者の選び方を見直して、起点(0)が相互フォローしている安保法案に賛成の意見表明をしている人(右翼)と安保法案に反対の意見表明をしている人(左翼)を選んだ。その人たちがフォローしている人(1)を選んだ。1がフォローしている人を2として4までを辿った。選ぶ際に名前(反対派は「原発反対」とか「安倍を落とせ」などのフレーズを名前に入れている)を参考にしたので、ランダムというわけではない。

twitter_network2

前回と同じく左翼には強い関心の共有が見られた。大抵、反原発・反戦争法案などが見られる。時折、反TPPなどというフレーズもあった。いわゆる「左翼3点セット」だ。一方、右翼にはそれほど高い関心の共有は見られない。1組だけ関心を共有している人たちがいた。2と3の間には複数の共有アカウントがあり、反韓国・中国という話題を共有していた。中には反民主党というアカウントもあったが、彼らから見れば民主党は外国人(帰化はしているが)ばかりの「売国政党」だからだろう。左翼は特定の運動を通じて結びついているが、右翼の結びつきはそれほど強くない。

右翼は共有している政治家のアカウントも少なかった。唯一見られたのは安倍晋三と橋下徹という二大「強い政治家」だ。その他、片山さつきの名前もあった。左翼層は民主党(蓮舫、細野豪志)と社民党(福島瑞穂)などがフォローされている。今回選ばれなかったアカウントの中には「生活の党支持」を掲げているものもあるので、山本太郎などを支持している人もいるのではないかと思われる。

右翼層は、反韓国・反中国などで結びついている。いわば「ヘイト派」である。この人たちが明治憲法への回帰などの復古的な政策にどの程度同調しているのかはよく分からない。と、同時に左翼層の人たちも原発や戦争といった「汚い」ものを忌避しているのだが、それがどの程度共産主義(あるいは社会主義)への支持につながっているのかはよく分からないのである。左翼層は他人に対しての共感力が高いというわけでもないらしい。シリア難民保護や募金などと言った発想は見られなかった。

左翼層にとっての一番のチャレンジは考えを外に広げて行く事だろう。狭い共同体であることが予想され(検証は必要だろうが)るので、コミュニティとしての広がりはないのではないかと思われるからだ。「あの政治家は嫌いだ」と呟いているだけでは、議員を落選させることはできない。

左翼層は「原発・戦争・TPP」などの反対している。つまり、意識はなくとも「反米路線」と言える。政権を担当した党はどれも、自衛隊を認め、原発を容認するなど政権獲得後に親米・追米に路線転換している。すなわち、共産党が提案する「国民連合政府」がそのまま支持を集めることができるかは、はなはだ疑問である。また、こうした層がどの程度幅広く存在するかはまだ未知数だ。

顕在化した層は「好き」ではなく「嫌い」で結びついている。かつての無党派層が「官僚への敵意」で投票行動を起したのを思い起こさせる。しかし、脱官僚を唱い自民党をぶっつぶすといった小泉政権は官僚を潰さなかった。官僚から利権を取戻すといった民主党政権は後に官僚派に転じ消費税を増税した。中国に厳しく対峙してくれそうな安倍政権が誕生しても中国は依然として世界第二位の経済大国だ。安保法案はアメリカに便宜供与をしているだけなので、特に中国を潰す行動にはなっていない。

政党が「ヘイト」を利用するのは構わない。しかしヘイトには瞬発力はあっても持続性はない。振り向いてもらうきっかけにはなるが、これを積極的な応援運動への参加へ転換してゆかなければならない。積極的な応援運動とは簡単な動作でできる「勝利可能」な行動だ。成功体験を積み重ねてゆけば、やがて大きな目標へ到達することができるだろう。

その為にはまず、行動の受け皿になる政治的な集まりを作り、小さな行動から大きな行動へとつながる行為設計を行わなければならない。離反者が出る事も考えれば、1年未満という時間は決して長くはないことが分かる。