Advertisement

Aula 02 - Analisando sentimentos de Tweets

1- Introdução 


Nessa aula iremos compreender como analisar os sentimentos contídos em tweets utilizando o classificador sentimentos treinado na ultima aula. Para isso, iremos utilizar a API tweepy para minerar (extrair) esses tweets da base de dados do Twitter. Assim, poderemos fazer uma conexão com o twitter dar ao programador a possibilidade de manipular os tweets com maior facilidade.

2- Usando a API no python


Passo 01 - 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
      
      
Passo 02 - Assim como foi descrito na aula de introdução você deverá inicializar os tokens. Para isso você deve acessar a plataforma do twitter para desenvolvedores, criar uma nova conta, ler e aceitar todos os termos e solicitar uma nova chave de acesso.




# initializing the keys
consumer_key = '__colocar sua consumer key___'
consumer_secret = '___ colocar sua consumer secret___'
access_token = '___colocar seu access token___'
access_secret = '___colocar seu access secret___'



Passo 03 - 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)



Passo 04 - 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)


Passo 05 - 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)



Passo 06 - 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] 
      
      


Nenhum comentário

Conta pra mim sua opinião!

Fale comigo