El análisis de sentimientos es sorprendentemente preciso y puede crear esta sencilla aplicación Tkinter para probarla.

El análisis de sentimientos es una técnica para determinar el tono emocional de un texto. Utiliza procesamiento de lenguaje natural, análisis de texto y lingüística computacional. Usando esto, puede clasificar el tono en positivo, neutral o negativo. Esto ayuda a las empresas a analizar los comentarios de los clientes en las redes sociales, reseñas y encuestas.

Con base en estos datos, pueden crear estrategias para sus productos y campañas de manera más efectiva. Descubra cómo puede crear una aplicación que detecte opiniones mediante Python.

El módulo Tkinter y vaderSentiment

Tkinter te permite crear aplicaciones de escritorio. Ofrece una variedad de widgets como botones, etiquetas y cuadros de texto que facilitan el desarrollo de aplicaciones. Puedes usar Tkinter para crear una aplicación de diccionario en Python o para cree su propia aplicación de noticias que actualice las historias a través de una API.

instagram viewer

Para instalar Tkinter, abre una terminal y ejecuta:

pip instalar tkinter

VADER (Valence Aware Dictionary and sEntiment Reasoner) es una herramienta de análisis de sentimientos basada en reglas y léxico. Es preconstruido y ampliamente utilizado en Procesamiento natural del lenguaje. El algoritmo tiene un conjunto de palabras predefinidas que representan diferentes sentimientos. Basado en las palabras encontradas en la oración, este algoritmo da una puntuación de polaridad. Con esta puntuación, puede identificar si la oración es positiva, negativa o neutra.

Para instalar el paquete vaderSentiment en Python, ejecute este comando de terminal:

pip instalar vaderSentiment

Cómo detectar sentimientos usando Python

Puede encontrar el código fuente de este programa de ejemplo en su repositorio GitHub.

Comience importando los módulos VADER y tkinter requeridos:

de vaderSentiment.vaderSentiment importar Analizador de intensidad de sentimiento
de tkinter importar *

Luego define una función, limpiar todo(). Su propósito es borrar los campos de entrada, lo que puede hacer usando el borrar() método a partir de un índice inicial de 0 al índice final, FIN.

definitivamentelimpiar todo():
camponegativo.eliminar(0, FIN)
neutralField.delete(0, FIN)
campoPositivo.eliminar(0, FIN)
campoGeneral.eliminar(0, FIN)
área de texto.eliminar(1.0, FIN)

Definir una función, detectar_sentimiento(). Use el método get para buscar la palabra ingresada en el área de texto widget y crear un objeto de Analizador de intensidad de sentimiento clase. Utilizar el puntuaciones_de_polaridad en el texto que buscó y aplique el algoritmo de análisis de sentimiento VADER.

definitivamentedetectar_sentimiento():
sentencia = areatexto.get("1.0", "fin")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (oración)

Extraiga la puntuación de sentimiento negativo ('negativo') y convertirlo en un porcentaje. Inserte el valor obtenido en el campo negativo a partir de la posición 10. Repita el mismo proceso para la puntuación de sentimiento neutral ('neu') y la puntuación de sentimiento positivo('pos').

 cadena = str (dict_sentimiento['negativo'] * 100)
camponegativo.insertar(10, cadena)

cadena = str (dict_sentimiento['neu'] * 100)
camponeutro.insertar(10, cadena)

cadena = str (dict_sentimiento['pos'] * 100)
campoPositivo.insertar(10, cadena)

Extraiga el valor de la clave compuesta que contiene el sentimiento general de la oración. Si el valor es mayor o igual a 0,05, la sentencia es positiva. Si el valor es menor o igual a -0,05, la oración es negativa. Para valores entre -0,05 y 0,05, es una declaración neutral.

si sentimiento_dict['compuesto'] >= 0.05:
cadena = "Positivo"
elif sentimiento_dict['compuesto'] <= - 0.05:
cadena = "Negativo"
demás:
cadena = "Neutral"

Inserta el resultado en el campo general desde la 10ª posición:

 campoGeneral.insertar(10, cadena)

Inicialice una ventana de interfaz gráfica de usuario utilizando Tkinter. Establezca el color de fondo, el título y las dimensiones de la ventana. Crea cinco etiquetas. Uno que le pide al usuario que ingrese una oración y los otros cuatro para los diferentes sentimientos. Establezca el elemento principal en el que desea colocarlo, el texto que debe mostrar y los estilos de fuente que debe tener junto con el color de fondo.

