Sentiment Analysis
A análise de sentimentos classifica a opinião expressa num texto como positiva, negativa ou neutra. Abrange métodos baseados em léxicos e transformers, aspetos e enviesamento.
A análise de sentimentos, também chamada de mineração de opiniões, é uma tarefa de processamento de linguagem natural (NLP) que identifica a atitude expressa em um texto, geralmente como positiva, negativa ou neutra, e às vezes como uma pontuação, uma classificação por estrelas ou uma emoção, como raiva ou alegria. As empresas analisam avaliações de produtos, chamados de suporte, respostas a pesquisas e publicações em redes sociais para medir o que os clientes sentem em relação a um produto ou marca em um volume de texto maior do que qualquer equipe conseguiria ler; chatbots de suporte também usam essa análise para encaminhar primeiro os clientes irritados a uma pessoa.
Níveis de análise#
A análise ao nível do documento atribui um único rótulo a uma avaliação completa, enquanto a análise ao nível da frase rotula cada frase. A análise de sentimentos baseada em aspectos (ABSA) vai além e identifica a opinião sobre cada característica mencionada no texto: "A tela é linda, mas a bateria mal dura uma manhã" expressa uma opinião positiva sobre a tela e negativa sobre a bateria. A tarefa compartilhada SemEval-2014 sobre ABSA padronizou esse cenário com avaliações de notebooks e restaurantes; a extração de aspectos também se sobrepõe ao reconhecimento de entidades nomeadas (NER), pois ambos identificam as coisas mencionadas em uma frase.
De léxicos a Transformers#
Métodos baseados em léxicos contam as palavras de um léxico de sentimentos — uma lista de palavras com pontuações positivas ou negativas — e adicionam regras para negações ("não é bom") e intensificadores ("muito bom"). O método não supervisionado de Peter Turney (2002) pontuava frases de acordo com a frequência com que apareciam na Web perto de "excelente" ou "ruim"; o VADER (2014) ajustou um léxico e regras para redes sociais, incluindo emoticons, letras maiúsculas e pontos de exclamação. Também em 2002, Bo Pang, Lillian Lee e Shivakumar Vaithyanathan treinaram classificadores Naive Bayes, de entropia máxima e de máquina de vetores de suporte (SVM) com avaliações de filmes e descobriram que eles superavam listas de palavras-chave criadas por humanos, mas tinham resultados piores em análise de sentimentos do que em classificação de tópicos.
O Stanford Sentiment Treebank (2013) rotulou 215.154 frases de 11.855 avaliações de filmes para que os modelos pudessem aprender como palavras como "não" e "mas" alteram o sentimento do que vem depois. Sua versão binária, SST-2, tornou-se parte do benchmark GLUE. Hoje, a maioria dos classificadores faz ajuste fino de um Transformer pré-treinado, como o BERT, com exemplos rotulados e converte as pontuações de saída em probabilidades de classe com um softmax. O DistilBERT ajustado com SST-2 alcança 91,3% de precisão no conjunto de validação:
from transformers import pipeline
# DistilBERT fine-tuned on the Stanford Sentiment Treebank (SST-2)
classifier = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
reviews = [
"The battery life is not bad at all.",
"Oh great, it crashed again five minutes after the update.",
"The screen is gorgeous, but the battery barely lasts a morning.",
]
for review, result in zip(reviews, classifier(reviews)):
print(f"{result['label']:<8} {result['score']:.3f} {review}")O classificador interpreta "não é nada mau" como POSITIVO (0.997) e a avaliação sarcástica "Ah, ótimo" como NEGATIVO (0.998). A terceira avaliação elogia a tela e critica a bateria, mas um modelo ao nível do documento só pode retornar um rótulo: NEGATIVO, com 0.966; o elogio desaparece do resultado. Modelos de linguagem grandes (LLMs) também classificam sentimentos zero-shot a partir de um prompt e podem retornar um rótulo por aspecto, mas a um custo por avaliação muito maior do que o de um classificador com 66 milhões de parâmetros.
Análise de sentimentos multimodal#
As pessoas expressam opiniões pelo tom de voz e pelas expressões faciais, além das palavras; muitas vezes, o sarcasmo só aparece no tom. O CMU-MOSEI (2018), o maior conjunto de dados para esse cenário quando foi lançado, rotula o sentimento de 23.453 segmentos de vídeo de 1.000 pessoas; modelos de aprendizado multimodal combinam a transcrição, o áudio e o rosto da pessoa para prevê-lo, um objetivo compartilhado com a computação afetiva. O canal facial é um problema de classificação de imagens: um modelo de classificação Ultralytics YOLO26 treinado com recortes de rostos organizados em uma pasta por expressão retorna uma probabilidade para cada expressão em result.probs, o mesmo tipo de saída softmax produzido pelo classificador de texto acima.
Desafios#
Sarcasmo, ironia e comparações ("melhor que o antigo, o que não quer dizer muita coisa") continuam sendo difíceis. O significado das palavras de sentimento depende do domínio: "imprevisível" elogia o enredo de um filme e critica a direção de um carro; por isso, um modelo treinado com avaliações de filmes perde precisão em avaliações de produtos sem novos dados de treinamento. Os modelos também herdam vieses dos dados. Em 2018, Svetlana Kiritchenko e Saif Mohammad testaram 219 sistemas de análise de sentimentos com frases que diferiam apenas em um nome ou em uma palavra de gênero, como "ele" ou "ela"; vários deles atribuíram pontuações sistematicamente mais altas ou mais baixas conforme o gênero ou a raça sugeridos pelo nome.
Análise de sentimentos e termos relacionados#
- Classificação de texto: A tarefa geral de atribuir rótulos a textos, como tópico ou spam. A análise de sentimentos é a classificação de texto com rótulos de opinião.
- Reconhecimento de emoções: Detecta emoções específicas em textos, rostos, vozes ou sinais fisiológicos. A análise de sentimentos geralmente reduz a opinião a uma polaridade.
- Reconhecimento de entidades nomeadas: identifica o que um texto menciona, e a ABSA associa cada menção à opinião expressa sobre ela.










