it-swarm.com.de

Filtern Sie Twitter-Feeds nur nach Sprache

Ich verwende die Tweepy-API zum Extrahieren von Twitter-Feeds. Ich möchte nur alle Twitter-Feeds einer bestimmten Sprache extrahieren. Der Sprachfilter funktioniert nur, wenn ein track-Filter bereitgestellt wird. Der folgende Code gibt den Fehler 406 zurück:

l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
stream.filter(languages=["en"])

Wie kann ich mit Tweepy all die Tweets aus einer bestimmten Sprache extrahieren? 

19
Sudo

Sie können nicht (ohne besonderen Zugriff). Das Streaming all der Tweets (ungefiltert) erfordert eine Verbindung zu the firehose , die nur in bestimmten Anwendungsfällen von Twitter gewährt wird. Ehrlich gesagt, der Firehose ist nicht wirklich notwendig - die korrekte Verwendung von track kann Ihnen mehr Tweets bringen, als Sie wissen, was Sie tun sollen.

Versuchen Sie es mit etwas wie diesem:

stream.filter(languages=["en"], track=["a", "the", "i", "you", "u"]) # etc

Wenn Sie nach solchen Wörtern filtern, erhalten Sie viele Tweets. Wenn Sie echte Daten für die am häufigsten verwendeten Wörter erhalten möchten, lesen Sie diesen Artikel unter Zeit: Die 500 am häufigsten verwendeten Wörter auf Twitter . Sie können bis zu 400 - Schlüsselwörter verwenden, dies wird sich jedoch in einem bestimmten Zeitintervall wahrscheinlich der 1% -Grenze der Tweets nähern. Wenn Ihr track-Parameter zu einem bestimmten Zeitpunkt mit 60% aller Tweets übereinstimmt, erhalten Sie immer noch nur 1% (was eine Menge Tweets ist).

21
Luigi

Anstatt gefilterte Tweets direkt zu erhalten, können Sie sie filtern, nachdem Sie alle Tweets verschiedener Sprachen erhalten haben:

tweets = api.search("python")
for Tweet in tweets:
   if Tweet.lang == "en":
      print(Tweet.text)
      #Do the stuff here

Ich hoffe es hilft.

4
Jay Mehta

Versuchen Sie den Parameter lang='en' In Cursor(), z.

tweepy.Cursor(.. lang='en')

3
Aziz Alto

Das hat bei mir funktioniert.

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
a=input("Enter Tag: ")
tweets = api.search(a, count=200)
a=[]
for Tweet in tweets:
    if Tweet.lang == "en":
        a.append(Tweet.text)
0
Smit Jethwa

Die Argumente für die Track-Methode finden Sie im github-Code https://github.com/tweepy/tweepy/blob/master/tweepy/streaming.py

Setzen Sie Sprachen in ein Array von ISO_639-1_codes.

Sie sind:

filter(self, follow=None, track=None, is_async=False, locations=None,
               stall_warnings=False, languages=None, encoding='utf8', filter_level=None):

Um nach Sprachen zu suchen, muss man einfach sagen:

class Listener(StreamListener):

    def on_data(self, data):
        j = json.loads(data)
        t = {
          'screenName' : j['user']['screen_name'],
          'text:': j['text']
          }
        print(t)
        return(True)

    def on_status(self, status):
        print(status.text)


auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

stream = Stream(auth=auth, listener=Listener(),wait_on_rate_limit=True,wait_on_rate_limit_notify=True)

stream.filter(track=['Trump'],languages=["en","fr","es"])
0
Walker Rowe