Defina un widget de texto para recibir la oración del usuario. Establezca el elemento principal en el que desea colocarlo, su altura, ancho, estilos de fuente y el color de fondo que debe tener. Defina tres botones. Uno para realizar el análisis de opinión, otro para borrar el contenido después del uso y otro para salir de la aplicación. Establezca su ventana principal, el texto que debe mostrar, su color de fondo, estilos de fuente y el comando que desea ejecutar al hacer clic.

si __nombre__ == "__principal__":
gui = Tk()
gui.config (fondo="#A020f0")
gui.título("Analizador de sentimiento VADER")
gui.geometría("400x700")
enterText = Etiqueta (gui, text="Ingrese su oración:",fuente="arial 15 negrita",bg="#A020f0")
negativo = etiqueta (gui, texto ="Porcentaje negativo: ", fuente="arial 15",bg="#A020f0")
neutral = etiqueta (gui, texto ="Porcentaje neutro: ", fuente="arial 15",bg="#A020f0")
positivo = Etiqueta (gui, texto="Porcentaje positivo: ", fuente="arial 15",bg="#A020f0")
global = Etiqueta (gui, text="La oración general es: ", fuente="arial 15",bg="#A020f0")
textArea = Texto (gui, altura =5, ancho=25, fuente="arial 15", bg="#cf9fff")
comprobar = Botón (gui, texto ="Comprobar sentimiento", bg="#e7305b", fuente=("arial", 12, "atrevido"), comando=detectar_sentimiento)
borrar = Botón (gui, texto ="Claro", bg="#e7305b", fuente=("arial", 12, "atrevido"), comando=borrarTodo)
Salir = Botón (gui, text="Salida", bg="#e7305b", fuente=("arial", 12, "atrevido"), comando=salir)

Defina cuatro campos de entrada para los diferentes sentimientos y establezca su ventana principal y estilos de fuente.

 camponegativo = Entrada (gui, font="arial 15")
neutralField = Entrada (gui, font="arial 15")
campoPositivo = Entrada (gui, font="arial 15")
campo general = Entrada (gui, fuente ="arial 15")

Use una cuadrícula que consta de 13 filas y tres columnas para el diseño general. Coloque los diversos elementos, como etiquetas, campos de entrada de texto y botones en varias filas y columnas, como se muestra. Agregue el relleno necesario donde sea necesario. Selecciona el pegajoso opción a "W" para alinear a la izquierda los textos dentro de su celda.

 enterText.grid (fila=0, columna=2, pady=15)
textArea.grid (fila=1, columna=2, padx=60, pady=10, pegajoso=W)
comprobar.cuadrícula (fila=2, columna=2, pady=10)
negativo.cuadrícula (fila=3, columna=2, pady=10)
neutral.grid (fila=5, columna=2, pady=10)
positivo.cuadrícula (fila=7, columna=2, pady=10)
total.cuadrícula (fila=9, columna=2, pady=5)
camponegativo.grid (fila=4, columna=2)
neutralField.grid (fila=6, columna=2)
campopositivo.grid (fila=8, columna=2)
campoGeneral.grid (fila=10, columna=2, pady=10)
clear.grid (fila=11, columna=2, pady=10)
Exit.grid (fila=12, columna=2, pady=10)

El bucle principal() La función le dice a Python que ejecute el ciclo de eventos de Tkinter y escuche los eventos hasta que cierre la ventana.

 gui.mainloop()

Reúna todo el código y podrá usar el programa corto resultante para detectar sentimientos.

El resultado de la detección de sentimientos usando Python

Al ejecutar este programa, aparece la ventana VADER Sentiment Analyzer. Cuando probamos el programa en una oración positiva, la detectó con una precisión del 79%. Al probar una declaración neutral y una negativa, el programa pudo detectar con un 100% y un 64,3% de precisión, respectivamente.

Alternativas para el análisis de sentimiento usando Python

Puede usar Textblob para análisis de opiniones, etiquetado de voz y clasificación de texto. Tiene una API consistente y un clasificador de polaridad de sentimiento incorporado. NLTK es una biblioteca completa de NLP que contiene una amplia gama de herramientas para el análisis de texto, pero tiene una curva de aprendizaje pronunciada para los principiantes.

Una de las herramientas más populares es IBM Watson NLU. Está basado en la nube, admite varios idiomas y tiene características como reconocimiento de entidades y extracción de claves. Con la introducción de GPT, puede usar la API de OpenAI e integrarla en sus aplicaciones para obtener opiniones precisas y confiables de los clientes en tiempo real.