A análise de sentimentos ensina os computadores a reconhecerem as emoções humanas presentes no texto. O maior desafio aqui é achar o equilíbrio entre simplicidade e precisão. As abordagens variam desde o uso de uma lista de palavras associadas às emoções até o aprendizado profundo, com técnicas como incorporação de palavras, redes neurais, e mecanismos de atenção.
Donagh Horgan, cientista de dados líder na Johnson Controls, deu uma palestra sobre a criação de um analisador de sentimentos para o Twitter, na RebelCon.io 2019. A conferência aconteceu entre 19 e 20 de junho em Cork, na Irlanda. Segundo o site do evento:
Pelo terceiro ano consecutivo, a RebelCon reúne a comunidade de Engenharia de Software de Cork durante dois dias de workshops e palestras sobre as mais recentes práticas de tecnologia, cultura, e desenvolvimento na indústria de software.
A RebelCon é uma conferência de tecnologia sem fins lucrativos mantida pela comunidade de desenvolvedores para a comunidade de desenvolvedores.
Em sua palestra, Horgan mostrou como construir de forma iterativa um pipeline com base em IA para análise de sentimentos no Twitter.
Ao longo dos últimos anos, a análise de sentimentos tem sido usada em um número crescente de aplicações: no suporte ao cliente para classificar questões recebidas de acordo com a polaridade das emoções percebidas do cliente, em pesquisa de mercado e pesquisa de opinião para entender como as pessoas pensam sobre determinados tópicos, e para detectar abuso, intimidação, e interações hostis em fóruns online. A Johnson Controls usa a análise de sentimentos para detectar ameaças de violência para proteger melhor os clientes e seus funcionários.
De acordo com Horgan, existem grandes oportunidades para a análise de sentimentos quando se trata de ameaças à segurança. Houve vários incidentes de tiroteio em massa no ano passado, em que os suspeitos postaram avisos em fóruns públicos ou semi-públicos online com antecedência. Ele vê oportunidades para potencialmente salvar vidas fazendo com que as máquinas analisem esse tipo de conteúdo; os custos dessa análise seriam muito baixos.
O InfoQ entrevistou Donagh Horgan sobre como podemos usar a análise de sentimentos para ensinar máquinas a entenderem emoções.
InfoQ: O que é análise de sentimento?
Donagh Horgan: A análise do sentimento é uma área de inteligência artificial que se preocupa em ensinar os computadores a reconhecer as emoções humanas presentes no texto. O objetivo é entender a variedade e a força das emoções no texto escrito.
Normalmente, essa é uma tarefa fácil para os humanos. Por exemplo, se eu disser "este filme é ótimo", você saberá que, mesmo sem pensar muito, que eu estou (1) positivo e (2) animado com (3) um filme. Mas é mais difícil para as máquinas aprenderem como fazer isso, porque as línguas não são diretas. Por exemplo, posso dizer: "Este filme é melhor do que esse", mas não "esse filme é mais bom que aquele", e esse conhecimento vem naturalmente para mim.
Mas os computadores funcionam por meio de algoritmos e seria muito difícil escrever um conjunto de regras preciso e sustentável para entender todas as exceções presentes na língua inglesa. Pior ainda, existem muitas línguas diferentes. É um problema difícil.
InfoQ: Como funciona a análise de sentimentos?
Horgan: Existem algumas abordagens diferentes, mas o maior desafio é balancear simplicidade e precisão. Uma maneira simples é fazer uma lista de palavras associadas a cada emoção que se deseja acompanhar. Por exemplo, poderia fazer uma lista de palavras positivas (bom, ótimo, excelente) e uma lista de palavras negativas (ruim, terrível, horrível). Depois, pegue o texto que está interessado e registre todas as palavras positivas e negativas que aparecem nele. Se o total for positivo, pode concluir que o texto é positivo, caso contrário, pode concluir que é negativo.
Pode ainda tornar o processo mais preciso, dando a cada palavra uma "força". Por exemplo, "bom" pode ser 60% positivo, mas "ótimo" soa ainda mais positivo, então pode dar uma pontuação de 80%. Não é tão trabalhoso quanto parece - há listas de emoção de acesso livre e aberto disponíveis online (por exemplo, no padrão de bibliotecas do Python), para que não precise fazer as suas próprias.
Mas os simples cálculos de palavras muitas vezes não têm a nuance para serem capazes de compreender construções linguísticas mais técnicas. Por exemplo, posso dizer: "Este filme é terrivelmente bom", o que pode gerar uma pontuação neutra ou negativa, dependendo de como você considera a palavra "terrivelmente". Embora existam maneiras de contornar esse problema com a contagem de palavras, em geral elas não são sofisticadas o suficiente para entender completamente o problema.
Uma solução para isso é o uso de algoritmos de aprendizado de máquina, em que o computador aprende a probabilidade de palavras individuais ou pares de palavras ou até mesmo de conjuntos mais longos de texto associados a uma determinada emoção. Não vou entrar aqui na matemática, mas não é difícil construir um modelo Naive Bayes razoável (ou pelo menos um que seja melhor do que o registro de palavras).
InfoQ: Quão confiável é a análise de sentimento? Podemos confiar nos resultados?
Horgan: Infelizmente, todas as abordagens conhecidas atualmente sofrem com a falta de contexto de uma forma ou de outra. Por exemplo, os registros enfatizam demais as palavras individuais, por isso não conseguem entender frases como "bela decepção". Pode-se contornar isso com o algoritmo Naive Bayes, porque ele pode aprender a associar emoções com pares, trigêmeos, ou frases de qualquer tamanho, mas ele ainda pode se atrapalhar com "Eu não consigo não gostar de você" se você ainda não mostrou exemplos suficientes desse duplo negativo específico.
O estado da arte atualmente é o aprendizado profundo, que usa técnicas como incorporação de palavras, redes neurais, e mecanismos de atenção para aprender as estruturas complexas presentes na linguagem humana. Mas até mesmo esses modelos podem se confundir com construções linguísticas mais complexas, como a ironia e o sarcasmo. De fato, mesmo entre os humanos, o nível de concordância sobre exatamente quais emoções estão presentes raramente excede 80%. Acho que a lição aqui é que linguagem e emoção estão unidas, mas a relação nem sempre é clara - até para nós. Por enquanto, as máquinas só podem fazer o melhor que podemos.
InfoQ: O que você aprendeu ao criar um analisador de sentimentos para o Twitter?
Horgan: Na verdade, bastante. É, ao mesmo tempo, mais fácil e mais difícil do que parece. Pode tentar os métodos mais comuns, e eles vão funcionar bem, mas você tem que ser um pouco mais específico se quiser construir algo realmente preciso. Por exemplo, pode levar em conta o perfil da pessoa que está twittando. Donald Trump é um ótimo exemplo de alguém que é altamente positivo ou altamente negativo. Incorporar esse tipo de informação ao algoritmo sobre usuários individuais poderia produzir resultados ainda melhores.
InfoQ: Onde os leitores do InfoQ podem aprender mais sobre análise de sentimentos?
Horgan: O site Towards Data Science tem muitos tutoriais (alguns mais avançados do que outros), que são geralmente destinados a hackers que querem apenas começar rapidamente. O Natural Language Processing with Python é um bom ponto de partida para a área em geral, embora não seja gratuito. Há muitas bibliotecas Python úteis com boa documentação e tutoriais, como nltk, spacy, textblob, vader e gensim.