analise de sentimento em portugues

2,102 views
Skip to first unread message

Marcelo Valle

unread,
Feb 11, 2018, 10:14:56 AM2/11/18
to Python Brasil
Pessoal, 

Eu brinquei um pouco com a lib TextBlob, que jah tem uma base treinada em ingles para analise de sentimento. 

Basicamente, eu executo `python -m textblob.download_corpora` para fazer download da base e aih jah posso executar a api como no exemplo do inicio dessa pagina:


Muito facil de usar e atende o que eu preciso. 

Contudo, eu preciso fazer a mesma coisa em portugues. Alguem saberia dizer se existe uma base jah treinada, open source, que eu possa usar com nossa lingua, para TextBlob? Ou entao alguem tem alguma outra recomendacao pra dar?

Eu nao gostaria de criar um modelo eu mesmo, nao quero nada muito sofisticado, por enquanto isso mais uma POC/MVP. 

Abracos,
--
Marcelo Valle
http://mvalle.com - @mvallebr

José Neto

unread,
Feb 11, 2018, 11:46:44 PM2/11/18
to python...@googlegroups.com
O nltk mantem uma pagina[1] com diversos corpora[2].

[1] http://www.nltk.org/nltk_data/
[2] https://pt.wikipedia.org/wiki/Corpus_lingu%C3%ADstico
> --
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
> ---
> Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos
> Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie
> um e-mail para python-brasi...@googlegroups.com.
> Para postar nesse grupo, envie um e-mail para
> python...@googlegroups.com.
> Para ver essa discussão na Web, acesse
> https://groups.google.com/d/msgid/python-brasil/CABKQidu9ac2xg8dZMAF0BOz_VGmFO1v%2B%3DLjddJ2Y0dzPVBRqVw%40mail.gmail.com.
> Para mais opções, acesse https://groups.google.com/d/optout.

Abelardo Mota

unread,
Feb 12, 2018, 5:57:36 AM2/12/18
to Python Brasil
Marcelo,

pesquisando por 'sentiment analysis portuguese' dá para achar algum material.

Não achei modelos pré-treinados, mas há exemplos de desenvolvimento de modelos simples, que talvez te atendam, como esse kernel no kaggle.

Marcelo Valle

unread,
Feb 12, 2018, 6:59:14 AM2/12/18
to Python Brasil
Entao Abelardo, o problema eh justamente criar um modelo, o que eu queria era um modelo pre-treinado. Criar um modelo implica em manutencao do modelo, nao eh simplesmente usar algo que alguem estah mantendo, pra mim eh como a diferenca entre usar uma lib e criar uma, se voce cria uma, tem que ficar responsavel pela manutencao dela...

Pra criacao de um modelo, eu achei esse artigo do Rodrigo Santana muito bom - http://minerandodados.com.br/index.php/2017/03/15/analise-de-sentimentos-twitter-como-fazer/ - ele dah uma aula de conceitos. 
Vou adicionar o seu link pra minha lista.

Criar um modelo nao seria uma tarefa facil, mas se eu o fizesse, provavelmente estaria considerando criar uma lib open source e liberala com licenca apache 2... Por curiosidade, voces acham que existe demanda por isso? Achei tao dificil encontrar algo assim...


[]s



Virus-free. www.avast.com

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Marcelo Valle

unread,
Feb 12, 2018, 7:01:11 AM2/12/18
to Python Brasil
Obrigado Jose. Eu dei uma olhada no codigo do textblob, parece que ele espera corporas especificos, nao acho mais que va funcionar simplesmente colocando corporas em portugues... Mas isso pode ser util se eu vier a criar um modelo um dia. Obrigado!

[]s


> ---
> Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos
> Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie

> Para postar nesse grupo, envie um e-mail para
> python...@googlegroups.com.
> Para ver essa discussão na Web, acesse
> https://groups.google.com/d/msgid/python-brasil/CABKQidu9ac2xg8dZMAF0BOz_VGmFO1v%2B%3DLjddJ2Y0dzPVBRqVw%40mail.gmail.com.
> Para mais opções, acesse https://groups.google.com/d/optout.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
    http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
    python-brasil+unsubscribe@googlegroups.com
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para postar neste grupo, envie um e-mail para python...@googlegroups.com.
Para ver esta discussão na web, acesse https://groups.google.com/d/msgid/python-brasil/CAC1ODZZcZJPE17g8SHhTJD4HY%3DXzgnxfOacNvf8nFzUrBez%2BqA%40mail.gmail.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Rodrigo Baron

