Classificação de Frases Depressivas em Português em Redes Sociais

Gabriel Nogueira
Nov 3 · 4 min read
WordCloud no Conjunto de Frases

Atualmente, depressão já não é mais considerada como frescura e sim uma das doenças mais comuns do século, podendo levar até a morte em seus piores casos².

Segundo a OMS mais de 300.000.000 de pessoas sofrem com depressão.

As redes sociais viraram febre no mundo inteiro e é um dos locais em que existem mais pessoas compartilhando tudo sobre o que está passando na vida, desde coisas boas até coisas ruins.

Sabendo disso, por que não se utilizar dos avanços tecnológicos para tentar conseguir ajudar pessoas que estão com essa doença? Foi com isso em mente que apresento um algoritmo de aprendizagem de máquina para classificar frases depressivas, junto de uma API.

O link para acesso da api é http://depression-classifier.herokuapp.com/apidocs/


Extração de dados

Quando trabalhamos com algoritmos de aprendizagem de máquina precisamos ter uma boa quantidade de dados. Um bom local para se coletar frases é o Twitter, por se tratar de uma rede social que as pessoas se expressam na maioria da vezes por meio de texto e por existir uma biblioteca para Python conhecida como Tweepy que facilita na hora da coleta.

Como não foi possível conseguir algum especialista da área para ajudar na hora da coleta, foram analisados exemplos do artigo de O’Dea¹, no qual eles coletavam dados do Twitter por meio de Hashtags que características de suicídio e após era passado por um time de especialistas para classificação para treinar um algoritmo de SVM.

Foi então realizado uma curadoria física pegando frases em primeira pessoa e que remetessem às frases apresentadas por O’Dea¹, sendo classificadas em 0 para frases depressivas e 1 para outras, foram conseguido ao todo 500 frases depressivas e para balancear o conjunto de treino foram coletadas outras 500 não depressivas.

Exemplo de frases colhidas

Pré-processamento

Ao receber os dados deve-se passar os mesmo por uma limpeza de ruídos e normalização para conseguir uma melhora no desempenho do classificador.

Quando se é coletado os dados no Twitter é normal eles virem com Hashtags, referências para outras contas com uso do @ e links que muitas vezes por não dizerem nada útil, acabam não ajudando na hora de classificar.

Para normalização foi usado o simples que é deixar tudo em minúsculo, remover os acentos e também as pontuações.

Limpeza de texto em Python

Vetorização

Infelizmente os computadores não conseguem entender as palavras como nós seres humanos entendem, eles foram feitos para entender números. Por isso a vetorização é tão importante, é o ato de transformar uma frase em um vetor numérico.

Para isso já existem muitos algoritmos como o Bag of Words, TF-IDF, Word2Vec e muitos outros que vêem surgindo nos últimos anos, já que foi notado que essa é uma das etapas mais importantes no momento que se trabalha com texto.

O algoritmo de vetorização utilizado aqui foi o TF-IDF, não vou entrar em detalhes matemáticos nesse artigo, mas ele basicamente dá pesos menores para palavras que se repetem muito dentro de um conjunto de frases, ou seja na hora de criar um vetor, palavras como “não” e “e” não fazem tanto impacto como palavras mais raras.

Exemplo de vetorização com TF-IDF

Aprendizagem de Máquina

Após concluir todas as etapas anteriores, é hora de pegar os dados processados e fazer a máquina descobrir alguns padrões para diferenciar texto depressivos de outros tipos de texto.

Pela pouca quantidade de dados foi preferível utilizar um algoritmo de Máquina de Suporte de Vetores, também conhecido como SVM, já que não tinha uma quantidade que justificasse a utilização de alguma rede neural.

Junto ao SVM foi utilizado um algoritmo de Grid Search com K-fold de 10, para que fosse possível encontrar o melhor modelo e ver se estava acontecendo alguma especie de enviesamento. Com esse melhor modelo foi possível atingir um total de 79% de acurácia, 82% de precisão, 77% de revocação e 79% de escore F1.

Resultados obitidos com SVM

Conclusão

O algoritmo aqui apresentado foi parte do meu trabalho de conclusão de curso em ciência da computação que era para detectar pessoas depressivas com tendências suicidas em redes sociais. Por mais que tenha atingido bons resultados com poucos dados não seria um algoritmo pronto para produção.

Acredita-se que com acompanhamento de pessoas especialista da área de psicologia possa ser conseguido colher mais dados de conversação de pessoas depressivas. Com esses dados, poderia ser desenvolvido um vocabulário que pode ser treinado no Word2Vec ou até mesmo no BERT, que são exemplos de vetorização que conseguem entender contexto.

Outra realização que poderia ser possível com uma quantidade maior de dados seria realizar um treinamento em algum tipo de rede neural para ver como seria o comportamento e talvez até mesmo melhorar o desempenho da SVM aqui proposta.


Referências

[1]:Bridianne O’Dea. (Maio 2015). Detecting suicidality on Twitter https://www.sciencedirect.com/science/article/pii/S2214782915000160

[2]:World Health Organization. (22 de Março de 2018). Depression https://www.sciencedirect.com/science/article/pii/S2214782915000160

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade