Trabalhando em Análise de sentimento no Twitter com Idioma Português

Olá a todos,

Neste post eu gostaria de escrever sobre os meus últimos estudos que eu estava focando. Nos últimos anos, percebe-se o aumento da quantidade de informações disponíveis na web. As pessoas começaram a compartilhar na Web os seus conhecimentos e opiniões em blogs, redes sociais e outros meios.

Em cima disso, ele tem aparecido um novo campo de investigação relacionadas com processamento de linguagem natural, chamado Parecer Mining também conhecida como Análise de sentimento. Sentiment Anaylsis tem como objetivo identificar o sentimento ou sensação nos usuários para algo como um produto, empresa, lugar, pessoa e outros com base no teor publicado na teia. Na visão do solicitante, é possível obter um relatório completo, incluindo um resumo sobre o que as pessoas estão se sentindo sobre um item sem a necessidade de encontrar e ler todas as opiniões e notícias relacionadas a ele.
Na área de aprendizado de máquina, análise de sentimentos é um problema de categorização de texto que deseja detectar opiniões favoráveis ​​e desfavoráveis ​​relacionadas a um tópico específico. Seu principal desafio é identificar como os sentimentos são expressos em texto e se elas apontam um parecer positivo ou um negativo.

Há muitas aplicações para o uso de Análise de sentimento, alguma da seguinte forma:
  • Análise de sentimento em ações de empresas: Um dado importante para os investidores, a fim de identificar o humor do mercado para as empresas de ações com base na opinião de analistas, portanto, identificar as tendências em seus preços.
  • Análise de sentimento em produtos: Uma empresa pode estar interessado na opinião de seus clientes sobre um determinado produto. Por exemplo, o Google (ou outra empresa) pode usar a mineração sentimento de saber o que as pessoas estão falando sobre o telemóvel Android: Nexus One. Esta informação pode ser usada para melhorar seus produtos ou mesmo identificar novas estratégias de marketing.
  • Análise de sentimento em Lugares:  Uma pessoa que vai viajar pode querer saber os melhores lugares para visitar ou o melhor restaurante para comer. A mineração opinião poderia ajudar essas pessoas recomendando bons lugares durante o planejamento de sua viagem.
  • Análise de sentimento sobre as eleições: Os eleitores poderia usar a análise de sentimento para identificar a opinião de outros eleitores sobre um candidato específico.
  • Análise em jogos e filmes:  É possível explorar os sentimentos sobre os jogos e até mesmo filmes. Falaremos mais sobre isso no futuro.
Outra aplicação para análise de sentimento é sobre as mensagens de status em redes sociais como o Twitter ou Facebook. Twitter ganhou uma atenção especial recentemente, onde as pessoas usavam para expressar a sua opinião sobre determinado tópico. Portanto, aplicando ferramentas de análise de sentimento para Twitter que tentam classificar os tweets em qualquer das categorias positivas, negativas ou neutras automaticamente poderia ser bastante útil para as empresas e profissionais de marketing. É amplamente uma fonte de dados pública que não pode ser ignorado.

Claro, existem várias ferramentas nesta área, mas mais focado em classificar os tweets no idioma Inglês. Ao usar estas ferramentas para comentários portugueses, muitos tweets de acabar na classificação errada. Acontece uma vez que essas ferramentas geralmente são treinados com algoritmos modelados para analisar e extrair palavras inglesas. No Brasil, existe uma ferramenta web muito interessante chamado Opsys desenvolvidos por Thomas Lopes   que é focada em opiniões de mineração de feeds e os tweets na web. Atualmente, seu foco é sobre as eleições brasileiras de 2010 e os investimentos (ações empresas).Ele funciona muito bem com textos em português e ter um bom instrumento de sumarização web para análise.

Mas uma vez que é uma área nova, especialmente trabalhando com corpora português eu decidi desenvolver uma ferramenta simples análise de sentimento de trabalho para a identificação de opiniões sobre a partir de Twitter. Para isso, eu aplico uma técnica de aprendizado de máquina comum e simples chamado Naive Bayes para classificar o conjunto de tweets relacionados a revisões de filme que eu vou explicar mais sobre isso nas próximas seções.


Ok, mas como é o trabalho de análise sentimento?! Quais são os passos necessários?
  1. Coleta de Dados e Pré-processamento: Nesta etapa, é importante pesquisar na web o item de interesse, isto é, o que você quer saber a opinião sobre. É importante também para remover todos os fatos que não expressam opiniões como notícias e frases objetivas. se o sistema não identifica subjetividade. O foco é sobre opiniões do usuário. O pré-tratamento também é importante, a fim de remover as palavras desnecessárias ou palavras irrelevantes para a etapa seguinte: A classificação. 
      2. Classificação: A polaridade do conteúdo que deve ser identificada.Geralmente, são utilizadas as polaridades positiva, negativa ou neutra.

      3.   Apresentação de Resultados: Nesta etapa, a classificação de vários pontos de vista ser resumidas, a fim de ser apresentada ao utilizador. O objetivo é facilitar o entendimento e dar uma compreensão geral sobre o que as pessoas estão falando sobre um item. Este resumo pode ser expresso em gráficos ou textos. 


Coleta de Dados e Pré-processamento

O primeiro passo (Coleta de Dados) está relacionada com a recuperação de informações. É necessária para extrair as palavras-chave a partir do texto que pode levar a corrigir classificação. Palavras-chave sobre os dados originais são geralmente armazenados sob a forma de um vector característico, F = (F1, F2, ..., FN). Cada coordenada de um vetor de característica representa uma palavra, também chamado de recurso, do texto original. O valor para cada característica pode ser um valor binário, o que indica a presença ou ausência da função, um número inteiro que pode expressar ainda mais a intensidade da característica no texto original. É importante ter uma boa selecção de recursos, uma vez que influencia fortemente a aprendizagem posterior no processo de aprendizagem de máquina. O objectivo de seleccionar boas características é capturar as propriedades desejadas do texto original que são relevantes para a tarefa de análise de sentimento. Infelizmente, essa tarefa para encontrar melhores características não existe. É necessário confiar em nossa intuição, o conhecimento de domínio e muita experimentação para escolher o melhor conjunto de recursos. Eu recomendo fortemente o estudo do  processamento de linguagem natural (NLP)   assunto, o que pode ajudá-lo a entender esse campo de pesquisa muito grande.

Nossa abordagem inclui o uso de Saco-de-Palavras. É um modelo popular usado na recuperação de informações que leva palavras individuais (unigramas) na sentença como características, assumindo a sua independência condicional.Assim, todo o texto é representado por uma coleção desordenada de palavras.Cada recurso no vetor representa uma existência de uma palavra. O desafio com esta abordagem é a escolha de palavras que são apropriadas para se tornar características.

Por exemplo, considerando este modelo, o tweet: "Assisti Hoje O Filme Eclipse, ELE é lindo! ' pode ser representada pela seguinte vector de características:

 F = {'Assisti': 1 , 'hoje': 1, 'o': 1, 'filme': 1, 'Eclipse': 1, 'ele': 1, 'é': 1, 'lindo':1}

Aqui nós representamos o vetor de característica como um dicionário Python.

Obviamente, para qualquer uso real, nós temos que comparar este vector para um vetor de características que teriam muito maior número de palavras. Seria necessário, de facto, um dicionário da linguagem, no entanto, este modelo seria ineficiente, uma vez que seria overfit e levar ao mau desempenho quando expostos a novos exemplos.
Na literatura, uma abordagem comum é selecionar manualmente as palavras-chave mais importantes, por exemplo a palavra 'lindo' (adjetivo) é um bom indicador da opinião do autor. As palavras-chave mais importantes, como 'excelente', 'horrivel', 'fraco' seria seleccionado como características uma vez que expressam a polaridade de uma frase). No entanto, Pang et al. Mostram que a palavra-chave modelo manual é superado por modelos estatísticos, onde um bom conjunto de palavras que representam recursos são seleccionados pela sua ocorrência no corpus de treinamento existente. Assim, a qualidade da selecção dependerá do tamanho do corpo e a semelhança dos domínios de dados de treino e de teste. O uso de corpo a partir de diferentes domínios que não têm as mesmas propriedades do domínio do texto que queremos para classificar, pode conduzir a resultados imprecisos. Por exemplo, se a análise é feita em um conjunto de tweets relacionados a um produto e é treinado com um conjunto baseado em filmes, a maioria das sentenças seriam erroneamente classificados.É importante também para criar um dicionário que irá capturar as características mais importantes para a classificação de sentenças inéditas.

Além disso, é possível remover algumas das palavras existentes que trazem pouca informação útil, como pronomes, artigos, preposições, etc (Lista de palavras de parada). É claro que, o modelo aqui apresentado é simples, e há várias limitações, incluindo a incapacidade para capturar a relação entre as palavras de polaridade e diferentes significados de uma palavra. Outra limitação seria suprimida por uso de expressões regulares para lidar com a negação e partes do discurso para uma análise sintática da palavra.

Classificação

Algoritmos de classificação são técnicas eficientes e consolidados para esta tarefa de classificação sentimento, uma vez que prevê o rótulo para uma determinada entrada. No entanto, dependendo do método utilizado (supervisionado ou não supervisionado), será necessário um conjunto de treinamento com exemplos rotulados antes de novos tweets ser classificada. É importante treinar o modelo com o conjunto em um domínio relacionado com o domínio de dados que será usado como entrada. Os rótulos que estamos interessados ​​aqui estão a subjetividade da sentença e a polaridade da sentença (neutro, positivo ou negativo). Existem várias técnicas de aprendizado de máquina para essa tarefa, mas neste artigo nós estamos usando a mais simples, mas com uma grande efficience em problemas de classificação: Naive Bayestécnica.

O modelo Naive Bayes classificador Naive ou Bayer é um classificador probabilístico simples baseado no teorema de Bayes com fortes hipóteses de independência. Em termos simples, este modelo assume que a probabilidade de presença ou ausência de uma característica particular de uma classe não está relacionada com a presença ou ausência de qualquer outro recurso. Por exemplo, um carro pode ser considerado como um veículo, se existem 4 pneus, motor e, pelo menos, 2 portas. Mesmo se estas características dependem uns dos outros, o classificador Naive Bayes considera todas estas propriedades para contribuir de forma independente para a probabilidade de que o carro é um veículo. No nosso caso, cada palavra em um tweet provindo é considerado como sendo uma variável original no modelo , eo objetivo é encontrar a probabilidade de que a palavra, e consequentemente a toda própria sentença, pertencente a uma determinada classe: Positivo vs Negativo. Apesar de sua concepção ingênua e suposições simplificadas, classificadores Naive Bayes têm funcionado muito bem em muitas situações real-palavra complexos. Um dos usos extensivos é na filtragem de spam. Na verdade, um dos pacotes mais populares (SpamAssassin) é uma implementação direta de Naive Bayes. É uma uma abordagem extremamente simples e também um poderoso classificador.Mais informações sobre o algoritmo de Naive Bayes ele pode ser encontradoaqui e aqui.

Neste tutorial eu usei a implementação de um simples classificador NaiveBayesian. Existem algumas variações usando Fisher Pontuação função discriminante, que não serão exploradas neste artigo agora.
No nosso domínio do problema, vamos usar o classificador Naive Bayes para classificar os tweets em positivo ou negativo. Para aplicar esta tarefa, é necessário treinar o classificador através da criação de um conjunto de treinamento de tweets (ou palavras) já classificados (em positivo ou negativo).Treinado modelo, Naive Bayes assume que todos os recursos do vetor de características (após a etapa de pré-processamento), e aplica-se a regra de Bayes no tweet. Naive Bayes calcula a freqüência probabilidade anterior para cada marcador no conjunto de treinamento. Cada etiqueta é dada uma estimativa de probabilidade de as contribuições de todos os recursos, ea sentença é atribuído o rótulo com a mais alta estimativa de probabilidade, ou seja, 'positiva' ou 'negativo'. 


Compactação

O último passo: A apresentação dos resultados. Geralmente, ele pode ser apresentado utilizando texto ou gráficos. O resumo em texto não é uma tarefa fácil, e tem um campo de pesquisa apenas para ele. A apresentação comum é uma lista de sanções para cada classificação é mostrado pelo seu lado.

Compactação por TwitterSentiment Analyzer - http://twittersentiment.appspot.com/


A outra opção comum é usar gráficos para apresentar os resultados. É a maneira mais simples, e há muitos sabores para esta apresentação. E não se esqueça que eles são mais atraentes para os usuários finais e relatórios.


Compactação por TwitterSentiment Analyzer - http://twittersentiment.appspot.com/


Nosso Estudo de Caso: Filmes Comentários no Twitter

Para um estudo de caso simples e demonstração aqui, eu criei um conjunto de treinamento com cerca de 300 frases mais relacionadas com resenhas de filmes no Twitter. Então frases como 'Eu amei O Filme Eclipse!' ou 'Eclipse poderia Ser Melhor. # horrivel Pior Filme da saga '. são rotulados sob polaridades positivas e negativas para a criação do conjunto de treinamento. É importante notar que os meus corpus de dados estão relacionados com os tweets portugueses. Então, os ingleses não funcionará corretamente. Eu usei o Twitter Search API para pesquisar os tweets com a palavra-chave 'Eclipse', o novo filme lançado nos cinemas da saga "Crepúsculo" e os tweets obtida durante três dias (05 de julho de 2010 - July 07th 2010). 
O que as pessoas estão falando sobre o filme Eclipse no Twitter ??
A tarefa é analisar as opiniões sobre o filme no Twitter. Utilizando o classificador Naive Bayes com alguns ajustes para incluir a Classificação 'Neutral', analisamos 4265 tweets. Eu usei algumas técnicas de pré-processamento explicado acima. Todo o código foi escrito em Python. O resultado você pode ver no gráfico abaixo.

Gráfico polaridade em tweets sobre o filme 'Eclipse'

Como você pode notar, os brasileiros estão realmente amando o filme Eclipse !!Há também uma grande quantidade de tweets sobre neutras, isso significa que o classificador não tem a confiança para classificar como positivo ou negativo, (eu vou explicar em breve) ou tweets que não expressam sentimento (opiniões).

