Red de Respuestas Legales - Derecho de patentes - Cómo utilizar Python para visualizar series temporales de opinión pública

Cómo utilizar Python para visualizar series temporales de opinión pública

¿Cómo procesar por lotes el análisis de sentimientos de la información de los comentarios y presentarlo visualmente en la línea de tiempo? El análisis de la opinión pública no es difícil. Hagámoslo en Python.

Puntos débiles

Usted es el gerente regional de una cadena de restaurantes de ollas calientes y presta gran atención a las evaluaciones de los clientes sobre el restaurante. Érase una vez, lo que te molestaba era que a los clientes no les gustaba escribir reseñas. Recientemente, debido a que el restaurante se ha vuelto popular, hay cada vez más sucursales y cada vez más clientes escriben reseñas, por lo que tiene un nuevo dolor: demasiadas reseñas para leer.

De mí aprendiste acerca de las herramientas de análisis de sentimientos automatizadas, simples y fáciles de usar, y de repente sentiste que habías visto la luz del día.

Encuentras una página de una de tus sucursales en un sitio web de reseñas conocido y le pides al asistente que obtenga los datos del tiempo de revisión y publicación. Debido a que el asistente no utiliza un rastreador, solo puede copiar y pegar comentarios en la página web en Excel. Sólo tenía 27 años cuando salí del trabajo. (Tenga en cuenta que aquí utilizamos datos de reseñas reales. Para evitar causar problemas a los comerciantes reseñados, el nombre del restaurante se cambió a "Restaurante A". Tenga en cuenta.)

Afortunadamente, simplemente Si quieres hacer un experimento, déjalo así. Utilice la herramienta de análisis de sentimiento de información china que presenté antes para obtener el valor de sentimiento de cada comentario por turno. Cuando salen los resultados por primera vez, estás muy emocionado y sientes que has encontrado el arma definitiva en el análisis de la opinión pública.

Pero los buenos tiempos siempre duran poco. Pronto descubrirá que si ejecuta el programa por separado para cada comentario y utiliza el análisis automático, es realmente mejor mirar cada comentario uno por uno.

Qué hacemos

Secuencia

Por supuesto que hay una manera. Podemos usar préstamos o no: ¿Cómo usar Python y el aprendizaje automático para ayudarte a tomar decisiones? El marco de datos presentado en este artículo procesa varios datos a la vez, lo que mejora la eficiencia.

Pero esto no es suficiente, también podemos visualizar los resultados del análisis de sentimiento en series temporales. Así que puedes ver la tendencia de un vistazo: ¿la gente ha estado más satisfecha con los restaurantes en los últimos días o se ha vuelto menos satisfecha?

Lo que mejor procesamos los humanos son imágenes. Porque la larga historia evolutiva nos obliga a mejorar continuamente nuestra capacidad para procesar imágenes de forma rápida y precisa, de lo contrario seremos eliminados por el medio ambiente. De ahí el dicho “una imagen vale más que mil palabras”.

Preparación

Primero, necesitas instalar el paquete Anaconda. Para conocer los pasos detallados del proceso, consulte el artículo "Cómo usar Python para crear una nube de palabras".

El archivo Excel restaurant-comments.xlsx creado por el asistente, descárgalo desde aquí.

Ábrelo en Excel. Si todo está bien, mueva los archivos a nuestro directorio de trabajo de demostración.

Debido a que este ejemplo necesita analizar comentarios chinos, el paquete de software utilizado es SnowNLP. Para conocer los métodos de aplicación básicos del análisis de sentimientos, consulte Cómo utilizar Python para el análisis de sentimientos. 》.

Vaya a la Terminal (macOS, Linux) o al Símbolo del sistema (Windows) de su sistema, ingrese a nuestro directorio de trabajo de demostración y ejecute los siguientes comandos.

Instalar snownlp

pip install ggplot

El entorno de ejecución ha sido configurado.

En la terminal o símbolo del sistema, escriba:

jupyter notebook

Si Jupyter Notebook se está ejecutando normalmente, ahora podemos comenzar a escribir código.

Contraseña

Creamos un nuevo cuaderno de Python 2 en Jupyter Notebook y lo llamamos serie temporal.

Primero, presentamos la herramienta de análisis de marcos de datos Pandas, a la que nos referimos como pd por conveniencia.

Importa Panda como pd

Luego, lee el archivo de datos de Excel:

df = pd.read_excel("Restaurant-Reviews.xlsx")

Veamos si el contenido de lectura está completo:

df.head()

Los resultados son los siguientes:

Presta atención a la línea de tiempo aquí. Si el formato de hora en su archivo de Excel es el mismo que el de aquí, incluida la fecha y la hora, entonces Panda será lo suficientemente inteligente como para ayudarle a identificarlo como formato de hora y luego seguir adelante y hacerlo.

