Jetzt sind verschiedene Online -Sentiment -Klassifizierungsdienste verfügbar. Solche Riesen wie Google, Amazon oder Microsoft bieten ihre Cloud -Lösungen für die Verarbeitung natürlicher Sprache an. Wenn Sie jedoch nicht planen, 1-2 $ für 1000 API-Anrufe zu bezahlen (Preiserhöhungen, wenn die Überprüfung mehr als 1000 Zeichen enthält) und/oder bereit sind, Ihren lokalen Klassifizierungsdienst oder Ihr Programm vorzubereiten, können Sie Offline-Klassifizierer verwenden. Es gibt mehrere .NET -Klassifizierer für den Offline -Fall, die in diesem Beitrag erörtert werden. Die folgenden Themen werden hier behandelt:

-[Was ist die Analyse der Stimmungsanalyse?] (#Was-is-Sentiment-Analyse)

Was ist die Sentiment -Klassifizierung (Analyse)?

Die Klassifizierung der Stimmung ist ein leistungsstarker Ansatz, um besser zu verstehen, wie Kunden über Ihre Produkte oder Dienstleistungen (en) denken. Es kann Ihnen auch bei der Markenüberwachungsaufgabe helfen. Mit der Sentiment -Klassifizierung können Sie die Emotionen und Feedbacks der Menschen klassifizieren, die sie in sozialen Medien, Blogs oder Artikeln veröffentlichen. Es gibt mehrere gemeinsame Taxonomien, die für die Klassifizierung der Stimmung verwendet werden.

  • Binär:
    • negativ;
    • positiv;
  • 3-Klasse:
    • negativ;
    • neutral;
    • positiv;
  • 5 Klassen
    • von 1 bis 5 Sternen In allen Fällen sind negative Gefühle für die Analyse die wichtigsten. Die Hauptaufgabe, die der Sentiment -Klassifizierer lösen sollte, sieht so aus wie “Ist dieser Text negativ?” und “wie viel negativ ist es?”.

Metriken

Genauigkeit ist eine einfache und offensichtliche Metrik. Es hat bekannte Nachteile, wenn Klassen unausgeglichen sind. Es kann jedoch in unserem Fall ausgewogener Klassen verwendet werden. Es wird auch in der wissenschaftlichen Literatur häufig verwendet. Die unten aufgeführten Klassifikatoren können nur bei Binärklassifizierungsaufgaben verglichen werden, da einer von ihnen keine “neutrale” Klasse hat.

Offline -Sentiment -Klassifizierung (C#)

Es gibt mehrere C# -Bibliotheken, die über Google, Nuget E.T.C. Aber sie sollten manuell überprüft werden, weil viele von ihnen eigentlich nur SDKs für Cloud -APIs sind. Die nächsten Pakete wurden nach manueller Überprüfung der Sentiment -Klassifizierung C# Bibliotheken gesammelt:

  • GroupDocs.Classification;
  • Vadersharp;
  • Stanfordnlp;
  • Sentimentanalyzer;
  • Wikiled; Sie alle sind Offline -Sentiment -Klassifizierung C# Bibliotheken. Beschreiben wir sie ausführlicher.

GroupDocs.Classification

Lizenz: Lizenzdatei

Komplexität der Installation: einfach ** Genauigkeit:**93.3 (Bewertung) / 96.3 (lizenziert) {.wp-Block-Heading} GroupDocs.Classification ist eine Bibliothek mit einer eigenen integrierten Engine für Text- und Dokumentenklassifizierung. Modelle sind auch Teil des A Nuget -Pakets. Die Installation ist einfach: Sie müssen nur das Nuget -Paket installieren. Es gibt einen Unterschied zwischen Bewertung und lizenzierten Versionen. Für die Bewertungsversion sollten Sie den Text in 100-Charakter-Stücke aufteilen und dann die Ergebnisse durchschnittlich. GroupDocs.Classification zeigt eine Genauigkeit von 93,3% im Bewertungsmodus und 96,3%, wenn die Lizenz angewendet wird.

Vadersharp

Lizenz: MIT

Komplexität der Installation: einfach Genauigkeit: 77,6% {.wp-Block-Heading} Vadersharp ist eine beliebte Lösung für die C# -Stimentklassifizierung (Analyse). Es funktioniert sehr schnell und verarbeitet Nachrichten pro Sekunde auf einem regulären Home -PC, nicht so über Servermaschinen. Die Installation ist ebenfalls einfach (installieren Sie einfach Nuget Paket). Es gibt jedoch auch einen wichtigen Nachteil: Die Genauigkeit ist nicht so perfekt wie die Verarbeitungszeit. Es erreicht 78% Genauigkeit im Testdatensatz.

StanfordNLP

Lizenz: GPL V2

Komplexität der Installation: hart. Genauigkeit: 70% {.wp-Block-Heading} Stanford NLP ist eine C# -Bibliothek, die auf der entsprechenden Java -Bibliothek für die Verarbeitung natürlicher Sprache basiert. Es gibt einige Schwierigkeiten bei der Installation. Es ist erforderlich, die Java -Version von Stanford NLP zu installieren und die Modelle gegebenenfalls in das aktuelle Verzeichnis des Programms zu kopieren. Es gibt auch Probleme mit der Kompatibilität von .net Core 3.0. Genauigkeit und Verarbeitungszeit sind für diese Bibliothek instabil und scheinen von der Textlänge abhängig zu sein. Für die kurzen Texte aus dem SST-2-Datensatz erreicht es eine Genauigkeit von 80,2% mit Sekunden pro Beispielverarbeitungszeit. Bei längeren Texten von Cross-Domain One nimmt die Genauigkeit auf 70%ab. und die Verarbeitungszeit steigt auf 1 min oder mehr pro Text.

Sentimentanalyzer

Lizenz: MIT

Komplexität der Installation: Medium Genauigkeit: 79,1% {.wp-Block-Heading} Diese Bibliothek ist ml.net -basiert. Während der Installation können Probleme im Zusammenhang mit der Arbeit von ml.net. Dies ist eine unsichere Bibliothek, die Konfiguration (x86 / x64) explizit erforderlich ist und möglicherweise auch einige Abhängigkeiten installieren. Sentimentanalyzer Gibt eine positive oder negative Klasse und die entsprechende Punktzahl zurück. Dies ist der Grund, warum die Binärklassifizierungsaufgabe für diesen Vergleich verwendet wurde. Das beste Ergebnis kann mit einem genau ausgewählten Schwellenwert erzielt werden. Die Genauigkeit erreichte nach der Optimierung des Schwellenwerts 79%.

Wikiled

Lizenz: Apache -Lizenz 2.0

Komplexität der Installation: Einfach Genauigkeit: Keine {.wp-Block-Heading} Eine weitere C# Sentiment -Klassifizierungsbibliothek ist Wikiled. Diese Bibliothek sollte vor dem Testen geschult werden, um angemessene Ergebnisse zu erzielen. Die Genauigkeit kann also nicht für die Bibliothek berechnet werden.

Datensätze

Wir haben einen Cross-Domain-Datensatz für Testzwecke verwendet. GroupDocs.Classification wurde nicht darauf geschult. Der Rest der Bibliotheken hat es höchstwahrscheinlich auch im Training nicht verwendet. Wir werden das Ergebnis per E-Mail an eine interessierte Partei senden. Bitte erstellen Sie ein Problem im entsprechenden Github Repo. 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).

Ergebnisse

Tabelle 1 zeigt die Genauigkeit (%) für die experimentierten Klassifikatoren. Tabelle 1.

SST-2Cross-Domain
GroupDocs.Classification93.3 (lizenziert: 94.7)93.3 (lizenziert: 96,3)
Sentimentanalyzer58,579.1
Stanford NLP80.7~ 70
Vadersharp68.777.6
Die meisten von ihnen zeigen unterschiedliche Ergebnisse für diese 2 Datensätze. Es scheint, dass die Ursache für ein solches Verhalten darin besteht, dass SST-2-Texte kürzer sind als Cross-Domain-Texte. Während der NLP -Tests von Stanford -NLP auf Crossdomain für Text länger als 500 Zeichen gab es auch einige Vorlegungen. Deshalb markiert mit „~“ die Cross-Domain-Genauigkeit.

Analyse gemeinsamer Fehler

Die folgenden Fehlklassifizierungen sind typisch: _ „Wie sein Stern, seine Haltung und seine Unbekanntheit.“ _ - schwer zu verstehen, was die Person bedeutet. _ “Ein gut gehandeltes und gut abgesehenes Snoozer.” _ Oder _ “Gee, ein zweiter Attentäter Kennedy?” _ - Sarkasmus oder Ironie. _ “Moot Point” _ - Zu kurze Texte. Solche Probleme treten in allen Produkten der Stimmungsklassifizierung (Analyse) auf. Zum Beispiel ist Sarkasmus subjektiv. Daher ist es schwierig, ein Sarkasmmodell zu trainieren und es schwer zu klassifizieren. Aber hoffen wir, dass diese Schwächen in naher Zukunft beseitigt werden.

Abschluss

Während alle oben genannten Bibliotheken für die Klassifizierung der Stimmung in C#angemessen sind, ist GroupDocs.Classification am genauesten. Es ist also die beste für die Suche negative oder positive Gefühle in der großen Massive von Erwähnungen und/oder Bewertungen. Zusammenfassend sollte angemerkt werden, dass es auch einen wichtigen Fall einer negativen/neutralen/positiven Klassifizierung gibt. Es wird auch in Zukunft berücksichtigt.

Code

Wir bieten einen Code, der für diesen Blog-Post verwendet wurde: {{LINE_90}}