unread,
Feb 12, 2018, 8:33:09 AM2/12/18
to Python Brasil
Fiquei curioso com a sua questão e fiz um POC muito simples usando o primeiro corpus que encontrei, o "Léxico do ReLi"[0], se quiser baixe o rar e execute isso:

from textblob import TextBlob
from textblob.classifiers import NaiveBayesClassifier
import os
import re

base_path = 'ReLi-Lex'
train = []
files = [os.path.join(base_path, f) for f in os.listdir(base_path)]

for file in files:
t = 'pos' if '_Positivos' in file else 'neg'
with open(file, 'r') as content_file:
content = content_file.read()
all = re.findall('\[.*?\]',content)
for w in all:
train.append((w[1:-1], t))

cl = NaiveBayesClassifier(train)
blob = TextBlob("A cerveja é boa. Mas a ressaca é horrível.", classifier=cl)
for s in blob.sentences:
print("[%s] %s" % (s.classify(), s))
#[pos] A cerveja é boa.
#[neg] Mas a ressaca é horrível.


* [0] - http://www.linguateca.pt/Repositorio/ReLi/

Att,

Marcelo Valle

unread,
Feb 12, 2018, 9:05:22 AM2/12/18
to Python Brasil
Rodrigo, 

Muito obrigado pelo codigo, eh lindamente simples o seu codigo. :D
Contudo, dah pra dizer que isso vai funcionar tao bem quanto a versao em ingles?

Me corrija se eu estiver errado, mas para saber se o modelo funciona bem para a lingua portuguesa, teriamos que analisar os dados, gerar a matriz de confusao, etc., certo? Eu sou novo nisso tudo, entao posso estar falando besteira, me corrija se eu estiver errado. 
Nao existe a possibilidade desse treino nao convergir na lingua portuguesa?

Abracos,
Marcelo.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Marcelo Valle

unread,
Feb 12, 2018, 9:06:27 AM2/12/18
to Python Brasil
Soh pra completar - dito isso, *muito obrigado* pelo codigo, vale usar para uma POC com certeza, nao imaginei que fosse tao simples!

Marcelo Valle

unread,
Feb 12, 2018, 9:28:17 AM2/12/18
to Python Brasil
Rodrigo, por exemplo, tentei com mais alguns exemplos:

blob2 = TextBlob("O Trump e muito idiota. Como pode um cara desses ser tao escroto!", classifier=cl)
for s in blob2.sentences:

print("[%s] %s" % (s.classify(), s))
# [pos] O Trump e muito idiota.
# [pos] Como pode um cara desses ser tao escroto!

Rodrigo Baron

unread,
Feb 12, 2018, 10:37:40 AM2/12/18
to Python Brasil
Esse é um modelo muito simples, vai te servir apenas para um POC e nem se compara ao modelos utilizado em produção, se você conseguir um corpus melhor certamente vai ter melhores avaliações. Porem mesmo se você pegar um modelo pronto é ideal analisar e avaliar os resultados do modelo para o propósito da sua aplicação, se isso foge dos recursos planejado para o seu projeto talvez a melhor opção seria utilizar um serviço que te forneça uma API para consumo utilizando texto em português.

Att,

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.



--
Marcelo Valle
http://mvalle.com - @mvallebr



--
Marcelo Valle
http://mvalle.com - @mvallebr

Marcelo Valle

unread,
Feb 12, 2018, 11:38:44 AM2/12/18
to Python Brasil
Entao, 

Quando eu disse POC/MVP, minha intencao era definir algo simples que jah agregasse valor do zero, sem a necessidade de criar um modelo. Fico pensando, se meu projeto fosse em ingles, provavelmente a API textblob funcionaria ok...
Com certeza seu codigo me ajuda muito, dah pra mostrar algo minimamente funcionando com ele, mas eu ainda sinto que uma lib open source que fizesse um pouco mais que isso seria interessante, se existisse...
Por favor, poderia comentar sobre a idea de criar uma lib? Sera que eh impossivel criar uma lib "razoavel" pra analise de sentimento em portugues? Eu fiquei seriamente tentado a tentar criar uma, mas pode ser que eu esteja viajando e para qualquer empresa mais seria seja necessario criar um modelo proprio mais elaborado.

Abracos,
Marcelo.


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Rodrigo Baron

unread,
Feb 12, 2018, 8:51:59 PM2/12/18
to Python Brasil
então, eu não conheço nenhum modelo pronto em português e sobre a lib acho uma boa ideia e certamente seria muito útil. Porem acredito que o principal problema não é a lib e sim o corpus.. por exemplo se você utilizar este script acima junto com esse repositório https://github.com/pauloemmilio/dataset possivelmente resultaria em um modelo compatível a outros modelos em inglês do mesmo proposito de maneira fácil.

Mas fale mais sobre sua ideia da lib, acredito que tenha um pessoal aqui que gostaria de aprender e ao mesmo tempo contribuir com seu projeto :) ...

Att,

Marcelo Valle

unread,
Feb 13, 2018, 8:42:08 AM2/13/18
to Python Brasil
Entao, na verdade foi mais uma ideia... Eu nao sei quanto interesse haveria por algo assim. 
Eu imagino que para 90% das aplicacoes, uma lib pronta jah seria o suficiente. E como dados fazem diferenca, imagino varios contribuidores distintos contribuindo com dados para ajudar a tornar a lib melhor pra todos. 

Minha ideia era criar uma textblob-portuguese que adicionasse suporte a portugues para a lib. A lib provavelmente carregaria dados jah treinados de varias fontes e seria um repositorio unico para qualquer um que quisesse contribuir com mais dados ou melhorando o modelo.

[]s


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

bjpra...@gmail.com

unread,
Apr 8, 2018, 9:12:00 AM4/8/18
to Python Brasil
Oi Marcelo, 

estou tendo o mesmo problema, que você teve. Você conseguiu solucionar? 
Caso esteja desenvolvendo um projeto da textblob em português, eu gostaria de estar contribuindo.

Marcelo Valle

unread,
Apr 8, 2018, 10:14:46 PM4/8/18
to Python Brasil
Ola bjpraciano, 

Nao resolvi e estou sim criando algo para analise em portugues, mas de forma nao profissional, como hobbie. Profissionalmente, resolvi indicando APIs prontas.
Voce gostaria de contribuir com codigo ou com corpora (dados)?

Abracos,
Marcelo.



---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Carlos Saraiva

unread,
Jan 8, 2019, 11:01:29 AM1/8/19
to Python Brasil
Olá a todos,,

Eu também estou interessado em análise de sentimento em Português, possivelmente usando o textBlob. Já vi que há versões em Francês e Alemão.

Pala estrutura do idioma, a versão em Francês seria o mais fácil para usar como base, para tradução. Encontrei também este trabalho que pode ajudar: http://www.scielo.br/scielo.php?script=sci_arttext&pid=S1984-63982013000400004

Se há mais interessadas, posso colaborar na criação da versão textblob-pt. 

 ~ carlos

André Luiz

unread,
Jan 8, 2019, 12:36:42 PM1/8/19
to python...@googlegroups.com
Gostaria de participar de alguma forma 


 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Luciano Martins

unread,
Jan 8, 2019, 1:07:07 PM1/8/19
to Python Brasil
Num sei como mas também gostaria de participar...


Em domingo, 11 de fevereiro de 2018 13:14:56 UTC-2, Marcelo Valle escreveu:

Edivaldo Rocha

unread,
Jan 8, 2019, 1:17:54 PM1/8/19
to python...@googlegroups.com
Olá, estou disponível para ajudar.


 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
--
Enviado do Gmail para celular

José Edivaldo Rocha

unread,
Jan 8, 2019, 2:02:40 PM1/8/19
to Python Brasil
Estou disponível para ajudar.

Valdemar W. Setzer

unread,
Jan 9, 2019, 5:00:13 AM1/9/19
to Python Brasil
Olá a todos, 

