読者です 読者をやめる 読者になる 読者になる

鴨川にあこがれる日々

軽い技術っぽい記事かいてます

「図書館」が含まれるtweetを集めてみた By Ruby

Ruby

(前回のグラフはどこいったって話ですが)

図書館というのは強い言葉だと思っています。「Twitter」という言葉は知らない人はたくさんいますけど、「図書館」という言葉はだれだって知っているでしょう。

仮説:図書館という言葉は概念が強く、それによって利用者の行動がある程度、制約されているのではないか


例えば、動詞であれば

  • 勉強する
  • 寝る
  • 読書する
  • 借りる

など。

名詞であれば

  • 市立
  • 武雄
  • 戦争

がなど。

サンプルがまだ少ないので統計的な処理をする段階ではないと思ったので(というかできるのか…)途中経過までとさせていただきました。(現在RTとbot含めて約16万件/8日間{2014/5/26~6/3})

環境

#! /usr/local/bin/ruby -Ku
# -*- coding: utf-8 -*-
require 'twitter'

# アプリケーションキー 個人ごと
consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""

# 認証
client = Twitter::REST::Client.new do |config|
  config.consumer_key = consumer_key
  config.consumer_secret = consumer_secret
  config.access_token = access_token
  config.access_token_secret = access_token_secret
end

#クエリ
q = '図書館'
id = XXXXXX #最初はコメントアウト

while page = client.search(q, :count => 100, :max_id => (id-1))
  page.each do |data|
    if (text = data.text.dup)
      text.gsub!(',','')
      text = text.each_char.select{|c| c.bytes.count < 4 }.join('')
      id = data.id
      print "#{id},#{text},#{data.created_at}\n"
    end
  end
end
  • APIの上限までいくと止まり、18000件くらい取得
  • 例によってCSVでid,テキスト,投稿時間を出力
  • テキストに,(カンマ)があるとDBに入れられないので、'、'に置換。
  • スマホ等の顔文字は4Bytes文字なので、DBにインポートするとエラーにおこすので、特殊な顔文字は除去
  • idでツイートのidを指定できます。最初は
while page = client.search(q, :count => 100)

で実行して、より遡ってツイートを取得したい際は取得したtweetの中でもっとも古いツイートのidを予め格納しておくことでより遡るって取得できます。
6月3日の段階で5月26日までしか遡ることができませんでした(限度がある?)

今日はここまでです。