Classificação de sentimentos com NLTK
Reprodução do exemplo de análise de sentimentos do NLTK, com Naive Bayes e VADER, e experimentos sobre onde o modelo erra: sarcasmo, gírias e ambiguidade.
0,80 de acurácia em subjetividade, com 160 frases de treino
- Tipo
- Modelo
- Período
- 2026
- Status
- Concluído
Ferramentas
- Python
- NLTK
A pergunta
Onde uma análise de sentimentos baseada em palavras deixa de funcionar? Este projeto reproduz, em Python, o trabalho que fiz no processo seletivo da bolsa de iniciação científica em processamento de linguagem natural: o exemplo de análise de sentimentos da documentação do NLTK, seguido de experimentos com frases escolhidas para fazer o modelo errar.
Os dados
O classificador de subjetividade usa o corpus subjectivity do NLTK (Pang e Lee, 2004): trechos de críticas de cinema marcados como subjetivos e frases de sinopses de filmes marcadas como objetivas. Como no exemplo da documentação, usei as 100 primeiras frases de cada classe, 80 para treino e 20 para teste.
O método
São dois modelos, cada um respondendo uma pergunta sobre a frase.
- É opinião ou fato? Um classificador Naive Bayes, cujas features são as palavras que aparecem pelo menos 4 vezes no treino.
- O tom é positivo ou negativo? O VADER, um analisador baseado em léxico e regras, que não precisa de treino. Ele devolve as proporções de negativo, neutro e positivo e um escore composto, de −1 a 1.
Experimente
Escreva uma frase em inglês ou use um dos exemplos. O modelo roda de verdade, no servidor, a cada envio.
Carregando a demo…
Resultados
| Classificador de subjetividade | Valor |
|---|---|
| Acurácia nas 40 frases de teste | 0,80 |
| Precisão, revocação e F1 (subjetiva e objetiva) | 0,80 |
O número parece bom para tão poucos dados, mas tem um detalhe: com o mínimo de 4 ocorrências, o vocabulário do modelo fica com só 83 palavras, quase todas muito comuns, como “the”, “a”, “film” e “movie”. O classificador acerta 80% decidindo com base nelas.
Onde o modelo erra
O VADER lê as palavras, não a situação. Nos experimentos, palavras como “amazing” e “excellent” puxaram o escore para cima mesmo em reclamações, e gírias foram lidas no sentido literal.
| Frase | Leitura humana | Escore do VADER |
|---|---|---|
| Wow! Amazing service, waited only 32 hours. | negativa (sarcasmo) | 0,836 |
| Excellent, the elevator stopped between floors so I could enjoy this premium wall experience. | negativa (sarcasmo) | 0,741 |
| This song is fire. | positiva (gíria) | −0,340 |
| The movie was sick. | ambígua: elogio ou crítica | −0,511 |
| Esse app e muito bugado, que droga. | negativa, em português | 0,000 |
O último caso mostra o limite mais simples de todos: o léxico é em inglês, e nenhuma palavra dessa frase está nele. Os exemplos “Sarcasmo” e “Gíria” da demo acima repetem dois desses testes.
