O crescimento e a popularização das redes sociais trouxe uma grande quantidade de dados, que são muito valiosos para as empresas que desejam entender melhor o comportamento dos seus consumidores. Nesse contexto, os profissionais que trabalham com ciência de dados desenvolveram ferramentas para gerar informações e insights a partir desses dados. Uma dessas ferramentas é a análise de sentimentos.
Com a proliferação de opiniões, comentários e avaliações, a imagem das empresas está cada vez mais exposta nas redes. Além disso, identificar novas oportunidades de mercado passou a ser meta das áreas de tecnologia e de negócio.
A análise de sentimentos é uma mineração contextual de um texto que identifica e extrai informações subjetivas no material de origem. Ela ajuda as empresas a entenderem o sentimento social de sua marca, produto ou serviço.
Um sistema de análise de sentimentos para conteúdo textual combina o processamento de linguagem natural (PLN) e técnicas de aprendizado de máquina para atribuir pontuações ponderadas de sentimento às sentenças.
Com os recentes avanços na aprendizagem profunda, conhecida como Deep Learning, a capacidade dos algoritmos de analisar textos melhorou consideravelmente. O uso de técnicas avançadas de inteligência artificial se tornou eficaz para identificar sentimentos de usuários na web.
Para as empresas, é importante classificar conversas de clientes sobre uma marca com base nas seguintes linhas:
- Aspectos-chave do produto que os clientes gostam ou não gostam;
- Intenções subjacentes (implícitas) dos usuários.
Esses conceitos, quando usados em combinação, tornam-se ferramentas muito importantes para que as empresas possam analisar milhões de conversas com precisão estatística significativa.
Neste artigo, abordaremos a análise de sentimentos, uma ferramenta importante para gerar insights a partir do que as pessoas publicam na internet.
🆕 Este artigo foi revisado e atualizado em Março de 2024!
O que é análise de sentimentos?
Quando uma empresa deseja entender o que estão falando sobre ela e qual a reputação de seus produtos online, uma das formas de se fazer isso é utilizando machine learning, assim como sua subárea chamada Deep Learning. Nesse sentido, uma das técnicas recomendadas é a análise de sentimentos, que consiste em extrair informações de textos a partir de linguagem natural.
O objetivo dessa técnica é classificar sentenças, ou um conjunto de sentenças, como positivas, negativas ou neutras. Essa classificação é realizada automaticamente e extrai informações subjetivas de textos, criando conhecimento estruturado que pode ser utilizado por um sistema. Vejamos o exemplo abaixo:
Apesar de não ser a única, a análise de sentimentos é a ferramenta de classificação de textos mais comum que analisa uma mensagem recebida e informa seu sentimento implícito. Você pode inserir uma sentença de sua escolha e avaliar o sentimento com essa ferramenta.
A análise de sentimentos é uma das áreas de pesquisa mais destacadas em Processamento de Linguagem Natural. Desde o início dos anos 2000, se tornou uma área muito ativa devido a explosão das redes sociais. Entretanto, esse tema não tem ficado restrito à ciência da computação, atingindo diversas outras áreas.
→ Crescimento do termo “Sentiment Analysis” no Google Trends:
Principais aplicações
A análise de sentimentos ajuda os analistas de dados de grandes empresas a avaliar a opinião pública, realizar pesquisas de mercado, monitorar a reputação de marcas e produtos e compreender as experiências dos seus consumidores ou potenciais clientes.
Essa a análise pode ser bem utilizada em qualquer estrutura de dados que contenham conteúdo textual que seja de alguma forma padronizado. Entre os exemplos de ferramentas que poderiam ser utilizadas como bases de dados poderíamos citar:
- Redes sociais;
- Portais de Serviço de Atendimento ao Consumidor;
- Sistemas de Service Desk;
- Sistemas de Reviews e Avaliações;
- Entre muitos outros.
Processo de análise:
Uma análise básica de sentimentos, a partir de documentos de texto, segue um processo relativamente simples:
- Divide cada documento de texto em suas partes componentes: sentenças, frases, fragmentos de discurso, etc.;
- Identifica cada sentimento associado a uma frase ou componente;
- Atribui uma pontuação com a polaridade de sentimento a cada frase, indo de -1 até +1;
- Avançado: Combina pontuações para análise de sentimentos em várias camadas (deep learning).
Todas as palavras que aprendemos, assim como suas utilizações em diferentes contextos, foram sendo construídas em nosso cérebro a partir de experiências. Isso possibilitou entendermos a força de cada adjetivo, recebendo sugestões e feedback de nossos professores, colegas e familiares ao longo do caminho.
Quando lemos uma frase, nosso cérebro baseia-se em conhecimento acumulado para identificar, em cada uma delas, um sentimento associado. Dessa forma, conseguimos identificar e interpretar o grau de negatividade ou positividade no significado de uma sentença.
Geralmente isso acontece subconscientemente. Sabemos instintivamente que uma “vitória esmagadora” possui um sentimento positivo, enquanto que “ser esmagado por um carro” possui um sentimento negativo associado, por exemplo.
Na análise de sentimentos de um computador, o funcionamento é quase o mesmo!
Algoritmos para análise de sentimentos
A tarefa de analisar sentimentos em textos pode ser feita de diferentes formas via machine learning, utilizando processamento de linguagem natural (PLN). Além disso, a cada dia surgem abordagens novas, como Deep Learning, para tratar dessa questão.
Uma das formas mais antigas para tratar desse problema é por meio do algoritmo de Naive Bayes, um classificador probabilístico simples que parte da premissa que há independência entre as características (features) de um modelo. Ou seja, ele recebe o nome de “naive” (ingênuo) porque desconsidera a correlação entre as variáveis.
Exemplo: na frase “Eu amo meus pais, mas hoje o dia está horrível” o classificador assume que as palavras dessa frase não dependem umas das outras. Sendo assim, a polaridade de uma sentença pode ser positiva caso a maioria das palavras tenham uma probabilidade maior de serem positivas.
Outra forma de classificação, semelhante ao Naive Bayes, é utilizando SVM (Support Vector Machine) ou Maxent Classifier para treinamento. Entretanto, essas abordagens estão lentamente se tornando coisas do passado.
Técnicas mais avançadas para identificação de contexto estão utilizando Deep Learning, que pode fazer extrações de contexto automaticamente. Assim, as dificuldades relativas à compreensão do texto são bastante reduzidas.
Com o contexto identificado, o problema é convertido em uma simples classificação/regressão, dependendo do que exatamente se deseja prever.
Conceitos e termos
Além de entender o funcionamento desse tipo de análise, é preciso compreender os termos e conceitos associados à detecção de sentimentos. Vejamos os principais:
Pré-Processamento
Uma das etapas mais importantes do processo de aprendizado de máquinas é o pré-processamento. E isso não é diferente na análise de sentimentos.
O pré-processamento de um texto consiste em transformar a base de dados original em um formato mais conveniente para o processamento computacional. Umas dessas etapas é a remoção de stopwords, que são palavras que não devem ser consideradas na análise, como “o”, “e”, “a”, “de”, “que”, “do”, etc. Essas palavras são eliminadas pois não apresentam informações relevantes para a construção do modelo analisado, apenas definem ou articulam ideias.
Stemming
É a técnica que reduz um termo ao seu radical, removendo afixos e vogais temáticas. Um do seus objetivos é reduzir a quantidade de palavras na base de dados. A redução de vocabulário permite maior velocidade de processamento e menor número de erros causados por combinações não previstas.
Exemplos:
- Frequentemente se torna “Frequent”
- Copiar se torna “Copi”
Pesquisa Semântica Contextual (CSS)
Para obter insights que gerem algum tipo de resultado prático, é importante entender em que aspecto da marca um usuário está discutindo.
No caso de uma empresa como a Amazon, ela provavelmente gostaria de isolar mensagens relacionadas a entregas atrasadas, problemas de faturamento, consultas relacionadas a promoções e análises de produtos. Já no caso da Starbucks, ela provavelmente gostaria de classificar as mensagens com base no comportamento dos funcionários, novos sabores do café, feedback sobre a higiene do ambiente, pedidos on-line, nome e localização da loja, etc.
Uma abordagem convencional para filtrar todas as mensagens relacionadas a “Preço” é fazer uma pesquisa de palavras-chave para essa e outras palavras relacionadas, como preço, cobrança, $, pago. Esse método, no entanto, não é muito eficaz. É quase impossível pensar em todas as palavras-chave relevantes e suas variantes que representam um conceito específico.
Para fazer isso, é utilizado o algoritmo de busca inteligente chamado Contextual Semantic Search (pesquisa semântica contextual), também conhecido como CSS.
Esse algoritmo utiliza milhares de mensagens e um único atributo (“Preço”, por exemplo) como entrada. Após isso, ele filtra todo o contexto similar, mesmo quando as variantes óbvias da palavra-chave não são mencionadas.
Polaridade
A Polaridade representa o grau de positividade ou negatividade de um texto. Geralmente é o resultado da análise, podendo ser binário (positivo ou negativo) ou ternário (positivo, negativo ou neutro). Confira o exemplo abaixo:
- “Carol está muito bonita hoje” é Positivo
- “Estou tendo um péssimo dia” é Negativo
- “O Natal é amanhã” é Neutro
Força do sentimento
A força de um sentimento representa a intensidade de um sentimento, normalmente um número móvel entre (-1 e 1). É utilizada como métrica, pois ajuda a captar se o sentimento analisado em uma frase é positivo ou muito positivo, por exemplo. Isso dá maior eficiência para a análise.
Análise de Emoções
Embora seja muito confundida com análise de sentimentos, não são sinônimos. A análise de emoções é um método utilizado para classificar uma emoção específica, como raiva, surpresa e felicidade, presente em uma mensagem.
Utilizada pela análise de sentimentos, a abordagem Léxica Emolex, por exemplo, descreve sentimentos em sentenças em inglês. São eles: anger, anticipation, disgust, fear, joy, sadness, surprise, trust.
Além da identificação da emoção preponderante, também é comum analisar o percentual identificado para cada uma das outras. Confira o exemplo abaixo:
Subjetividade vs. Objetividade
A capacidade de classificar uma sentença a partir de um sentimento pré-determinado, eventualmente, pode não atingir o resultado esperado. Em muitos desses casos o sistema de análise pode estar misturando sentenças objetivas com sentenças subjetivas, que devem ser interpretadas de formas distintas.
De modo geral, para não comprometer a análise, textos objetivos não podem ser misturados com textos subjetivos, que são mais comuns em publicações em redes sociais. Mas é claro, isso tudo depende da abordagem utilizada para realizar a análise.
Desafios na análise de sentimentos
Apesar de seu potencial, a análise de sentimentos enfrenta desafios significativos:
- Sarcasmo e Ironia: Textos que usam sarcasmo ou ironia podem ser interpretados erroneamente pelo modelo como expressando o sentimento oposto;
- Contexto Cultural e Social: Palavras podem ter diferentes conotações em diferentes culturas ou contextos sociais, complicando a interpretação universal de sentimentos;
- Ambiguidade da Linguagem: A ambiguidade e a subjetividade na linguagem humana podem levar a classificações incorretas.
Como o machine learning aprimora a análise de sentimentos?
Machine learning (ML) é essencial para automatizar e escalar a análise de sentimentos. Utilizando algoritmos de aprendizado supervisionado e não supervisionado, os sistemas de ML são treinados para reconhecer padrões em grandes volumes de texto. Aqui estão os passos fundamentais no processo:
- Coleta de Dados: Grandes conjuntos de dados textuais são coletados, geralmente de fontes públicas como redes sociais, fóruns online, ou bancos de dados de revisão de produtos.
- Pré-processamento de Dados: O texto é limpo e preparado para análise. Isso inclui remover ruídos como tags HTML, caracteres especiais e padronizar o texto.
- Extração de Características: Transformar o texto em um formato que o modelo de machine learning possa processar, geralmente utilizando técnicas como bag-of-words, TF-IDF ou, mais recentemente, embeddings de palavras como Word2Vec ou BERT.
- Treinamento de Modelo: Utilizando algoritmos como regressão logística, árvores de decisão, ou redes neurais, o modelo é treinado para classificar os sentimentos dos textos.
- Avaliação: O modelo é testado com um conjunto de dados não visto para verificar sua precisão e ajustar parâmetros conforme necessário.
Implementação: O modelo treinado é implementado como parte de sistemas maiores para análise contínua de sentimentos em textos.
Conclusão
A análise de sentimentos, realizada através de machine learning, é uma ponte entre dados textuais e compreensão emocional, oferecendo insights profundos que podem transformar estratégias de negócios. Embora desafiador, seu potencial para fornecer uma compreensão profunda das emoções e opiniões humanas é inegável.
À medida que as empresas continuam a navegar num mar de dados cada vez mais vasto, os cientistas de dados e engenheiros de ML armados com ferramentas de análise de sentimentos estarão na vanguarda da inovação, decifrando o código das emoções humanas para criar um futuro mais conectado e compreensivo.
E aí, curtiu esse artigo? Então deixe um comentário com a sua opinião. Caso deseje se aprofundar no assunto, recomendo um artigo acadêmico sobre Métodos para Análise de Sentimentos em mídias sociais.
Pedro, parabéns pelo artigo, muito objetivo, simples e de fácil entendimento. Muito obrigado. Vou acessar o artigo acadêmico recomendado, pois talvez seja um bom tema para a minha dissertação no mestrado de Gestão de Sistemas de Informação. Muito interessante!
Fico feliz que tenha gostado Paulo! Esse tema tende a ganhar cada vez mais importância, está apenas engatinhando. Pode ser um ótimo tema.
Olá, tudo bem? Preciso muito identificar nos relatos registrados no meu call center se tem a ver com: preço, concorrência, serviço.. etc. Qual ferramenta poderíamos obter no mercado para fazer esta classificação?
Olá Valeria! Tenho percebido essa necessidade para atendimento ao cliente, quando existe um grande volume de chamados e os atendentes precisam fazer classificação manual. Não conheço nenhuma ferramenta de mercado pronta para fazer isso. Existe uma API chamada Komprehend https://komprehend.io/text-classification que faz essa classificação. Acho que ela também funciona em português, mas, no caso de um callcenter, existe a necessidade de treinamento do sistema para aprender com os temas mais comuns e as possíveis variações de um mesmo tema. Mas para isso precisaria de desenvolvimento de um sistema para consumir essa API.
Eles possuem uma documentação técnica neste link: http://apis.paralleldots.com/text_docs/index.html#custom_classifier
Também existe um manual bem interessante com um passo a passo sobre NLP que vcê poderia utilizar para realizar a classificação dos chamados neste link no github: https://github.com/ErickCosta/nlp-beginner/blob/master/Guia%20B%C3%A1sico%20-%20Processamento%20de%20Linguagem%20Natural.ipynb
Pedro, gostei muito do seu artigo. Um excelente resumo! Parabéns!
Legal Jacinto!
Oi Pedro, tudo bem? parabéns pelo artigo. Estou procurando empresas e/ou sistemas que façam esse tipo de trabalho. Conhece alguma para me indicar?
abs
Tudo bem Sergio? Me adiciona no LinkedIn para você me explicar um pouco melhor a sua necessidade. Assim eu tento te ajudar de alguma forma: https://www.linkedin.com/in/pedrocesargomes/