2017-02-19 18 views
0

Я недавно работал с tweepy-библиотекой в ​​python. Я написал программу, которая транслируется через твиты. Я использовал строки как фильтры. Я назначил определенную переменную каждой строке в списке в зависимости от настроения, которое представляет строка.Как найти количество повторений слова в tweepy-потоке?

class listener(StreamListener): 

    def on_status(self, status): 
     try: 
      print status 
      return True 
     except BaseException, e: 
      print 'failed on status, ', str(e) 
      time.sleep(5) 
      if '' in status.text.lower() and 'retweeted_status' not in status: 
       print status.text 
       print status.coordinates 

    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()) 

api = tweepy.API(auth) 


happy=["I love","I'm so happy","feeling joyful","feeling awesome"] 
sad=["I'm depressed","I'm very sad","It is painful","feeling terible"] 
angry=["I'm furious","wtf!","I'm so pissed off","I'm angry"] 
shocked=["rip","omg","I can't believe it","I'm shocked"] 
romantic=["I love you","today is my anniversary","feeling romantic","I'm dating"] 

twitterStream.filter(track=sad)(track=happy)(track=angry)(track=shocked)(track=romantic) 

mood_happy=0 
mood_sad=0 
mood_angry=0 
mood_shocked=0 
mood_romantic=0 

То, что я хотел сделать, это каждый раз, когда строка из любых переменных появляется в строке твитов я хотел значение mood_n добавить до 1. Так, например, если фраза «Чувства Радостной» появляется 5 раз в потоке. Я бы хотел, чтобы значение mood_happy = 5. Как я могу это сделать?

Прошу прощения, я знаю, что я не должен публиковать такие запросы, но я искал решение в Google из многих часов, но не нашел ни одной информации об этом. :(

ответ

0

Существует место для оптимизации, но в основном это выглядит:

import time 
from tweepy import StreamListener, OAuthHandler, Stream 


twitter_access = { 
    "consumer_key"  : "enter_consumer_key", 
    "consumer_secret" : "enter_consumer_secret", 
    "access_token"  : "enter_access_token", 
    "access_token_secret": "enter_access_token_secret", 
} 

happy = ["I love", "I'm so happy", "feeling joyful", "feeling awesome"] 
sad = ["I'm depressed", "I'm very sad", "It is painful", "feeling terible"] 
angry = ["I'm furious", "wtf!", "I'm so pissed off", "I'm angry"] 
shocked = ["rip", "omg", "I can't believe it", "I'm shocked"] 
romantic = ["I love you", "today is my anniversary", "feeling romantic", "I'm dating"] 

mood_happy = 0 
mood_sad = 0 
mood_angry = 0 
mood_shocked = 0 
mood_romantic = 0 


class Listener(StreamListener): 

    def on_status(self, status): 
     global mood_happy, mood_sad, mood_angry, mood_shocked, mood_romantic 

     try: 
      # print status 
      tweet_text = status.text 
      for mood_n_score in [[happy, 'mood_happy'], [sad, 'mood_sad'], [angry, 'mood_angry'], 
           [shocked, 'mood_shocked'], [romantic, 'mood_romantic']]: 
       lst_mood = mood_n_score[0] 
       type_mood = mood_n_score[1] 

       for mood in lst_mood: 
        if mood in tweet_text: 
         if type_mood == 'mood_happy': 
          mood_happy += 1 
         elif type_mood == 'mood_sad': 
          mood_sad += 1 
         elif type_mood == 'mood_angry': 
          mood_angry += 1 
         elif type_mood == 'mood_shocked': 
          mood_shocked += 1 
         else: 
          mood_romantic += 1 
         break 

      print('\n----------------') 
      print 'mood_happy:', mood_happy 
      print 'mood_sad:', mood_sad 
      print 'mood_angry:', mood_angry 
      print 'mood_shocked:', mood_shocked 
      print 'mood_romantic:', mood_romantic 

      # return True 

     except BaseException, e: 
      print 'failed on status, ', str(e) 
      time.sleep(5) 
      if '' in status.text.lower() and 'retweeted_status' not in status: 
       print status.text 
       print status.coordinates 

    def on_error(self, status): 
     print status 

auth = OAuthHandler(twitter_access["consumer_key"], twitter_access["consumer_secret"]) 
auth.set_access_token(twitter_access["access_token"], twitter_access["access_token_secret"]) 
# api = API(auth) 
twitterStream = Stream(auth, Listener(), timeout=None) 

for list_of_mood in [happy, sad, angry, shocked, romantic]: 
    twitterStream.filter(track=list_of_mood) 
+0

Большое спасибо Это было действительно полезно :) –

+0

@AmanTrivedi, я был бы признателен, если вы могли бы принять ответ (под стрелки 2 вверх \ вниз перед моим ответом есть серый галочкой). Спасибо. – TitanFighter

+1

@TitantFighter Done :) –

 Смежные вопросы

  • Нет связанных вопросов^_^