Twitterのツイートをポイントに変換しますか?


14

Rを使用してtwitterをデータマイニングすることに関するいくつかの研究を行ってきましたが、私の質問に対する答えや適切なチュートリアルは実際には見つかりませんでした。

特定の時間枠内で、特定のハッシュタグを使用してTwitterからツイートを取得し、QGISまたはArcMapのいずれかのマップにそれらのツイートの場所をプロットすることに興味があります。

ツイートにはジオロケーションが関連付けられている可能性があることは知っていますが、そもそもこの情報を抽出するにはどうすればよいですか?


これは役立つかもしれません:mike.teczno.com/notes/streaming-data-from-twitter.htmlすべてを読んだわけではありませんが、各ツイートの場所を取得する方法を示しているようです。
ianbroad 14年

1
TwitterのAPIから座標を抽出するだけでよいため、製品タグ「r」、「qgis」、「arcgis」を失う可能性があるようです。その情報を入手したら、その標準機能を使用して製品にポイントを追加します
Stephen Lead 14年

コードの実行中に401エラーが発生します。
-shikhar

回答:


22

純粋にPythonを使用して、ワードフィルターを使用してツイートの座標を取得する方法を見つけました。多くの人が自分のツイートに位置情報を含めているようには見えません。

これはライブストリーミングデータであるため、どちらを求めているかはわかりません。独自のフィルターワードを入力し、Twitterアカウントからそのワードをツイートすることでテストできます。ツイートがPythonにほぼ瞬時に表示されます。これは、いくつかの巨大なイベントに使用するのはかなりクールです。

Tweepyをインストールする必要があります。

pip install tweepy

そしてTwitter API Keyを取得します

次に、このスクリプトをテンプレートとして使用できます。

import json
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener

#Enter Twitter API Key information
consumer_key = ''
consumer_secret = ''
access_token = ''
access_secret = ''

file = open("C:\\Output.csv", "w")
file.write("X,Y\n")

data_list = []
count = 0

class listener(StreamListener):

    def on_data(self, data):
        global count

        #How many tweets you want to find, could change to time based
        if count <= 2000:
            json_data = json.loads(data)

            coords = json_data["coordinates"]
            if coords is not None:
               print coords["coordinates"]
               lon = coords["coordinates"][0]
               lat = coords["coordinates"][1]

               data_list.append(json_data)

               file.write(str(lon) + ",")
               file.write(str(lat) + "\n")

               count += 1
            return True
        else:
            file.close()
            return False

    def on_error(self, status):
        print status

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
twitterStream = Stream(auth, listener())
#What you want to search for here
twitterStream.filter(track=["Halloween"])

Twitterからもこのドキュメントをチェックしてください。フィルターに何を入れることができるかを示しています。

フィルターを「ハロウィーン」として数分間置いた結果は次のとおりです。

ここに画像の説明を入力してください

それに、ハロウィーンについて言及した最初の2000のツイートがあります!

http://i.stack.imgur.com/bwdoP.png ここに画像の説明を入力してください

ハッピーハロウィン!


どういうわけか、古いツイートをくまなく調べることができれば、これは私が探していたものの100%になります。私はこれをいじって、何を思いつくことができるかを見ていきます。どうもありがとうございました!
Bradley_Jay 14年

@Bradley_Jay問題ありません。以下によると、Twitterは古いツイートを実際に利用可能にしない。stackoverflow.com/questions/1662151/...
ianbroad

また、代わりのバウンディングボックスを持つフィルタは、=などの場所を「追跡」することができ、[ - 180、-90,180,90]
マット・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.