Teraz dostępne są różne usługi klasyfikacji sentymentów online. Tacy giganci jak Google, Amazon lub Microsoft oferują swoje rozwiązania w chmurze do przetwarzania języka naturalnego. Ale jeśli nie planujesz płacić 1-2 $ za 1000 połączeń API (wzrost ceny, gdy recenzja ma więcej niż 1000 znaków) i/lub jesteś gotowy do przygotowania lokalnej usługi klasyfikacyjnej lub programu, możesz użyć klasyfikatorów offline. Istnieje kilka klasyfikatorów .NET dla sprawy offline, które zostaną omówione w tym poście. Następujące tematy zostaną omówione tutaj:

-[Co to jest analiza sentymentów?] (#Co-sentyment-analiza)

Co to jest klasyfikacja sentymentów (analiza)?

Klasyfikacja sentymentów jest potężnym podejściem do lepszego zrozumienia, co klienci myślą o Twoich produktach lub usługach. Może to również pomóc w zadaniu monitorowania marki. Klasyfikacja sentymentów pozwala klasyfikować emocje i informacje zwrotne ludzi, które publikują w mediach społecznościowych, blogach lub artykułach. Istnieje kilka wspólnych taksonomii, które są wykorzystywane do klasyfikacji nastrojów.

  • Binarny:
    • negatywny;
    • pozytywny;
  • 3 klasy:
    • negatywny;
    • neutralny;
    • pozytywny;
  • 5 klas
    • Od 1 do 5 gwiazdek We wszystkich przypadkach negatywne nastroje są najważniejsze do analizy. Tak więc główne zadanie, które klasyfikator sentymentu powinien rozwiązać, wygląda na „czy ten tekst negatywny?” i „Ile to jest negatywne?”.

Metrycs

Dokładność jest prostym i oczywistym wskaźnikiem. Ma dobrze znane wady, gdy zajęcia są niezrównoważone. Można go jednak używać w naszym przypadku zrównoważonych klas. Jest również szeroko stosowany w literaturze naukowej. Klasyfikatory wymienione poniżej można porównać tylko w zadaniach klasyfikacyjnych binarnych, ponieważ jeden z nich nie ma klasy „neutralnej”.

Klasyfikacja sentymentów offline (C#)

Istnieje wiele bibliotek C#, które można znaleźć za pośrednictwem Google, Nuget E.T.C. Ale należy je sprawdzić ręcznie, ponieważ wiele z nich to po prostu SDK dla API w chmurze. Kolejne pakiety zostały zebrane po ręcznej weryfikacji klasyfikacji sentymentów C# Biblioteki:

  • Grupa
  • Vadersharp;
  • Stanfordnlp;
  • Sentimentanalyzer;
  • Wikiled; Wszystkie są klasyfikacją sentymentów offline C# biblioteki. Opiszmy je bardziej szczegółowo.

[grupa

Licencja: Plik licencyjny

Złożoność instalacji: łatwa ** Dokładność:**93.3 (ocena) / 96.3 (licencjonowane) {.wp-block-heading} GroupDocs.Clasyfication to biblioteka z własnym wbudowanym silnikiem do klasyfikacji tekstu i dokumentów. Modele są również częścią pakietu A NuGet. Instalacja jest prosta: wystarczy zainstalować pakiet NuGet. Istnieje różnica między oceną a licencjonowanymi wersjami. W przypadku wersji oceny należy podzielić tekst na 100-znakowe kawałki, a następnie uśrednić wyniki. GroupDoCS.

vadersharp

Licencja: MIT

Złożoność instalacji: łatwa Dokładność: 77,6% {.WP-block-heading} Vadersharp jest popularnym rozwiązaniem klasyfikacji C# Sentiment (analiza). Działa bardzo szybko i przetwarza wiadomości na sekundę na zwykłym komputerze domowym, a nie o maszynach serwerowych. Instalacja jest również prosta (wystarczy zainstalować pakiet NuGet). Istnieje jednak również ważna wada: dokładność nie jest tak doskonała jak czas przetwarzania. Osiąga 78% dokładności zestawu danych testowych.

Stanfordnlp

Licencja: GPL v2

Złożoność instalacji: trudne. Dokładność: 70% {.WP-block-heading} Stanford NLP to biblioteka C# oparta na odpowiedniej bibliotece Java do przetwarzania języka naturalnego. Istnieją pewne trudności z instalacją. Konieczne jest zainstalowanie wersji Java Stanford NLP i skopiowanie modeli do bieżącego katalogu programu w razie potrzeby. Istnieją również problemy ze zgodnością .NET Core 3.0. Dokładność i czas przetwarzania są niestabilne dla tej biblioteki i wydają się zależeć od długości tekstu. W przypadku krótkich tekstów z zestawu danych SST-2 osiąga 80,2% dokładności z sekundami na przykładowy czas przetwarzania. W przypadku dłuższych tekstów z pierwszego okresu, dokładność zmniejsza się do 70%. a czas przetwarzania wzrasta do 1 min lub więcej na tekst.

sentimentAnalyzer

Licencja: MIT

Złożoność instalacji: Medium Dokładność: 79,1% {.wp-block-heading} Ta biblioteka jest oparta na ML.NET. Podczas instalacji mogą występować problemy związane z pracą ML.NET. Jest to niebezpieczna biblioteka, wymaga jawnie konfiguracji (x86 / x64) i może być konieczne zainstalowanie niektórych zależności. SentimentAnalyzer Zwraca klasę dodatnią lub ujemną i odpowiedni wynik. Jest to powód, dla którego do tego porównania zastosowano zadanie klasyfikacji binarnej. Najlepszy wynik można osiągnąć za pomocą precyzyjnie wybranego progu. Dokładność osiągnęła 79% po optymalizacji wartości progowej.

wikiled

Licencja: Licencja Apache 2.0

Złożoność instalacji: proste Dokładność: Brak {.wp-block-heading} Kolejna biblioteka klasyfikacji sentymentów C# jest Wikiled. Ta biblioteka powinna zostać przeszkolona przed testowaniem w celu uzyskania odpowiednich wyników. Dokładność dokładności nie można obliczyć dla biblioteki.

Zestawy danych

Użyliśmy zestawu danych między domenami do celów testowych. [Grupa Reszta bibliotek najprawdopodobniej również nie wykorzystała go podczas szkolenia. Wynik wyślemy do każdej zainteresowanej strony e-mailem. Utwórz problem w odpowiednim repozytorium Github. 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).

Wyniki

Tabela 1 pokazuje dokładność (%) dla eksperymentowanych klasyfikatorów. Tabela 1. |. |. SST-2 | Domina krzyżowa | |. ———————— | ————————- | ————————- | |. GroupDocs. Klasyfikacja | 93.3 (licencjonowane: 94,7) | 93.3 (licencjonowane: 96.3) | |. Sentimentanalyzer | 58,5 | 79.1 | |. Stanford NLP | 80.7 | ~ 70 | |. Vadersharp | 68,7 | 77,6 | Większość z nich pokazuje różne wyniki dla tych 2 zestawów danych. Wydaje się, że przyczyną takiego zachowania jest to, że teksty SST-2 są krótsze niż teksty między domenami. Podczas testowania NLP na Stanford było też pewne zawieszenie na Crossdomain pod kątem tekstu dłuższego niż 500 znaków. Dlatego dokładność między domenami oznaczona „~”.

Analiza typowych błędów

Następujące błędne klasyfikacje są typowe: _ „Podobnie jak jego gwiazda, jej postawa i nieświadomość”. _ - trudno zrozumieć, co ta osoba oznacza. _ „Dobrze działający i dobrze zamierzony snoozer”. _ Lub „Gee, drugi zabójca strzał Kennedy?” - Sarkazm lub ironia. _ „Punkt sporady” _ - Zbyt krótkie teksty. Takie problemy występują we wszystkich produktach klasyfikacji sentymentów (analizy). Na przykład sarkazm jest subiektywny. Dlatego trudno jest wyszkolić model sarkazmu i trudno go poprawić. Miejmy jednak nadzieję, że te słabości zostaną wyeliminowane w najbliższej przyszłości.

Wniosek

Podczas gdy wszystkie powyższe biblioteki są odpowiednio dla klasyfikacji sentymentów w C#, [grupa Jest to więc najlepszy do wyszukiwania negatywnych lub pozytywnych nastrojów w dużej masie wzmianek i/lub recenzji. Podsumowując, należy zauważyć, że istnieje również ważny przypadek klasyfikacji negatywnej/neutralnej/pozytywnej. Będzie to również wzięte pod uwagę w przyszłości.

Kod

Podajemy kod używany dla tego blogu: {{LINE_90}}