2012年03月13日

ruby+twitter+MeCab+google geocodingでなんかやってみよう

趣味でtwitterのリストからタイムラインを取ってきて、形態素解析して、場所を表す単語を取ってきて、それの緯度経度を表示するものをrubyで作りました。

例えば @tomo3141592653の僕(平田朋義)が
「東京駅に着きました」と発言したら、それを拾ってきて次のように出力します。

「東京 駅:
{"lat"=>35.689506, "lng"=>139.691701}
平田朋義@tomo3141592653
東京駅に着きました。」

解説はソースコード内のコメントで。


# -*- encoding: utf-8 -*-

require "MeCab"
require "twitter"
require "open-uri"
require "uri"

list =Twitter.list_timeline("tomo3141592653", "Suidobashi",:per_page=>300)
#@tomo3141592653が作ったSuidobashiリスト(うちのシェアハウスの住民リスト)のタイムラインを300件取ってくる。

c = MeCab::Tagger.new()

list.each do |li|
txt = li.text #例:東京駅に着きました。
word = c.parseToNode(txt) #形態素解析する。

# 形態素ごとループ
while word do
type = word.feature.split(",") # 品詞


if type[1].toutf8 == "固有名詞" and type[2].toutf8 == "地域" # 地域を表す単語のみ取ってくる。

location = word.surface #例:東京
next_word = word.next.surface #例:駅

json = open("http://maps.googleapis.com/maps/api/geocode/json?address=#{URI.escape(location)}&sensor=false")

#google geocodingにアクセスし geocoding結果を取ってくる。
#例:"http://maps.googleapis.com/maps/api/geocode/json?address=東京&sensor=false"

json = YAML.load(json.read) #jsonのパース

sleep(0.1)

#国名なら無視。
if json ==nil || json["status"] != "OK" || json["results"][0]["types"].index("country")
word = word.next
next
end

puts location + " "+next_word + ":" #例:東京 駅:
p json["results"][0]["geometry"]["location"] #例:{"lat"=>35.689506, "lng"=>139.691701}
puts li.user.name + "@"+ li.user.screen_name #例:平田朋義@tomo3141592653

puts txt #例:東京駅に着きました

puts ""

end

word = word.next # 次の形態素に移動
end

end #次のツイートに移動




実行結果、抜粋。

本町 駅:
{"lat"=>34.681936, "lng"=>135.498982}
やしまこ!@yashimako_
I'm at 岩本町駅 (S08) (千代田区, 東京都) http://t.co/aAPJCt3L


厚 焼き:
{"lat"=>35.3044432, "lng"=>135.1069231}
pooɟɐǝs@hnnhn
パーティによさそう / “【ハウツー】炊飯器でつくる「厚焼きホットケーキ」 | ライフ | マイナビニュース” http://t.co/FoVHoMHi

秋葉原 事件:
{"lat"=>35.698683, "lng"=>139.774219}
吉田俊文@tsfmysd
今週の長岡ルーマン2006の固有値をもっとも読んだ人は俺に違いない。コミュニケーション一元論が、とりわけ昨今のグローバル化による格差現象や、資本要素価格均等
化(≒利潤率均等化)現象、GM、サププライm、秋葉原事件を鑑みたときその説明力に疑念がありうるのはここにあるのじゃないか?

博多 つい:
{"lat"=>33.59135759999999, "lng"=>130.4148783}
吉田俊文@tsfmysd
土曜の夕方に深夜バス乗れば、朝目覚めて最終授業出席できるな…… 14の夜に博多ついて、15にお見舞いと赤ちゃんに会いにいって、16にばあちゃんちと犬の散歩して、17に家族と博多で飯くって、18時に博多駅にもどると。完璧かもしれない。

飯田橋 合同庁舎:
{"lat"=>35.702065, "lng"=>139.745015}
やしまこ!@yashimako_
窓口の人が前回と同じだとやりやすい (@ ハローワーク飯田橋 合同庁舎) http://t.co/a1P8hFo4

感想:
foursquare経由などの発言はほぼ確実に抽出できる。

精度を上げるにはNG単語リストを作ったほうが良さそう。
例:焼き、事件、都民、人
など





posted by hougi at 12:27| Comment(17) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
Cialis シアリス 100mgはバイアグラに代わってED治療の最新商品。世界でもっとも安全、人気がある男性用勃起促進剤です。主成分であるタダラフィル(経口pde5阻害剤)の働きにより血流を活発にし、十分な勃起力を約24時間もの間維持することが特徴です。https://www.kandokanpo.com/products/6.html
Posted by シアリス100mg at 2017年12月15日 15:21
最新商品,世界でもっとも安全.
Posted by シアリス100mg at 2018年01月10日 16:13
効果がさらに50%UP
Posted by NEW勃動力三體牛鞭 at 2018年01月16日 10:31
ED治療領域の新の薬物です
Posted by 蔵秘雄精 at 2018年01月18日 15:55
最高効果的なED治療薬 100%正規品効果保証
Posted by シアリス100 通販 at 2018年01月24日 16:47
商品は、各配送国の薬剤師により厳重に成分、品質を管理しております。
Posted by 永久漢方 at 2018年02月08日 10:39
シアリス Cialis 100mgはこの欠点がありません。本品は副作用が小さくて、効果も速く、使用量も少なくてすみ、服用後15分〜30分で効果が現れます。
Posted by シアリス 100mg at 2018年03月15日 11:09
現代技術と製造法により生産された新製品です。
Posted by NEW勃動力三體牛鞭 at 2018年04月04日 15:24
狼1号 ロウイチゴウは、今最も注目を集めている最新の漢方精力増強薬です。
Posted by 狼1号 at 2018年04月24日 10:44
威哥王(ウェイカワン)は、医薬品のバイアグラを使用している人には是非お薦めしたい逸品。
Posted by 威哥王 at 2018年05月15日 10:36
蔵秘男宝(精力増強薬)におどろきます。自信を持ってご提供いたします。
Posted by 蔵秘男宝 at 2018年05月29日 11:57
中国漢方薬、ダイエット、ED治療薬、精力剤通販,正規販売店「永久漢方」輸入代行
Posted by 永久漢方 at 2018年07月10日 11:37
狼1号(狼一号)は、今最も注目を集めている最新の漢方精力増強薬です。
Posted by 狼1号 通販 at 2018年07月19日 11:37
精力剤(せいりょくざい)とは、主に更年期以降における男性を対象とした、性機能増強のための薬剤及び一般食品の俗称。
Posted by 漢方精力剤 at 2018年08月15日 11:56
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。