Aula 02 - Analisando sentimentos de Tweets

1- Introdução 


Nessa aula iremos compreender como utilizar no python a API tweepy. Essa API foi criada para fazer a conexão com o twitter e proporcionar ao programador a possibilidade de manipular com maior facilidade os tweets.

2- Usando a API no python


O primeiro passo para utilizar a API tweepy é importar a biblioteca (já instalada via pip install tweepy). Além disso, vamos importar algumas bibliotecas que iremos utilizar nesse projeto.


import tweepy import re import pickle from tweepy import OAuthHandler

Assim como foi descrito na aula de introdução você deverá inicializar os tokens:

# initializing the keys
consumer_key = 'czgXc6E6Qh5v0hlIFxbAz5vPj'
consumer_secret = '7gAeDmKp6MNyjxj8lcySuiuAz3jrBR0qebg0CYIMvA0STqCDJB'
access_token = '2729102759-RQf65P8m9VWzRr3nyxIaGFVaY3Dgasv2yTKJngT'
access_secret = 'lyZ6OHwnf2J5n7WPvaD8xjx5T8VWuLs3TMbUAxTGVIIIw'

A seguir, você deverá utilizar o objeto OAuthHandler e passar os tokens para autenticar na API. Na lista de args, você deverá passar o termo no qual você está buscando em tweets.

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

args = ['league of legends']

api = tweepy.API(auth,timeout=10)

Em seguida você poderá carregar os tweets em uma lista:


list_tweets = [] query = args[0] if len(args) == 1: for status in tweepy.Cursor(api.search, q=query + ' -filter:retweets', lang='en', result_type='recent').items(100): list_tweets.append(status.text)

Para classificar um tweet iremos utilizar o classificador treinado na seção anterior do curso de processamento de linguagem natural

with open('tfidfmodel.pickle', 'rb') as f:
    vectorizer = pickle.load(f)
    
with open('classifier.pickle', 'rb') as f:
    clf = pickle.load(f)
          
resultado = clf.predict(vectorizer.transform(['we are awesome']))
print (resultado)

Por fim, realizamos o pré-processamento de cada tweet e classificamos o tweet utilizando o classificador treinado.

# pré processamento

for tweet in list_tweets:
    tweet = re.sub(r"^https://t.co/[a-zA-Z0-9]*\s", " ", tweet)
    tweet = re.sub(r"\s+https://t.co/[a-zA-Z0-9]*\s", " ", tweet)
    tweet = re.sub(r"\s+https://t.co/[a-zA-Z0-9]*$", " ", tweet)
    tweet = tweet.lower()
    tweet = re.sub(r"that's", "that is", tweet)
    tweet = re.sub(r"what's", "what is", tweet)
    tweet = re.sub(r"where's", "where is", tweet)
    tweet = re.sub(r"it's", "it is", tweet)
    tweet = re.sub(r"who's", "who is", tweet)
    tweet = re.sub(r"i'm", "i am", tweet)
    tweet = re.sub(r"she's", "she is", tweet)
    tweet = re.sub(r"he's", "he is", tweet)
    tweet = re.sub(r"they're", "they are", tweet)
    tweet = re.sub(r"who're", "who are", tweet)
    tweet = re.sub(r"ain't", "am not", tweet)
    tweet = re.sub(r"wouldn't", "should not", tweet)
    tweet = re.sub(r"can't", "can not", tweet)
    tweet = re.sub(r"couldn't", "could not", tweet)
    tweet = re.sub(r"won't", "will not", tweet)
    tweet = re.sub(r"\W", " ", tweet)
    tweet = re.sub(r"\d", " ", tweet)
    tweet = re.sub(r"\s+[a-z]\s+", " ", tweet)
    tweet = re.sub(r"\s+[a-z]$", " ", tweet)
    tweet = re.sub(r"^[a-z]\s+", " ", tweet)
    tweet = re.sub(r"\s", " ", tweet)
    sent = clf.predict(vectorizer.transform([tweet]))
    print(tweet, ":", sent, "\n")


Ao fim teremos o output (considerando que [1] - positivo - [0] - negativo): 

added video to youtube playlist zedd  ignite   worlds        league of legends : [0] 
added video to youtube playlist legends never die  ft  against the current    worlds        league of : [0] 
added video to youtube playlist imagine dragons  warriors   worlds  league of legends : [0] 
liked youtube video uzay serüveni  modu     league of legends gameplay : [0] 
live league of legends   mundial        fase de entrada   dia    via youtube : [0] 
liked youtube video  league of legends diamond iv yuhuhuhu facem si noi likeuri : [0] 
shaian we re updating the emblems because they don fit the aesthetic of league of legends or the world of ru   : [1] 
li league of legends makes me really pissed off lot  but the game itself isn the problem  it is assholes and   : [0] 
looking for some people who want to play league of legends with me  just for fun am terrible    but would like to play with group : [1] 
liked youtube video rise  ft  the glitch mob  mako  and the word alive    worlds        league of legends : [0] 
new ryze skin spotlight pre release league of legends thanks riotgames  : [1] 
the permanent ban turned out to be not so permanent  here the story of  loltyler road to league of legends red   : [0] 
dia league of legends : [0] 
liked youtube video pulsefire ezreal  skin spotlight   pre release   league of legends : [0] 
intersting structure developments   : [1] 

Aula 02 - Analisando sentimentos de Tweets Aula 02 - Analisando sentimentos de Tweets Reviewed by Vinicius dos Santos on 02:18:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!