Varios servicios de clasificación de sentimientos en línea están disponibles ahora. Gigantes como Google, Amazon o Microsoft ofrecen sus soluciones en la nube para el procesamiento del lenguaje natural. Pero si no planea pagar 1-2 $ por 1000 llamadas de API (el precio aumenta cuando la revisión tiene más de 1000 caracteres) y/o está listo para preparar su servicio o programa de clasificación local, entonces puede usar clasificadores fuera de línea. Hay varios clasificadores .NET para el caso fuera de línea que se discutirá en esta publicación. Los siguientes temas se cubrirán aquí:

-[¿Qué es el análisis de sentimientos?] (#What-is-sentiment-análisis)

¿Qué es la clasificación de sentimientos (análisis)?

La clasificación de sentimientos es un enfoque poderoso para comprender mejor cómo se sienten los clientes sobre sus productos o servicios. También puede ayudarlo en la tarea de monitoreo de marca. La clasificación de sentimientos le permite clasificar las emociones y comentarios de las personas que publican en las redes sociales, blogs o artículos. Hay varias taxonomías comunes que se utilizan para la clasificación de sentimientos.

  • Binario:
    • negativo;
    • positivo;
  • 3 clases:
    • negativo;
    • neutral;
    • positivo;
  • 5 clases
    • De 1 a 5 estrellas En todos los casos, los sentimientos negativos son los más importantes para el análisis. Entonces, la tarea principal que el clasificador de sentimiento debería resolver se ve como “¿ese texto es negativo?” y “¿Cuánto es negativo?”.

Métricas

La precisión es una métrica simple y obvia. Tiene desventajas bien conocidas cuando las clases están desequilibradas. Sin embargo, se puede usar en nuestro caso de clases equilibradas. También se usa ampliamente en la literatura científica. Los clasificadores enumerados a continuación solo se pueden comparar en tareas de clasificación binaria porque una de ellas no tiene una clase “neutral”.

Clasificación de sentimientos fuera de línea (C#)

Hay múltiples bibliotecas de C# que se pueden encontrar a través de Google, Nuget E.T.C. Pero deben verificarse manualmente porque muchos de ellos son solo SDK para API de nubes. Los siguientes paquetes se recopilaron después de la verificación manual de la clasificación de sentimientos Bibliotecas C#:

  • Groupdocs.Classificación;
  • Vadersharp;
  • Stanfordnlp;
  • Sentimentanalzer;
  • Wikiled; Todos son bibliotecas C# de clasificación de sentimientos fuera de línea. Describámoslos con más detalle.

Groupdocs.Classification

Licencia: Archivo de licencia

Complejidad de la instalación: fácil ** Precisión:**93.3 (Evaluación) / 96.3 (Licencia) {.wp-Block-Heading} Groupdocs.Classification es una biblioteca con su propio motor incorporado para la clasificación de texto y documentos. Los modelos también son parte del paquete A Nuget. La instalación es simple: solo necesita instalar el paquete Nuget. Hay una diferencia entre la evaluación y las versiones con licencia. Para la versión de evaluación, debe dividir el texto en trozos de 100 caracteres y luego promediar los resultados. GroupDocs. La clasificación muestra el 93.3% de precisión en el modo de evaluación y 96.3% cuando se aplica la licencia.

Vadersharp

Licencia: MIT

Complejidad de la instalación: fácil Precisión: 77.6% {.wp-Block-Heading} Vadersharp es una solución popular para la clasificación de sentimientos de C# (análisis). Funciona muy rápido y procesa mensajes por segundo en una PC de casa regular, no sobre las máquinas de servidor. La instalación también es simple (solo instale NUGET paquete). Sin embargo, también existe una desventaja importante: la precisión no es tan perfecta como el tiempo de procesamiento. Logra una precisión del 78% en el conjunto de datos de prueba.

StanfordNLP

Licencia: GPL V2

Complejidad de la instalación: Difícil. Precisión: 70% {.wp-Block-Heading} Stanford NLP es una biblioteca C# basada en la biblioteca Java correspondiente para el procesamiento del lenguaje natural. Hay algunas dificultades con la instalación. Es necesario instalar la versión Java de Stanford NLP y copiar los modelos al directorio actual del programa si es necesario. También hay problemas con la compatibilidad .NET Core 3.0. La precisión y el tiempo de procesamiento son inestables para esta biblioteca y parecen depender de la longitud del texto. Para los textos cortos del conjunto de datos SST-2, logra una precisión del 80.2% con segundos por ejemplo de tiempo de procesamiento. Para textos más largos del dominio cruzado uno, la precisión disminuye al 70%. y el tiempo de procesamiento aumenta a 1 min o más por texto.

SentimentAnalyzer

Licencia: MIT

Complejidad de la instalación: medio Precisión: 79.1% {.wp-Block-Heading} Esta biblioteca está ml.net-basada. Durante la instalación, puede haber problemas relacionados con el trabajo de ML.NET. Esta es una biblioteca insegura, requiere la configuración (x86 / x64) explícitamente, y es posible que también deba instalar algunas dependencias. SentimentAnalyzer Devuelve la clase positiva o negativa y la puntuación correspondiente. Es la razón por la cual se usó la tarea de clasificación binaria para esa comparación. El mejor resultado se puede lograr con un umbral seleccionado con precisión. La precisión alcanzó el 79% después de la optimización del valor umbral.

Wikiled

Licencia: Licencia de Apache 2.0

Complejidad de la instalación: simple Precisión: ninguno {.wp-Block-Heading} Otra biblioteca de clasificación de sentimientos C# está Wikily. Esta biblioteca debe ser entrenada antes de probar para producir resultados adecuados. Entonces la precisión no se puede calcular para la biblioteca.

Conjuntos de datos

Utilizamos un conjunto de datos de dominio cruzado para fines de prueba. Groupdocs.clasificación no ha sido entrenado en él. El resto de las bibliotecas probablemente tampoco lo usaron en el entrenamiento. Enviaremos el resultado a cualquier parte interesada por correo electrónico. Cree un problema en el repositorio Github correspondiente. 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).

Resultados

La Tabla 1 muestra precisión (%) para los clasificadores experimentados. Tabla 1.

SST-2Dominio cruzado
Groupdocs.Clasificación93.3 (Licencia: 94.7)93.3 (Licencia: 96.3)
Sentimentanalzer58.579.1
Stanford NLP80.7~ 70
Vadersharp68.777.6
La mayoría de ellos muestran resultados diferentes para esos 2 conjuntos de datos. Parece que la causa de tal comportamiento es que los textos SST-2 son más cortos que los textos de dominio cruzado. También hubo algunos problemas durante las pruebas de Stanford NLP en CrossDomain para un texto de más de 500 caracteres. Es por eso que la precisión de dominio cruzado marcada con “~”.

Análisis de errores comunes

Las siguientes clasificaciones erróneas son típicas: _ “Como son su estrella, su actitud y su olvido”. _ - Es difícil entender lo que la persona significa. _ “¿Un Snoozer bien actuado y bien intencionado”. _ O _ “Caramba, un segundo asesino disparó a Kennedy?” _ - Sarcasmo o ironía. _ “Punto discutible” _ - Textos demasiado cortos. Tales problemas ocurren en todos los productos de clasificación de sentimientos (análisis). Por ejemplo, sarcasmo, es subjetivo. Por lo tanto, es difícil entrenar un modelo de sarcasmo y difícil clasificarlo correctamente. Pero esperemos que estas debilidades se eliminen en el futuro cercano.

Conclusión

Si bien todas las bibliotecas anteriores son apropiables para la clasificación de sentimientos en C#, Groupdocs.classificación es la más precisa. Por lo tanto, es el mejor para la búsqueda de sentimientos negativos o positivos en la gran cantidad de menciones y/o revisiones. En conclusión, debe tenerse en cuenta que también existe un caso importante de clasificación negativa/neutral/positiva. También se considerará en el futuro.

Código

Proporcionamos un código que se usó para este blog-post: {{LINE_90}}