Divers services de classification des sentiments en ligne sont maintenant disponibles. Des géants tels que Google, Amazon ou Microsoft offrent leurs solutions cloud pour le traitement du langage naturel. Mais si vous ne prévoyez pas de payer 1-2 $ pour 1000 appels d’API (augmentation des prix lorsque l’examen contient plus de 1000 caractères) et / ou est prêt à préparer votre service de classification local ou votre programme, vous pouvez utiliser des classificateurs hors ligne. Il existe plusieurs classificateurs .NET pour le cas hors ligne qui seront discutés dans ce post. Les sujets suivants seront couverts ici:
[Qu’est-ce que l’analyse des sentiments?] (# What-Sentiment-Analysis)
Qu’est-ce que la classification des sentiments (analyse)?
La classification des sentiments est une approche puissante pour mieux comprendre ce que les clients pensent de vos produits ou de vos services. Il peut également vous aider dans la tâche de surveillance de la marque. La classification des sentiments vous permet de classer les émotions et les commentaires des gens qu’ils publient sur les réseaux sociaux, les blogs ou les articles. Il existe plusieurs taxonomies courantes qui sont utilisées pour la classification des sentiments.
- Binaire:
- négatif;
- positif;
- 3 classes:
- négatif;
- neutre;
- positif;
- 5 classes
- De 1 à 5 étoiles Dans tous les cas, les sentiments négatifs sont les plus importants pour l’analyse. Ainsi, la tâche principale que le classificateur de sentiment devrait résoudre ressemble à “Ce texte est-il négatif?” et «combien négatif est-ce?».
Metrics
La précision est une métrique simple et évidente. Il a des inconvénients bien connus lorsque les cours sont déséquilibrés. Cependant, il peut être utilisé dans notre cas de classes équilibrées. Il est également largement utilisé dans la littérature scientifique. Les classificateurs répertoriés ci-dessous ne peuvent être comparés que dans les tâches de classification binaire car l’un d’eux n’a pas de classe «neutre».
Classification des sentiments hors ligne (C #)
Il existe plusieurs bibliothèques C # qui pourraient être trouvées via Google, NuGet E.T.C. Mais ils devraient être vérifiés manuellement parce que beaucoup d’entre eux ne sont en fait que des SDK pour les API cloud. Les packages suivants ont été collectés après la vérification manuelle de la classification des sentiments C # Libraries:
- GroupDocs.classification;
- Vadersharp;
- Stanfordnlp;
- SentimentAnalyzer;
- Wikile; Ce sont tous des bibliothèques C # Classification des sentiments hors ligne. Décrivons-les plus en détail.
GroupDocs.Classification
Licence: Fichier de licence
Complexité de l’installation: facile ** Précision:**93.3 (évaluation) / 96.3 (sous licence) {.wp-block-heading} GroupDocs.classification est une bibliothèque avec son propre moteur intégré pour la classification du texte et des documents. Les modèles font également partie du package A NuGet. L’installation est simple: il vous suffit d’installer le package NuGet. Il existe une différence entre l’évaluation et les versions sous licence. Pour la version d’évaluation, vous devez diviser le texte en morceaux de 100 caractères, puis en moyenne les résultats. GroupDocs.classification montre une précision de 93,3% en mode d’évaluation et 96,3% lorsque la licence est appliquée.
vadersharp
Licence: MIT
Complexité de l’installation: facile Précision: 77,6% {.wp-block-heading} Vadersharp est une solution populaire pour la classification du sentiment C # (analyse). Il fonctionne très rapidement et traite les messages par seconde sur un PC domestique ordinaire, pas les machines de serveur. L’installation est également simple (juste installer NuGet package). Cependant, il existe également un inconvénient important: la précision n’est pas aussi parfaite que le temps de traitement. Il atteint une précision de 78% sur l’ensemble de données de test.
StanfordNLP
Licence: GPL V2
Complexité de l’installation: dur. Précision: 70% {.wp-block-heading} Stanford NLP est une bibliothèque C # basée sur la bibliothèque Java correspondante pour le traitement du langage naturel. Il y a des difficultés avec l’installation. Il est nécessaire d’installer la version Java de Stanford NLP et de copier les modèles dans le répertoire actuel du programme si nécessaire. Il y a également des problèmes avec la compatibilité .NET Core 3.0. La précision et le temps de traitement sont instables pour cette bibliothèque et semblent dépendre de la longueur du texte. Pour les textes courts de l’ensemble de données SST-2, il atteint une précision de 80,2% avec des secondes par exemple de temps de traitement. Pour les textes plus longs du domaine croisé, la précision diminue à 70%. et le temps de traitement augmente à 1 min ou plus par texte.
SentimentAnalyzer
Licence: MIT
Complexité de l’installation: médium Précision: 79,1% {.wp-block-heading} Cette bibliothèque est basée sur ml.net. Pendant l’installation, il peut y avoir des problèmes liés aux travaux de ML.NET. Il s’agit d’une bibliothèque dangereuse, elle nécessite une configuration (x86 / x64) explicitement, et vous devrez peut-être également installer certaines dépendances. SentimentAnalyzer Renvoie une classe positive ou négative et un score correspondant. C’est la raison pour laquelle la tâche de classification binaire a été utilisée pour cette comparaison. Le meilleur résultat peut être obtenu avec un seuil précisément sélectionné. La précision a atteint 79% après l’optimisation de la valeur de seuil.
wikile
Licence: Apache License 2.0
Complexité de l’installation: simple Précision: Aucun {.wp-block-heading} Une autre bibliothèque de classification des sentiments C # est wikile. Cette bibliothèque doit être formée avant de tester pour produire des résultats adéquats. La précision ne peut donc pas être calculée pour la bibliothèque.
Ensembles de données
Nous avons utilisé un ensemble de données inter-domaines à des fins de test. GroupDocs.classification n’a pas été formé dessus. Le reste des bibliothèques ne l’a probablement pas utilisé non plus dans la formation. Nous enverrons le résultat à toute partie intéressée par e-mail. Veuillez créer un problème dans le repo correspondant github. 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).
Résultats
Le tableau 1 montre la précision (%) pour les classificateurs expérimentés. Tableau 1.
SST-2 | Domain croisé | |
---|---|---|
GroupDocs.classification | 93.3 (Licencié: 94.7) | 93,3 (Licencié: 96.3) |
SentimentAnalyzer | 58,5 | 79.1 |
Stanford NLP | 80.7 | ~ 70 |
Vadersharp | 68.7 | 77.6 |
La plupart d’entre eux montrent différents résultats pour ces 2 ensembles de données. Il semble que la cause d’un tel comportement est que les textes SST-2 sont plus courts que les textes inter-domaines. Il y a également eu des tentures pendant les tests NLP de Stanford sur Crossdomain pour un texte de plus de 500 caractères. C’est pourquoi la précision du domaine transversal marqué de «~». |
Analyse des erreurs communes
Les erreurs de classifications suivantes sont typiques: _ «Comme son star, son attitude et son oubli.» _ - Difficile de comprendre ce que la personne signifie. _ “Un snoozer bien joué et bien intentionné.” _ Ou _ “Gee, un deuxième assassin a tiré Kennedy?” _ - Sarcasme ou ironie. _ «Point moot» _ - Textes trop courts. De tels problèmes se produisent dans tous les produits de classification du sentiment (analyse). Par exemple, le sarcasme, il est subjectif. Par conséquent, il est difficile de former un modèle de sarcasme et difficile de le classer correctement. Mais espérons que ces faiblesses seront éliminées dans un avenir proche.
Conclusion
Bien que toutes les bibliothèques ci-dessus soient appropriées pour la classification des sentiments en C #, GroupDocs.classification est la plus précise. Donc, c’est le meilleur pour la recherche de sentiments négatifs ou positifs dans la grande énorme des mentions et / ou des critiques. En conclusion, il convient de noter qu’il existe également un cas important de classification négative / neutre / positive. Il sera également pris en compte à l’avenir.
Code
Nous fournissons un code qui a été utilisé pour ce poste de blog: {{LINE_90}}