Uma pequena consideração filosófica, destoando das considerações técnicas deste assunto. 

Cuidado! Sentimentos e sensações são absolutamente individuais e subjetivos. É impossível sentir uma sensação (por exemplo, do gosto de uma banana sendo comida) ou um sentimento (gostar ou não da banana --pode estar verde...) que uma outra pessoa está sentindo. Imagino que os sistemas que vocês estão descrevendo analisa palavras e daí conclui algum tipo de sentimento. Isso é psicometria, tentando objetivar o que é subjetivo. Portanto, não se deve confiar nos resultados. Uma pessoa pode expressar um sentimento de um jeito, e um sentimento semelhante ser expresso por outra pessoa de outra maneira. No máximo, esses sistemas vão, mal e mal, detectar algumas palavras (duvido que sejam frases ou, muito pior, parágrafos,  corrijam-me se estou errado) que revelam certos sentimentos. Só que as pessoas que associaram as palavras aos sentimentos também fizeram isso subjetivamente. 

O que quero dizer é que não se deve tirar conclusões definitivas sobre sentimentos de uma pessoa ou de um texto a partir desses sistemas. Lembrem-se que estatísticas não devem ser aplicadas a indivíduos, elas revelam tendências de um grande número deles. Se um remédio tem 90% de chance de curar e 10% de matar, e a doença não é fatal, vocês o tomariam?

aaaaaaaaa. 

Roberto Vicente

unread,
Jan 9, 2019, 6:41:26 AM1/9/19
to python...@googlegroups.com

Ola, sou iniciante, você tem um projeto de cadastro de clientes, que eu posa ver para aprender um pouco mais...

Obrigado pela atenção...

Roberto

 

Enviado do Email para Windows 10

 

De: José Edivaldo Rocha
Enviado:terça-feira, 8 de janeiro de 2019 17:02
Para: Python Brasil
Assunto: Re: [python-brasil] Re: analise de sentimento em portugues

 

Estou disponível para ajudar.

 

--

--

------------------------------------

Grupo Python-Brasil

 

<*> Para visitar o site do grupo na web, acesse:

    http://groups.google.com/group/python-brasil

 

<*> Para sair deste grupo, envie um e-mail para:

    python-brasi...@googlegroups.com

---

Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para postar neste grupo, envie um e-mail para python...@googlegroups.com.

Para ver esta discussão na web, acesse https://groups.google.com/d/msgid/python-brasil/abe81d90-45c3-4984-a37a-6ff76810f1e7%40googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/d/optout.

 

Cristiano Marques

unread,
Jan 10, 2019, 10:55:37 AM1/10/19
to python...@googlegroups.com
Estou a disposição


 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Marcelo Valle

unread,
Jan 10, 2019, 12:34:15 PM1/10/19
to Python Brasil
Puxa vida, essa thread ficou inativa por 1 ano e de repente aparece um push da comunidade rsrsrrs Que legal essa vida open source :D
Galera, na epoca, eu tinha feito a pergunta sobre o interesse de criarem um projeto, mas eu acabei resolvendo meu problema de outra maneira e depois desse periodo, assumi outros compromissos. 
Eu nao conseguiria no momento atual puxar a iniciativa de um projeto grande desses, mas se houverem cientistas de dados interessados, ficarei super feliz em iniciar um projeto no github que usa como modelo inicial algo bem bem simples como a POC do Rodrigo Baron, de forma que pessoas que conhecam ciencia de dados possam comecar a discutir e tocar o projeto. 

Em outras palavras, nao consigo ser o cientista de dados principal do projeto, ateh porque eu mesmo tenho muito a aprender nesse ramo, mas eu me proponho a ser o maintainer e tomar conta de coisas como releases, padroes, organizacao de codigo, instalacao, etc. 

Provavelmente criar algo do tipo necessitaria muita discussao e a mensagem do prof. Valdemar seria um bom comeco...  Voces gostariam disso? Se estiverem serios a respeito do projeto e entenderem o quao dificil isso pode ser, me avisem que eu corro atras de criar um boilerplate. 

[]s



Reply all
Reply to author
Forward
0 new messages