Commit b63e4c67 authored by ALVARO ARENZANA MINGUEZ's avatar ALVARO ARENZANA MINGUEZ
Browse files

Upload New File

parents
# -*- coding: utf-8 -*-
"""BitcoinTweets123.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1CZIlPUoXVujZFqNpmYsEK9M_A41HTY-D
#**BitCoinTweets123 App**
####Víctor Miguel Robledo 100406496
####Alvaro Arenzana Minguez 100406570
"""
#!pip install MonkeyLearn
from google.colab import drive
drive.mount('/content/drive')
import tweepy
import pandas as pd
#from monkeylearn import MonkeyLearn
import re
import nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
nltk.download('vader_lexicon')
#Funcion que elimina los eojis y otros simbolos no alfanumericos
def demoji(text):
emoji_pattern = re.compile("["
u"\U0001F600-\U0001F64F" # emoticons
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
u"\U00002702-\U000027B0"
u"\U000024C2-\U0001F251"
u"\U00010000-\U0010ffff"
"]+", flags=re.UNICODE)
return(emoji_pattern.sub(r'', text))
#Inicializamos nuestro array
data = []
class TweetsListener(tweepy.StreamListener):
#si el estamos en modo stream entrara en esta funcion y imprimira el texto
def on_connect(self):
print("Estoy conectado!")
#cada vez que capture un tweet entrara aqui
def on_status(self, status):
#quitamos los tweets capturados que son retweets
try:
rt = status.retweeted_status
except:
rt = None
if rt == None:
print(status.text)
#vamos añadiendo una nueva fila al array, solo añadiremos el propio
# texto del tweet y el screen_name de todas las variables que tiene un
# tweet
data.append([status.user.screen_name, status.text])
#si ocurre algun error entrara en esta funcion y imprimira el texto
def on_error(self, status_code):
print("Error", status_code)
consumer_key = #"your consumer_key"
consumer_secret = #"your consumer_secret"
access_token = #"your access_token"
access_token_secret = #"your access_token_secret"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
#Comprobamos que se ha conectado a nuestra aplicacion imprimiendo el screen_name
print(api.verify_credentials().screen_name)
stream = TweetsListener()
#iniciamos el stream de tweet
streamingApi = tweepy.Stream(auth=api.auth, listener=stream)
#filtramos por el #BTC lo cual buscara tweets que contegan el hastag pero
# tambien otras palabras que tengan que ver con Bitcoin, capturamos solo los
# tweets en ingles
streamingApi.filter(
track = ["#BTC"], languages = ["en"]
)
columns = ['User', 'Tweet']
#Convertimos nuestro array en un dataframe
df = pd.DataFrame(data, columns=columns)
df.info() #imprimimos su informacion
df.head(5) #imprimimos las 5 primeras filas
df['Tweet'] = df['Tweet'].astype(str)
#Aplico a todos los tweets del df una funcion que quita los emojis
df['Tweet'] = df['Tweet'].apply(lambda x:demoji(x))
df.head(5) #imprimimos las 5 primeras filas nuevamente
sia = SentimentIntensityAnalyzer()
#Creamos una nueva columna en el df que va a ser la puntuacion que Vader va a
# otorgar a cada tweet, con este rango [-1:1]
df['Sentimiento'] = df['Tweet'].astype(str).apply(lambda i: sia.polarity_scores(i)['compound'])
df.head(5) #imprimimos las 5 primeras filas
df.to_csv("DAY_3.csv", encoding='utf-8') #guardo en un csv el df
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment