#tweet
uno = 'Gran mexicano y excelente en su área, su muerte es una enorme perdida y debería ser luto nacional!!!'
dos = 'Vaya señora que bueno que se asesora por alguien inteligente no por el ignorante del Gatt.'
tres = 'Se me ocurre y sin ver todos los videos de Plazti que me informéis por dónde empiezo. Entiendo que os tendría que decir quién soy y que quiero, vamos conocerme para asesorarme bien. Un saludo'
cuatro = 'Soy docente universitario, estoy intentando preparar mis clases en modo platzi bien didáctico, (le llamo modo noticiero), descargue una plataforma gratuita de grabación y transmisión de vídeo, se llama Obs estudio!bueno la sigo remando con sus funciones pero sé que saldrá algo!'
import numpy as np
def tweet_clean(tweet):
dictc = (('á','a'),('é','e'),('í','i'),('ó','o'))
tweet = tweet.replace(',','').replace('!',' ').lower().replace('.','').replace('(','').replace(')','').replace('á','a').replace('é','e').replace('í','i').replace('ó','o').split()
return tweet
def tweet_analysis(tweet):
word = ['bien','gran','excelente','inteligente','didactico','bueno','informeis','sin','intentando','vamos','enorme'
,'muerte','perdida','luto','ignorante','no']
positive = ['bien','gran','excelente','inteligente','didactico','bueno','platzi','ocurre']
neutral = ['informeis','sin','intentando','vamos','enorme']
negative = ['muerte','perdida','luto','ignorante','no']
w = [] #vector w en order de word ojo
for i in range(len(word)):
for j in range(len(tweet)):
if word[i] == tweet[j]:
vector = np.zeros(len(word))
vector[i] = 1
w.append(vector)
w = sum(w)
position = [i for i in range(len(word)) if int(w[i]) == 1]
s = [0,0,0]
for i in range(len(positive)):
for j in position:
if positive[i] == word[j]:
s[0] += 1
for i in range(len(neutral)):
for j in position:
if neutral[i] == word[j]:
s[1] += 1
for i in range(len(negative)):
for j in position:
if negative[i] == word[j]:
s[2] += 1
return w,s
def error(w,s):
uno = np.ones(len(w))
return (uno/len(w)).T.dot(w)
def score_feeling(s):
return np.array([1,0,-1]).dot(s)
Resultados
Score mayor a 1 = Tweet mas positivo
Score cercano o igual a 0 = Tweet neutro
Score menor a 0 = Tweet negativo
w , s = tweet_analysis(tweet_clean(uno))
print('Para el primer tweet tenemos: ')
print(f'La frecuencia de ocurrencia de las palabras fue: {error(w,s)}')
print(f'La puntuacion es tal que:{score_feeling(s)}')
Para el primer tweet tenemos:
La frecuencia de ocurrencia de las palabras fue: 0.375
La puntuacion es tal que:-1
w , s = tweet_analysis(tweet_clean(dos))
print('Para el segundo tweet tenemos: ')
print(f'La frecuencia de ocurrencia de las palabras fue: {error(w,s)}')
print(f'La puntuacion es tal que:{score_feeling(s)}')
Para el segundo tweet tenemos:
La frecuencia de ocurrencia de las palabras fue: 0.25
La puntuacion es tal que:0
w , s = tweet_analysis(tweet_clean(tres))
print('Para el tercer tweet tenemos: ')
print(f'La frecuencia de ocurrencia de las palabras fue: {error(w,s)}')
print(f'La puntuacion es tal que:{score_feeling(s)}')
Para el tercer tweet tenemos:
La frecuencia de ocurrencia de las palabras fue: 0.25
La puntuacion es tal que:1
w , s = tweet_analysis(tweet_clean(cuatro))
print('Para el cuarto tweet tenemos: ')
print(f'La frecuencia de ocurrencia de las palabras fue: {error(w,s)}')
print(f'La puntuacion es tal que:{score_feeling(s)}')
Para el cuarto tweet tenemos:
La frecuencia de ocurrencia de las palabras fue: 0.25
La puntuacion es tal que:3
#calidad promedio
calidad = (0.375 + 0.25 + 0.25 + 0.25)/4
print(f'La calidad promedio es tal que {calidad}')
La calidad promedio es tal que 0.28125