Você pode ver alguns dos tweets classificadas da seguinte forma:
Alguns tweets classificados relacionados com o Eclipse filme

A classificação neutra, eu adicionei um limiar simples, onde depois de avaliar as probabilidades para cada polaridade (positivo e negativo). A uma máxima é comparada com um limiar, e se o seu valor for maior, é classificada como uma neutra. Isso significa que o classificador não tem a confiança para classificar o tweet como uma das classes treinados no modelo. Como você pode ver, a Naive Bayes é uma simples técnica de aprendizado de máquina bastante eficiente para extrair automaticamente sentimento de pequenas frases como tweets . No entanto, é importante notar que ele ainda pode ser melhorada com novas abordagens de extração de características ou mais robustas técnicas de aprendizado de máquina. Demonstração Em breve vou fornecer todo o código fonte para este projeto, mas se você quiser brincar com o classificador, I 've desenvolveu uma API REST simples para usar o classificador para testes simples. Esta versão ainda não é oficial e só funciona com resenhas de filmes de domínio (em português, claro). Docummentation  O resultado de saída é em JSON. POR FAVOR ESTE API ainda está em desenvolvimento. Então, se você está pensando em integrar esta API em um produto, por favor me avise, para que eu possa entrar em contato com você, a fim de ajudá-lo a criar o seu próprio. O classificador é apenas trabalhar com um único texto arbitrário (em idioma português) e como resultar dar-lhe a sua polaridade. Exemplo:










Consulta:
http://mobnip.appspot.com/api/sentiment/classify?text=Encontro+Explosivo+filme+ruim+Danado&query=encontro+explosivo

Resposta:

{"results": {"polarity": "negativo", "text": "Encontro Explosivo filme ruim Danado", "query": "encontro explosivo"}}


Parâmetros: 
- o texto: O texto que você deseja classificar. Isto deve ser URL codificado. 
- Consulta: O sujeito. Isto deve ser URL codificado. (opcional)
: Resposta 
texto original apresentado: texto - 
- query: consulta original apresentado 
- polaridade. Os valores de polaridade são: 
       - 'negativo': corresponde a negativa 
       - 'neutro': corresponde à posição neutra 
       - 'positivo': corresponde a positivo



Conclusões

Como podemos notar que a análise de sentimento é uma tendência na Web, com vários interessante aplicação com um monte de fontes de dados fornecidos por usuários. Microblogs e redes sociais como Twitter, Facebook e Orkut e outros serviços web são fontes poderosas para obter apinhamento opiniões dos usuários na Web sobre qualquer assunto e especialmente para ajudar a responder à pergunta sobre o que as pessoas estão interessadas em. Apesar do desafio, mais empresas e pesquisadores estão trabalhando nesta área até que um dia seria fácil para os usuários e empresas para simplesmente obter relatórios completos e ricos resumidos sobre os pareceres da Web, a fim de apoiá-los no processo de tomada de decisão na sua vida diária.  Em temas de aprendizado de máquina, há também uma série de melhorias que seriam feitas para esta tarefa e vários desafios para pesquisadores de estendê-lo. Eu diria que os mais importantes estão relacionados com o processamento de linguagem natural, que está diretamente associado à análise de sentimento. Eu citaria a identificação subjetividade (distinguir se um texto é realmente uma opinião ou um fato), identificação de sarcasmos, que não são fáceis de extrair, a referência múltipla de itens em uma mesma frase (um tweet referenciar iPhone e iPod) e com diferentes opiniões, que podem confundir a classificação. Misspelling palavras e palavras abreviadas (comuns em blogs e redes sociais) também dificuldades para a pesquisa e classificação. Muitos outros poderiam ser citados aqui, mas pode ser encontrado se você pesquisar no Google sobre análise de sentimento. No final, eu diria que a aplicação de análise de sentimento no idioma português ainda é uma nova área com grandes desafios para lidar com a mineração de texto desde que a língua é diferente dos atuais aplicadas em Inglês na literatura. Meu trabalho é uma discussão inicial sobre como podemos aprender mais sobre a análise de sentimento e como português poderia ser inserido neste contexto. Mais análise e uma melhor avaliação deve ser aplicado para comparar outra máquina populares técnicas com Classificador Naive Bayes aprendizagem. Espero que tenham gostado deste tutorial, é bastante longo, mas eu acredito que ele poderia ser um ponto de partida útil para os iniciantes no aprendizado de máquina. Obrigado, Até a próxima! Marcel Caraciolo

Comentários

Postagens mais visitadas deste blog

Rails CanCan

Meus insights mais valiosos sobre criptomoedas para 2018 e além

Como pegar a senha do Whatsapp de um Android ou Iphone