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

からあげ定食

僻地の大学生の進捗発表。R,Python,yacht,twitteR,自然言語処理,将棋,機械学習,ヨット

twitteRでツイートをキーワード検索

twitteRを使い、キーワードでツイートを取得するにはsearchTwitter()関数を使う。
twitterの認証等は済でtwitteRの関数がそのまま使える状態とする。

library(twitteR) 
tweet <- searchTwitter("江ノ島",10) # 「江ノ島」が含まれるツイート最新10個取得
tw.df <- twListToDF(tweet) # Rで扱いやすいデータフレームに変換
tw.df[,"text"]
# ---
 [1] "RT @kitbox_anepochi: 【江ノ島コスプレ祭】にご参加いただきましたみなさま 本日はありがとうございました!\n物販では不慣れな対応ですみませんでした~(&gt;&lt;)\n普段ツイッターでお話ししている方々とお会いできて楽しかったです(^-^)/凸\nお帰り途中の皆さまどうぞ…"   
 [2] "RT @T25_owner: #江ノ島コスプレ祭 で撮影した江ノ島さんぽちゃん @enoshimasanpo \n#キャラサミ http://t.co/01uww5DRMZ"                                                                                                                                                
 [3] "@sheher_maydy こんばんは!本日ADVにてダンガンロンパの江ノ島盾子をやっておりました彼方(かなた)です♪ 本日はとても可愛いリンちゃんを撮影させていただきありがとうございました♡本当の双子のようでした♡ もしよろしければ、フォロー失礼してもよろしいでしょうか?><"
 [4] "RT @horinchi: これから咲く花、今咲く花、すでに散った花。儚くも美しい桜とさんぽちゃん。 #江ノ島さんぽちゃん #江ノ島 http://t.co/7A2pYpXhRz"                                                                                                                        
 [5] "ヴィジュアル系は釣り針と共に水中へ江ノ島ドーンされる…"                                                                                                                                                                                                           
 [6] "【片瀬江ノ島方面】\n22:53 の電車は 当駅始発 各駅停車 片瀬江ノ島 ゆきです\n\n次の電車は 23:00 急行 藤沢 ゆきです\n#小田急相模大野駅 [22:42:03]"                                                                                                                    
 [7] "誰か江ノ島いこーぜー!ただし平日なーw"                                                                                                                                                                                                                            
 [8] "@Aug_1st_skyblue 江ノ島行くと、甘味屋かホットケーキかで悩む人ですw←間違ってるw"                                                                                                                                                                                  
 [9] "@meguri28 えっ 江ノ島なのww"                                                                                                                                                                                                                                   
[10] "明日Uni-Share Vol.9が発行ということで懐かしさに浸る。\nみんなお疲れさまでした。\n\n#unishare #vol #7 #coordinate #江ノ島 #Tさん @… https://t.co/pAlSVXJUGg"
# ---

このような形で簡単にツイートを取得できる。

searchTwitter()関数の引数には次のようなものが指定できる。

searchTwitter(
"searchString", n=25, lang=NULL,since=NULL, until=NULL,locale=NULL, 
geocode=NULL, sinceID=NULL,retryOnRateLimit=120
) # 何も指定していなかった場合

# searchString 検索する言葉
# n 取得するツイートの数(その数存在するとは限らない)
# lang	つぶやかれている言語で制限 (ex: 'ja','en') 
# sinse  ツイートを取得する期間の初めの日付(ex: '2014-06-06')
# until	ツイートを取得する期間の終わりの日付(ex: '2014-06-08')
# locale クエリの言語を設定。ja(JSON)しか選択できない(ex:'ja')
# geocode  指定地点の周辺のツイートを取得する。第3引数はその地点の周囲nキロ。
	   # (ex: '35.388184,139.247367,10km)
# sinceID 指定したツイートのID以降につぶやかれたものを取得する
# retryOnRateLimit すみません。分かりません。だれか教えてー

geocodeで位置からツイートを収集しようとしても、ほとんど位置情報をつけてつぶやく人が少ないため、大量に集めるのはなかなか難しい。また、過去に遡れるツイートは1週間前までである。


twListToDF()関数を使ってデータフレームにした後、str()関数で中身を見てみるとこんな感じ。

> str(tw.df)
'data.frame':	10 obs. of  16 variables:
 $ text         : chr  "RT @kitbox_anepochi: 【江ノ島コスプレ祭】にご参加いただきましたみなさま 本日はありがとうございました!\n物販では不慣れな対応で"| __truncated__ "RT @T25_owner: #江ノ島コスプレ祭 で撮影した江ノ島さんぽちゃん @enoshimasanpo \n#キャラサミ http://t.co/01uww5DRMZ" "@sheher_maydy こんばんは!本日ADVにてダンガンロンパの江ノ島盾子をやっておりました彼方(かなた)です♪ 本日はとても可愛いリンち"| __truncated__ "RT @horinchi: これから咲く花、今咲く花、すでに散った花。儚くも美しい桜とさんぽちゃん。 #江ノ島さんぽちゃん #江ノ島 http://t.co/"| __truncated__ ...
 $ favorited    : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ favoriteCount: num  0 0 0 0 0 0 1 0 0 0
 $ replyToSN    : chr  NA NA "sheher_maydy" NA ...
 $ created      : POSIXct, format: "2015-03-29 13:42:48" ...
 $ truncated    : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ replyToSID   : chr  NA NA NA NA ...
 $ id           : chr  "582176082025000960" "582176063481987073" "582176055504465921" "582176038156775424" ...
 $ replyToUID   : chr  NA NA "2478333073" NA ...
 $ statusSource : chr  "<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>" "<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>" "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>" "<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>" ...
 $ screenName   : chr  "85izumitan" "85izumitan" "stars_mnmm" "85izumitan" ...
 $ retweetCount : num  3 6 0 11 0 0 0 0 0 0
 $ isRetweet    : logi  TRUE TRUE FALSE TRUE FALSE FALSE ...
 $ retweeted    : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ longitude    : chr  NA NA NA NA ...
 $ latitude     : chr  NA NA NA NA ...

# text ツイート本文
# favorited ファボられているか否か (TRUE or FALSE)
# favoriteCount ファボられた回数
# replyToSN リプライ先のscreen name(@~)
# created つぶやかれた日時
# id ツイート固有のID
# repyToUID リプライ先のユーザーID(@~とは別に存在する数字のID)
# statusSource つぶやかれたクライアント
# screenName つぶやいたアカウントのscreen name(@~)
# retweetCount リツイートされている回数
# isRetweet そのつぶやきがリツイートか否か (TRUE or FALSE)
# retweeted そのツイートがリツイートされているか否か (TRUE or FALSE)
# longitude 経度
# latitude 緯度

これらの情報がひとつのツイートに含まれている。
isRetweetとretweetedの違いは、検索して取得したそのツイートが別のユーザによってRTされたものであるのかを判定するものと、単純にそのツイートはRTされているのかを判定するもの、という違い。
また、先述の通り位置情報をつけてつぶやく人はあまりいないので、緯度経度の情報はほとんど含まれていない。

(参考)
cran.r-project.org/web/packages/twitteR/twitteR.pdf