Por otro lado, si la hora que obtienes solo es exacta hasta la fecha, como "2017-04-20", entonces Panda solo la tratará como una cadena y los datos de la cadena no pueden ser utilizado para tiempos posteriores. La solución es agregar las siguientes dos líneas de código aquí:

Importar analizador desde dateutil

df[" date "]= df apply(parser. parse)

De esta manera, obtienes los datos de tiempo correctos.

Después de confirmar que los datos están completos y correctos, debemos realizar un análisis de sentimiento. Hagamos un pequeño experimento con la primera línea de comentarios.

text = df.comments.iloc[0]

Luego llamamos a la herramienta de análisis de sentimiento SnowNLP.

Importar SnowNLP desde snownlp

s = SnowNLP(text)

Mostrar los resultados del análisis de SnowNLP:

American Sentiment

Los resultados son los siguientes:

0.6331975099099649

El valor del análisis de sentimiento se puede calcular correctamente. Sobre esta base, necesitamos definir una función para procesar por lotes todos los comentarios.

def get _sentiment_cn(text):

s = SnowNLP(text) devuelve el sentimiento de s

Luego, usamos el poderoso apply en Python La declaración procesa todas las revisiones a la vez y almacena los valores de opinión resultantes como una columna en un marco de datos, lo que se denomina opinión.

df["sentiment"]= df . comments apply(get _sentiment_cn)

Echemos un vistazo a los resultados del análisis de sentimiento:

df. head()

Se ha generado una nueva opinión de columna. Mencionamos antes que los resultados de SnowNLP oscilan entre 0 y 1, lo que representa la posibilidad de que el resultado del análisis de sentimiento sea positivo. Al observar los primeros datos, descubrimos que en el sitio web de reseñas, las valoraciones de los clientes sobre esta rama son en general positivas y algunas valoraciones son muy positivas.

Sin embargo, las observaciones de pequeñas cantidades de datos pueden sesgar nuestras conclusiones. Promedimos todos los resultados del análisis de sentimiento. Simplemente use la función media().

df.Sentiment.Mean()

Los resultados son los siguientes:

0.7114015318571119

El valor del resultado supera 0,7, el cliente Opinión de esta tienda La actitud general es positiva.

Veamos nuevamente el valor de la mediana, usando la función mediana().

df . opinion . mediana()

Los resultados son los siguientes:

0.9563139038622388

Encontramos un fenómeno interesante: mediana No sólo está por encima del promedio, pero está casi cerca de 1 (perfectamente positivo).

Esto significa que la gran mayoría de las reseñas son abrumadoramente favorables. Sin embargo, hay varios valores atípicos que reducen significativamente el promedio.

Aprovechemos las capacidades de visualización de series temporales del sentimiento para ver visualmente cuándo ocurren estas anomalías y qué tan bajos son sus valores.

Necesitamos utilizar el paquete de herramientas de dibujo ggplot. Inicialmente, este conjunto de herramientas solo estaba disponible en R, lo que hizo que los usuarios de otras herramientas de análisis de datos babearan de envidia. Afortunadamente, se transfirió rápidamente a la plataforma Python.

Presentamos la función de dibujo de ggplot para permitir que Jupyter Notebook muestre imágenes directamente.

% pylab inlinefrom importado por ggplot

Puede haber algunos mensajes de advertencia aquí. No importa, simplemente ignóralo.

Dibujemos un diagrama. Puede ingresar la siguiente línea aquí.

ggplot(aes(x="fecha", y="sentimiento"), data = df)+geom_point()+geom_line(color="blue")+scale_x _ fecha(labels = fecha _ format(" % Y-% m-% d "))

Puedes ver cuán concisa y fácil de usar es la sintaxis de dibujo de ggplot. Solo necesita decirle a Python qué marco de datos planea usar, seleccionar qué columna como eje horizontal y qué columna como eje vertical, primero dibujar los puntos y luego conectar las líneas, y luego puede especificar el color de las líneas. . Entonces, ¿en qué formato desea que se muestren las fechas en el eje X? Todas las configuraciones de parámetros son similares al lenguaje natural y son intuitivas y fáciles de entender.

Después de la ejecución, podrás ver el gráfico de resultados.

En la figura encontramos que muchos comentarios positivos tienen valores de análisis de sentimiento extremadamente altos. Al mismo tiempo, también encontramos claramente aquellos puntos con valores extremadamente bajos. El valor del análisis de sentimiento del comentario correspondiente es cercano a 0. Python consideró que estos comentarios básicamente no tenían sentimientos positivos.

