Estou procurando uma implementação de código aberto, de preferência em python, de Textual Sentiment Analysis ( http://en.wikipedia.org/wiki/Sentiment_analysis ). Alguém está familiarizado com essa implementação de código aberto que posso usar?
Estou escrevendo um aplicativo que pesquisa no Twitter por algum termo de pesquisa, como "youtube", e conta os tweets "felizes" versus os "tristes". Estou usando o appengine do Google, então está em python. Eu gostaria de poder classificar os resultados de pesquisa retornados do twitter e gostaria de fazer isso em python. Não consegui encontrar esse analisador de sentimento até agora, especificamente não no python. Você está familiarizado com essa implementação de código aberto que posso usar? De preferência, isso já está em python, mas se não, espero poder traduzi-lo para python.
Note, os textos que estou analisando são MUITO curtos, são tweets. Portanto, idealmente, esse classificador é otimizado para esses textos curtos.
A propósito, o Twitter suporta os operadores ":)" e ":(" na pesquisa, que visam fazer exatamente isso, mas, infelizmente, a classificação fornecida por eles não é tão boa, então imaginei que poderia tentar fazer isso sozinho .
Obrigado!
BTW, uma demonstração inicial está aqui e o código que tenho até agora está aqui e eu adoraria abri-lo com qualquer desenvolvedor interessado.
Boa sorte com isso.
O sentimento é extremamente contextual, e a cultura de tweetar torna o problema pior porque você não tem o contexto para a maioria dos tweets. O objetivo do Twitter é que você pode aproveitar a enorme quantidade de contexto compartilhado do "mundo real" para incluir uma comunicação significativa em uma mensagem muito curta.
Se eles disserem que o vídeo é ruim, isso significa ruim ou ruim ?
fonte
Obrigado a todos pelas sugestões, foram de facto muito úteis! Acabei usando um classificador Naive Bayesian, que peguei emprestado daqui . Comecei alimentando-o com uma lista de palavras-chave boas / ruins e, em seguida, adicionei um recurso de "aprender" empregando o feedback do usuário. Acabou por funcionar muito bem.
Todos os detalhes do meu trabalho em uma postagem no blog .
Novamente, sua ajuda foi muito útil, então obrigado!
fonte
Construí uma lista de palavras rotuladas com sentimento. Você pode acessá-lo aqui:
http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip
Você encontrará um pequeno programa Python em meu blog:
http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/
Esta postagem mostra como usar a lista de palavras com frases simples e também no Twitter.
As abordagens de listas de palavras têm suas limitações. Você encontrará uma investigação das limitações da minha lista de palavras no artigo "Uma nova ANOVA: Avaliação de uma lista de palavras para análise de sentimento em microblogs". Esse artigo está disponível em minha página inicial.
Observe um
unicode(s, 'utf-8')
está faltando no código (por razões pedagógicas).fonte
Muitos trabalhos de pesquisa indicam que um bom ponto de partida para a análise de sentimento é olhar para os adjetivos, por exemplo, são adjetivos positivos ou adjetivos negativos. Para um pequeno bloco de texto, esta é praticamente sua única opção ... Existem papéis que olham para documentos inteiros ou análise de nível de frase, mas como você diz, os tweets são bastante curtos ... Não existe uma abordagem mágica real para compreender o sentimento de uma frase, então acho que sua melhor aposta seria caçar um desses artigos de pesquisa e tentar obter seu conjunto de dados de adjetivos orientados positivamente / negativamente.
Agora, dito isto, o sentimento é específico do domínio, e você pode achar difícil obter um alto nível de precisão com um conjunto de dados de uso geral.
Boa sorte.
fonte
Acho que você pode achar difícil encontrar o que procura. A coisa mais próxima que conheço é LingPipe , que tem algumas funcionalidades de análise de sentimento e está disponível sob um tipo limitado de licença de código aberto, mas é escrito em Java.
Além disso, os sistemas de análise de sentimento geralmente são desenvolvidos treinando um sistema em dados de resenhas de produtos / filmes que são significativamente diferentes dos tuítes comuns. Eles serão otimizados para texto com várias frases, todas sobre o mesmo assunto. Eu suspeito que você faria melhor em criar um sistema baseado em regras, talvez baseado em um léxico de termos de sentimento como o fornecido pela Universidade de Pittsburgh .
Confira We Feel Fine para uma implementação de ideia semelhante com uma interface realmente bonita (e twitrratr ).
fonte
Dê uma olhada na ferramenta de análise de sentimento do Twitter . É escrito em python e usa o classificador Naive Bayes com aprendizado de máquina semissupervisionado. A fonte pode ser encontrada aqui .
fonte
Talvez o TextBlob (baseado em NLTK e padrão) seja a ferramenta de análise de sentimento certa para você.
fonte
Eu encontrei o Natural Language Toolkit há um tempo. Você provavelmente poderia usá-lo como ponto de partida. Ele também tem muitos módulos e complementos, então talvez eles já tenham algo semelhante.
fonte
Pensamento um tanto maluco: você poderia tentar usar a API do Twitter para baixar um grande conjunto de tweets e, em seguida, classificar um subconjunto desse conjunto usando emoticons: um grupo positivo para ":)", ":]", ": D", etc. e outro grupo negativo com ":(" etc.
Depois de ter essa classificação grosseira, você pode pesquisar mais pistas com análise de frequência ou ngram ou algo parecido.
Pode parecer bobagem, mas pesquisas sérias foram feitas sobre isso (pesquise "análise de sentimento" e emoticon). Vale a pena dar uma olhada.
fonte
Existe uma API de sentimento do Twitter da TweetFeel que faz análises linguísticas avançadas de tweets e pode recuperar tweets positivos / negativos. Veja http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm
fonte
Para aqueles interessados em codificar o Twitter Sentiment Analyis do zero, há um curso " Data Science " do Coursera com código python no GitHub (como parte da tarefa 1 - link ). Os sentimentos fazem parte do AFINN-111 .
Você pode encontrar soluções de trabalho, por exemplo aqui . Além da lista de sentimento AFINN-111, há uma implementação simples de construir uma lista de termos dinâmica com base na frequência de termos em tweets que têm uma pontuação pos / neg (veja aqui ).
fonte