Проблемы с потоковыми твитами с использованием анализа твипа и настроений - PullRequest
1 голос
/ 22 апреля 2019

Я начинающий программист на Python. Мне сложно понять простой API Tweepy Streaming.

В основном я пытаюсь сделать следующее.

  1. Потоковые твиты на португальском языке.

  2. Показать настроение каждого твита.

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

import tweepy
from textblob import TextBlob
### I have the keys updated on those veriables

auth = tweepy.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN,ACCESS_TOKEN_SECRET)
API = tweepy.API(auth)


class MyStreamListener(tweepy.StreamListener):

    def on_status(self, status):
        print("--------------------")
        print(status.text)
        analysis = TextBlob(status.text)

        if analysis.sentiment.polarity > 0:
            print("sentiment is positiv")
        elif analysis.sentiment.polarity == 0:
            print("sentiment is Neutral")
        else:
            print("sentiment is Negative")
        print("--------------------\n")


myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = API.auth, listener=myStreamListener, tweet_mode='extended', lang='pt')

myStream.filter(track=['trump'])

Пример o / p:

RT @SAGEOceanTweets: Innovation Hack Week 2019: @nesta_uk is exploring the possibility of holding a hack week in 2019, focused on state-of-�

Однако он останавливается после нескольких твитов, и я получаюэта ошибка

      return codecs.charmap_encode(input,self.errors,encoding_table)[0]
      UnicodeEncodeError: 'charmap' codec can't encode 
      character '\U0001f4ca' in position 76: character maps to <undefined>
      [Finished in 85.488s]

А также твиты не на португальском языке.Как я могу непрерывно транслировать, а также получать твиты на португальском языке и выполнять анализ настроений

Не могли бы вы, ребята, также подсказать мне, как даже транслировать языковые твиты, а затем анализировать чувства с помощью textblob.

Спасибо

1 Ответ

0 голосов
/ 22 апреля 2019

Этот код может помочь вам достичь вашей цели:

NLP Twitter Streaming Mood

Он собирает данные из Twitter и анализирует настроение.Однако, если вы хотите разработать анализ настроений на португальском языке, вы должны использовать обученную Википедию на португальском языке (Word2Vec), чтобы получить вложение слова обученной модели.Это единственный способ сделать это надежно.NLTK и Gensim лучше работают на английском языке, NLTK очень ограничен на португальском.

from nltk import sent_tokenize, word_tokenize, pos_tag
from nltk import sent_tokenize, word_tokenize, pos_tag
import nltk
import numpy as np
from nltk.stem import WordNetLemmatizer
import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener
import re

consumer_key = '12345'
consumer_secret = '12345'
access_token = '123-12345'
access_secret = '12345'

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

api = tweepy.API(auth)

number_tweets=100
data=[]
for status in tweepy.Cursor(api.search,q="trump").items(number_tweets):
    try:
        URLless_string = re.sub(r'\w+:\/{2}[\d\w-]+(\.[\d\w-]+)*(?:(?:\/[^\s/]*))*', '', status.text)
        data.append(URLless_string)
    except:
        pass

lemmatizer = WordNetLemmatizer()

text=data

sentences = sent_tokenize(str(text))
sentences2=sentences
sentences2

tokens = word_tokenize(str(text))
tokens=[lemmatizer.lemmatize(tokens[i]) for i in range(0,len(tokens))]

len(tokens)

tagged_tokens = pos_tag(tokens)
tagged_tokens
...