Análise de Sentimento - Parte I Erica Castilho Rodrigues 26 de Março de 2014
3 O que será visto nessa aula? O que é análise de sentimento? Vale a pena aplicar essa técnica? Quais são desafios? De maneira geral, como é feita?
O que queremos dizer com sentimento aqui? atitudes; emoções; opiniões. Impressões subjetivas e não fatos.
5 Em geral, assume-se que as opiniões assumem um caráter binário: a favor/ contra; gosta/ não gosta; bom/ruim. Termos muito usados nessa área: Orientação Semântica ; Polaridade. Se referem a quão negativa ou positiva uma palavra é. ótimo é muito positiva. péssimo é muito negativa.
6 Objetivo da Análise de Sentimento: Usar técnicas de: Processamento Natural de Linguagem; Estatística; Aprendizagem de Máquina para extrair a opinião de um texto. Também chamada de Mineração da Opinião.
Tipos de perguntas que busca responder A resenha desse produto é positiva ou negativa? Nesse e-mail o consumidor parece satisfeito ou não? Usando uma amostra de tweets: como as pessoas estão respondendo à campanha desse produto? Como tem mudado a atitude dos blogueiros em relação ao presidente?
8 Exemplo: Uma empresa está analisando suas vendas de notebooks. Ele tem dados sobre: vendas, preços, especificações, etc. Deseja saber qual opinião do consumidor sobre o produto e os serviços prestados: o design é feio? o serviço prestado ao consumidor deixa a desejar?
9 Exemplo: Verificar se os consumidores não entenderam algum aspecto sobre os serviços prestados: acreditam que alguma atualização não está disponível quando na verdade está. É difícil obter informações de consumidores que não compraram o produto. Podemos aplicar as técnicas de Análise de Sentimento para: procurar opiniões de cliente na internet; buscar por resenhas deste e outros notebooks em Blogs, rede sociais, sites de lojas, etc; resumir toda essa informações e tirar conclusões sobre opinião das pessoas sobre o produto.
10 A Análise de Sentimento também pode ser aplicada em outras áreas: política; sociologia; psicologia; esportes. Exemplo: busca de tweets homofóbicos. Verificar como muda a opinião de um usuário após um evento.
Aplicações na Política Analisar tendências. Identificar viéses ideológicos. Dar publicidade a mensagens e propagandas. Avaliação das opiniões públicas/eleitores. Analisar discussões políticas.
Por que usar a Análise de Sentimentos? Os seres humanos são criaturas subjetivas. É muito importante coletar suas opiniões. Porém é custoso obter essa informação. Quando não é fornecida de maneira espontânea, nem sempre condiz com a realidade.
13 Desafios da Análise de Sentimento As pessoas expressam opiniões de maneira complexa. Podem usar ironias, sarcasmo, etc. Inversão na ordem das frases também dificulta. Erros de digitação e gírias. Pessoas mudam de tópico bruscamente.
O que queremos classificar? Há muitas possibilidades do que nós podemos querer classificar: Usuários; Textos; Sentenças (parágrafos, pedaços de texto); Palavras; tweets.
15 Para classificar textos e sentenças, precisamos primeiro: classificar palavras e expressões. Não basta classificar palavras. baixo poderia ser classificada como negativa. A expressão preço baixo é positiva. Uma forma simples de classificar um texto: contar o número de palavras positivas e negativas. Problemas com essa abordagem? Claro! Ironia, sarcasmo, etc.
16 Precisamos então de: uma lista de palavras positivas e negativas. Existem listas extensas para o inglês. Muitos métodos automáticos buscam expandir essas listas - tópico de pesquisa. Para o porguês as listas não são tão grandes. O processamento de linguagem para o português ainda está sendo desenvolvido.
Emoticons/Smiles Em textos curtos como tweets a análise de sentimento é mais complicada. Existe pouca informação nas mensagens. Os sentimentos são representados através de smiles/emoticos. : ) : / : ( Vejamos algumas ferramentas já disponíveis na internet.
18 General Inquirer Ferramenta de análise de conteúdo. Criado em 1966. Banco de palavras criado manualmente. Classifica a conotação positiva e negativa das palavras. Disponível em http://www.wjh.harvard.edu/~inquirer.
19 LIWC Busca linguística e contagem de palavras. Semelhante ao GI. Conta palavras pertencentes às categorias positiva e negativa. Disponível em http://www.liwc.net/.
20 Wordnet Banco de sinônimos de palavras em inglês. Substantivos, verbos, adjetivos e adjetivos são agrupados em conjuntos de sinônimos. Uma rede é criada. Palavras são ligadas de acordo com relações conceituais e lexicais. Não foi desenvolvido especificamente para Análise de Sentimento. Tem sido usado para aumentar a lista de palavras positivas e negativas. Busca sinônimos de palavras que já estão na lista. Disponível em http://wordnet.princeton.edu/.
SentiWordNet Recurso desenvolvido para mineração da oponião. Utiliza a base de dados do Wordnet. A cada sentença se atribui um dos sentimentos: positividade, negatividade e objetividade. Disponível em http://sentiwordnet.isti.cnr.it/.
General Sentiment Coletam opiniões dos consumidores na internet. Sintetizam e extraem informação dos resultados obtidos. Auxiliam na tomada de decisões.
23 Exemplo de um Relatório
Exemplo de um Relatório
25 Exemplo de um Relatório
26 Sentiment140 Aplicativo desenvolvido para Análise de Sentimento de dados do Twitter. Coletam os tweets que mencionam determinado termo. Contam o número de palavras positivas e negativas em cada um deles.
Método mais simples... Tem uma lista de palavras positivas e negativas. Conta a frequência em cada sentença. Problemas com essa metodologia: não considera níveis de positividade/negatividade diferente entre as palavras bom e ótimo são considerados iguais; só considera o nível da palavra; desconsidera o contexto.
Função em R para calcular o sentimento: score.sentiment = function(sentences, pos.words, neg.words,.progress= none ) { require(plyr) require(stringr) # recebe como entrada um vetor de sentenças e uma lista de palavras positivas e negativas # plyr - pacote para aplicar funções em vetores, listas, matrizes rapidamente # laply - aplica a função em cada sentença e retorna um vetor correspondente ao score # de cada uma scores = laply(sentences, function(sentence, pos.words, neg.words) { # clean up sentences with R s regex-driven globa 28