En términos de tiempo, en los últimos días ha habido críticas negativas graves casi cada pocos días.

Como gerente, es posible que usted se encuentre con alfileres y agujas. Espero saber que pasó pronto. No es necesario buscar en un marco de datos o un archivo de Excel para encontrar la reseña con el valor de opinión más bajo. Pandas, el marco de datos de Python, le proporciona una muy buena función de clasificación. Supongamos que desea encontrar el que tiene el valor de análisis de sentimiento más bajo entre todos los comentarios, puede hacer esto:

df.sort(['sentiment'])[:1]

Los resultados son los siguientes:

¡El resultado del análisis de sentimiento es casi 0! Sin embargo, la información de anotación que se muestra en el marco de datos aquí está incompleta. Necesitamos imprimir el comentario en su totalidad.

print(df . sort([' perspectiva ']).iloc[0].

Comentario)

La información completa del comentario es la siguiente:

Este es el Día de San Valentín y nunca antes había salido el Día de San Valentín. No fue porque no tuviera novio, sino porque sentí que había demasiada gente, así que lo extrañé deliberadamente. Esta vez tenía muchas ganas de comer en el Restaurante A, así que salí ese día. A partir de las cuatro de la tarde vi una cola de más de 100 personas. Si tuviera que conducir una hora desde casa, haría cola en línea con dos horas de anticipación, casi las seis. Cuando llegué allí, vi que solo había un poco más de 30 delante del número. Pensé que estaba bien. Puedo comerlo más tarde. Inesperadamente, fue una tragedia. Desde el momento en que llegamos y nos sentamos en la sala de espera, eran alrededor de las 10:20. Muchas veces quise irme. Jaja, ay, no comí hasta las nueve de la mañana. Los camareros se sienten menos atentos que antes, pero lo cierto es que una sola persona puede ocuparse de varias mesas. Qué gran día libre hoy. Así que hice la mayoría de los recados yo solo y le pedí al camarero que trajera los camarones. No tomé demasiado. Entonces el ambiente se sintió bien en términos de higiene, pero era un poco ruidoso. Como antes, pero lo más fácil de usar del Restaurante A es que después de esperar más de dos horas, nos dieron una tarjeta de descuento, que podemos usar siempre. Este sentimiento es bastante bueno. Es un restaurante, pero más humano de lo habitual.

Al leer, puedes descubrir que este cliente realmente tuvo una mala experiencia: después de esperar tanto, usó la palabra "tragedia", además, el servicio no fue atento y el ambiente era ruidoso; Es la aparición de estas palabras lo que hace que el resultado del análisis sea bajo.

Afortunadamente, los clientes son muy razonables y han hecho comentarios positivos sobre el enfoque humano de la tienda.

Como puedes ver en este ejemplo, aunque el análisis de sentimientos puede ayudarte a procesar automáticamente una gran cantidad de contenido, no puedes confiar completamente en él.

El análisis del lenguaje natural no solo analiza las palabras clave que expresan emociones fuertes, sino que también considera varios factores, como el método de expresión y el contexto. Estos contenidos son la frontera de la investigación en el campo del procesamiento del lenguaje natural. Esperamos aplicarlo a los resultados de la investigación de los científicos lo antes posible para mejorar la precisión del análisis de sentimientos.

Sin embargo, incluso si el procesamiento automatizado actual del análisis de opiniones no es muy preciso, aún puede ayudarle a localizar rápidamente aquellas anomalías que pueden ser problemáticas. En términos de eficiencia, es mucho mayor que el procesamiento manual.

Diste un suspiro de alivio después de leer este comentario. Después de resumir experiencias y aprendizajes, decides llevar a cabo servicios humanizados hasta el final. También pensó en recopilar datos sobre el tiempo de espera de los usuarios y utilizar el análisis de datos para proporcionar expectativas de tiempo de espera más razonables para los clientes que esperan para cenar. Esto evitará que los clientes esperen hasta muy tarde.

¡Enhorabuena, manager! En la era de la inteligencia de datos, está en el camino correcto.

A continuación, debes leer atentamente el siguiente comentario negativo...

Discusión

Además del análisis de sentimiento y la visualización de series temporales, ¿qué opinas? de la información del comentario chino? Además de los sitios web de reseñas, ¿qué otras fuentes de datos conoce para el análisis de la opinión pública? Bienvenido a compartir su mensaje con todos para que podamos comunicarnos y discutir juntos.

Si estás interesado en mi artículo, dale me gusta, síguelo en WeChat y fija mi cuenta oficial de WeChat "nkwangshuyi" en la parte superior.

Si tienes amigos que realizan investigaciones y análisis de la opinión pública, puedes enviarles este artículo y aprender y mejorar juntos.