Cómo construir un analizador de sentimientos de Twitter en Python usando TextBlob

Este blog se basa en el video Análisis de sentimiento de Twitter: Aprenda Python para la ciencia de datos n. ° 2 de Siraj Raval. En este desafío, crearemos un analizador de sentimientos que verifica si los tweets sobre un tema son negativos o positivos. Usaremos el bloque de texto de la biblioteca Python para esto.

El análisis de sentimientos, también llamado minería de opiniones o inteligencia artificial emocional, es el proceso de determinar si un escrito es positivo, negativo o neutral. Un caso de uso común de esta tecnología es descubrir cómo se sienten las personas sobre un tema en particular. El análisis de sentimientos se aplica ampliamente a las reseñas y las redes sociales para una variedad de aplicaciones.

El análisis de sentimientos se puede realizar de muchas formas diferentes. Muchas marcas y especialistas en marketing utilizan herramientas basadas en palabras clave que clasifican los datos (es decir, redes sociales, noticias, reseñas, blogs, etc.) como positivos / negativos / neutrales.

El etiquetado automatizado de opiniones generalmente se logra a través de listas de palabras. Por ejemplo, las menciones de "odio" se etiquetarían negativamente.

Puede haber dos enfoques para el análisis de sentimientos.

1. Métodos basados ​​en léxico

2. Métodos basados ​​en Machine Learning.

En este problema, utilizaremos un método basado en Lexicon.

Los métodos basados ​​en léxico definen una lista de palabras positivas y negativas, con una valencia - (por ejemplo, 'agradable': +2, 'bueno': +1, 'terrible': -1,5, etc.). El algoritmo busca un texto para encontrar todas las palabras conocidas. Luego combina sus resultados individuales sumando o promediando. Algunas extensiones pueden verificar algunas reglas gramaticales, como la negación o el modificador de sentimiento (como la palabra "pero", que pondera los valores de sentimiento en el texto de manera diferente, para enfatizar el final del texto).

Construyamos el analizador ahora.

API de Twitter

Antes de comenzar a codificar, debemos registrarnos en la API de Twitter //apps.twitter.com/. Aquí necesitamos registrar una aplicación para generar varias claves asociadas con nuestra API. La API de Twitter se puede utilizar para realizar muchas acciones como crear y buscar.

Ahora, después de crear la aplicación, podemos comenzar a codificar.

Necesitamos instalar dos paquetes:

pip instalar tweepy

Este paquete se utilizará para manejar la API de Twitter.

pip instalar textblob

Este paquete se utilizará para el análisis de sentimientos.

sentiment_analyzer.py

import tweepyfrom textblob import TextBlob

Necesitamos declarar las variables para almacenar las diversas claves asociadas con la API de Twitter.

consumer_key = ‘[consumer_key]’
consumer_key_secret = ‘[consumer_key_secret]’
access_token = ‘[access_token]’
access_token_secret = ‘[access_token_secret]’

El siguiente paso es crear una conexión con la API de Twitter usando tweepy con estos tokens.

Tweepy

Tweepy admite la autenticación OAuth. La autenticación es manejada por la clase tweepy.OAuthHandler .

Se debe crear una instancia de OAuthHandler pasando un token de consumidor y un secreto.

En esta instancia de autenticación, llamaremos a una función set_access_token pasando el access_token y el access_token_secret.

Finalmente, creamos nuestra instancia de API tweepy pasando esta instancia de autenticación a la función API de tweepy.

auth = tweepy.OAuthHandler(consumer_key, consumer_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

Ahora podemos buscar en Twitter cualquier tema utilizando el método de búsqueda de la API.

public_tweets = api.search(‘Dogs’)

Ahora obtendremos todos los tweets relacionados con el tema 'Perros'. Podemos realizar análisis de sentimiento utilizando la biblioteca textblob.

TextBlob

TextBlob es una biblioteca de Python (2 y 3) para procesar datos textuales. Proporciona una API simple para sumergirse en tareas comunes de procesamiento de lenguaje natural (NLP), como etiquetado de parte del discurso, extracción de frases nominales, análisis de sentimientos, clasificación, traducción y más.

Un bloque de texto se puede crear de la siguiente manera (ejemplo, y no parte del código original):

example = TextBlob("Python is a high-level, general-purpose programming language.")

Y la tokenización se puede realizar mediante los siguientes métodos:

palabras : devuelve las palabras del texto

uso:

example.words

oraciones: devuelve las oraciones de texto

uso:

example.sentences

Etiquetado de parte de la voz

Se puede acceder a las etiquetas de parte del discurso a través de la propiedad de etiquetas .

wiki.tags[('Python', 'NNP'), ('is', 'VBZ'), ('a', 'DT'), ('high-level', 'JJ'), ('general-purpose', 'JJ'), ('programming', 'NN'), ('language', 'NN')]

Análisis de los sentimientos

La propiedad de sentimiento devuelve una tupla con nombre de la forma Sentiment (polaridad, subjetividad). La puntuación de polaridad es un valor flotante dentro del rango [-1.0, 1.0]. La subjetividad es un flotador dentro del rango [0.0, 1.0] donde 0.0 es muy objetivo y 1.0 es muy subjetivo.

Ahora volvamos al código.

Podemos iterar la matriz publice_tweets y verificar el sentimiento del texto de cada tweet en función de la polaridad.

for tweet in public_tweets: print(tweet.text) analysis = TextBlob(tweet.text) print(analysis.sentiment) if analysis.sentiment[0]>0: print 'Positive' elif analysis.sentiment[0]<0: print 'Negative' else: print 'Neutral'

Ahora ejecutamos el código usando lo siguiente:

python sentiment_analyzer.py

y obtenemos la salida:

Podemos ver que se muestra el sentimiento del tweet.

Este es un ejemplo de cómo se puede realizar el análisis de sentimientos en datos de redes sociales como Twitter. ¡Espero que le sea útil!

Find the code at //github.com/amkurian/twitter_sentiment_challenge