Vários serviços de classificação de sentimentos on -line estão disponíveis agora. Giants como Google, Amazon ou Microsoft oferecem suas soluções em nuvem para processamento de linguagem natural. Mas se você não planeja pagar 1-2 $ por 1000 chamadas de API (aumentos de preços quando a revisão tiver mais de 1000 caracteres) e/ou estiver pronta para preparar o serviço ou programa de classificação local, poderá usar classificadores offline. Existem vários classificadores .NET para o caso offline que serão discutidos nesta postagem. Os tópicos a seguir serão abordados aqui:

-[O que é análise de sentimentos?] (#What-Is-Sentiment-Análise)

O que é classificação de sentimentos (análise)?

A classificação de sentimentos é uma abordagem poderosa para entender melhor como os clientes se sentem sobre seus produtos ou serviços. Também pode ajudá -lo na tarefa de monitoramento da marca. A classificação de sentimentos permite classificar as emoções e feedbacks das pessoas que elas publicam nas mídias sociais, blogs ou artigos. Existem várias taxonomias comuns que são usadas para classificação de sentimentos.

  • Binário:
    • negativo;
    • positivo;
  • 3 classes:
    • negativo;
    • neutro;
    • positivo;
  • 5 classes
    • de 1 a 5 estrelas Em todos os casos, os sentimentos negativos são os mais importantes para análise. Portanto, a principal tarefa que o classificador de sentimentos deve resolver parece “esse texto é negativo?” e “Quanta negativa é?”.

métricas

A precisão é uma métrica simples e óbvia. Tem desvantagens bem conhecidas quando as aulas são desequilibradas. No entanto, pode ser usado em nosso caso de classes equilibradas. Também é amplamente utilizado na literatura científica. Os classificadores listados abaixo podem ser comparados apenas em tarefas de classificação binária, porque uma delas não possui uma classe “neutra”.

Classificação offline de sentimentos (C#)

Existem várias bibliotecas C# que podem ser encontradas no Google, Nuget E.T.C. Mas eles devem ser verificados manualmente porque muitos deles são apenas SDKs para APIs em nuvem. Os próximos pacotes foram coletados após a verificação manual da classificação de sentimentos C# Bibliotecas:

  • Groupdocs.classification;
  • Vadersharp;
  • Stanfordnlp;
  • SentimentAnalyzer;
  • Wikiled; Todos eles são classificação offline de Classificação C# Bibliotecas. Vamos descrevê -los com mais detalhes.

groupdocs.classification

Licença: arquivo de licença

Complexidade da instalação: fácil ** Precisão:**93.3 (avaliação) / 96.3 (licenciado) {.wp-Block-Heading} GroupDocs.Classification é uma biblioteca com seu próprio mecanismo embutido para classificação de texto e documentos. Os modelos também fazem parte do pacote A NUGET. A instalação é simples: você só precisa instalar o pacote NUGET. Há uma diferença entre avaliação e versões licenciadas. Para a versão de avaliação, você deve dividir o texto em pedaços de 100 caracteres e, em seguida, calcular a média dos resultados. GroupDocs.Classification mostra 93,3% de precisão no modo de avaliação e 96,3% quando a licença é aplicada.

vadersharp

Licença: MIT

Complexidade da instalação: fácil Precisão: 77,6% {.wp-Block-Heading} Vadersharp é uma solução popular para a classificação C# sentimento (análise). Funciona muito rapidamente e processa mensagens por segundo em um PC doméstico comum, não sobre máquinas de servidor. A instalação também é simples (basta instalar o pacote NUGET). No entanto, também há uma desvantagem importante: a precisão não é tão perfeita quanto o tempo de processamento. Atinge 78% de precisão no conjunto de dados de teste.

StanfordNLP

Licença: GPL V2

Complexidade da instalação: Hard. Precisão: 70% {.wp-Block-Heading} Stanford NLP é uma biblioteca C# baseada na biblioteca Java correspondente para processamento de linguagem natural. Existem algumas dificuldades na instalação. É necessário instalar a versão Java do Stanford NLP e copiar os modelos para o diretório atual do programa, se necessário. Também existem problemas com a compatibilidade .NET Core 3.0. A precisão e o tempo de processamento são instáveis ​​para esta biblioteca e parecem depender do comprimento do texto. Para os textos curtos do conjunto de dados SST-2, ele atinge a precisão de 80,2% com segundos por exemplo de tempo de processamento. Para textos mais longos do domínio cruzado, a precisão diminui para 70%. e o tempo de processamento aumenta para 1 min ou mais por texto.

SentimentAnalyzer

Licença: MIT

Complexidade da instalação: Médio Precisão: 79,1% {.wp-Block-Heading} Esta biblioteca é ml.net baseada em base. Durante a instalação, pode haver problemas relacionados ao trabalho do ML.NET. Esta é uma biblioteca insegura, requer a configuração (x86 / x64) explicitamente, e você também pode precisar instalar algumas dependências. SentimentAnalyzer retorna classe positiva ou negativa e escore correspondente. É a razão pela qual a tarefa de classificação binária foi usada para essa comparação. O melhor resultado pode ser alcançado com um limite com precisão selecionado. A precisão atingiu 79% após a otimização do valor limite.

Wikiled

Licença: Licença Apache 2.0

Complexidade da instalação: simples Precisão: Nenhum {.wp-Block-Heading} Outra biblioteca de classificação de sentimentos C# é Wikiled. Esta biblioteca deve ser treinada antes do teste para produzir resultados adequados. Portanto, a precisão não pode ser calculada para a biblioteca.

Conjuntos de dados

Utilizamos um conjunto de dados de domínio cruzado para fins de teste. GroupDocs.classification não foi treinado nela. O restante das bibliotecas provavelmente também não o usou no treinamento. Enviaremos o resultado a qualquer parte interessada por e-mail. Crie um problema no repo correspondente Github. 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).

Resultados

A Tabela 1 mostra a precisão (%) para os classificadores experimentados. Tabela 1.

SST-2Domínio cruzado
GroupDocs.classification93.3 (licenciado: 94.7)93.3 (licenciado: 96.3)
SentimentAnalyzer58,579.1
Stanford NLP80,7~ 70
Vadersharp68,777.6
A maioria deles mostra resultados diferentes para esses 2 conjuntos de dados. Parece que a causa para esse comportamento é que os textos do SST-2 são mais curtos que os textos de domínio cruzado. Houve também alguns enforcamentos durante os testes de Stanford PNL no CrossDomain para texto com mais de 500 caracteres. É por isso que a precisão do domínio cruzado marcou com “~”.

Análise de erros comuns

As seguintes classificações incorretas são típicas: _ “Como são sua estrela, sua atitude e sua esquecimento.” _ - difícil de entender o que a pessoa significa. _ “Um soneador bem agido e bem intencionado.” _ Ou _ “GEE, um segundo assassino matou Kennedy?” _ - sarcasmo ou ironia. _ “MOOT POINT” _ - Textos muito curtos. Tais problemas ocorrem em todos os produtos de classificação de sentimentos (análise). Por exemplo, sarcasmo, é subjetivo. Portanto, é difícil treinar um modelo de sarcasmo e difícil classificá -lo corretamente. Mas vamos torcer para que essas fraquezas sejam eliminadas em um futuro próximo.

Conclusão

Embora todas as bibliotecas acima sejam apropriadas para classificação de sentimentos em C#, GroupDocs.classification é o mais preciso. Portanto, é o melhor para pesquisar sentimentos negativos ou positivos nas grandes menções e/ou revisões. Em conclusão, deve -se notar que também há um caso importante de classificação negativa/neutra/positiva. Também será considerado no futuro.

Código

Fornecemos um código usado para este post do blog: {{LINE_90}}