Neste artigo, Jamil et al. (2017) tiveram o propósito de criar um sistema automatizado para identificar usuários em risco de depressão monitorando suas atividades no Twitter. Para atingir o objetivo, dois classificadores foram desenvolvidos, um em nível de usuário e outro em
48
nível de tweet. O classificador em nível de usuário monitora o histórico de tweets e determina se o usuário está em risco, devido às mensagens postadas em um período de tempo. Já o classificador em nível de tweet foi treinado para monitorar os tweets individualmente e prever se a mensagem indica depressão ou não.
Os dados coletados foram de usuários que participaram da cam- panha Bell Lets Talk 2015 através da hashtag #BellLetsTalks. Essa campanha foi criada pela Bell Canada e visa reduzir o estigma e o silêncio em torno de doenças mentais e apoiar a saúde mental no Ca- nadá. Após realizar a limpeza e o balanceamento, o dataset em nível de usuário ficou com 80 usuários que se autodeclararam depressivos e 80 usuários de controle. Para criar o dataset em nível de tweet, foram selecionados 60 usuários que tinham de 100 a 300 tweets, 30 do grupo que se auto declarava depressivo e 30 do grupo de controle e esses twe- ets foram classificados em 0 ou 1, onde 0 indica que não é depressivo e 1 indica que é depressivo. Ao final, o dataset ficou com 8753 twe- ets. Um terceiro dataset foi obtido do CLPsych Shared Task 2015 que consiste em 327 usuários com depressão e 246 usuários com estresse pós-traumático.
Para realizar o treino e o teste dos modelos, cada dataset foi dividido e 70% dos dados foram usados para treino e 30% para teste. Cada modelo foi treinado usando a validação cruzada 10 vezes e depois testado. Para avaliação, foram medidos o recall, a precisão e o f1- measure.
No modelo em nível de tweet, foi utilizado Bag-of-Words (BOW) como features e o classificador SVM linear. Para atingir o objetivo de prever se a mensagem é depressiva, foram realizados 2 experimentos. O primeiro utiliza 7 features derivadas do texto do tweet que inclui a polaridade das palavras, palavras depressivas e a contagem de pronomes na primeira e segunda pessoa. O segundo experimento utiliza BOW em adição às 7 features.
Para detectar usuários de alto risco no modelo em nível de usuá- rio também foi utilizado o classificador SVM linear. Primeiramente foi utilizado o melhor modelo em nível de tweet para computar a percenta- gem de tweets depressivos para cada usuário. Depois o texto de todos os tweets de cada usuário é mesclado e as features iniciais desses tweets são somadas. Depois de vários experimentos e eles identificaram o mo- delo, conjunto de features e a amostragem com a melhor performance possível.
No nível de tweet, nenhum classificador performou bem na ta- refa de identificar tweets depressivos. A melhor performance obtida foi
pelo classificador SVM Linear treinado em um conjunto de treinamento com pouca amostragem, utilizando as 7 features iniciais sem BOW e a precisão obtida foi de 0,1237, recall de 0,8020 e f1 de 0,2144. Essa performance indica a complexidade da tarefa e o fato de que um tweet não é o suficiente para detectar depressão.
O modelo com a melhor performance no nível de usuário foi um classificador SVM Linear treinado em um dataset balanceado (CLPsych 2015) usando 9 features. A precisão obtida foi de 0,7080, o recall foi de 0,85 e o f1 foi de 0,7727
5.4 CONSIDERAÇÕES
A Tabela 1 faz uma comparação entre os três trabalhos apresen- tados em relação aos classificadores que foram usados e se utilizam um dataset externo ou não.
Tabela 2 – Comparação dos classificadores e datasets dos trabalhos relacionados.
Trabalho Classificador Uso de um dataset existente Amostra
1 MDL não > 300 milhões
2 SVM não 476
3 SVM sim 160 / 327
Já a Tabela 2 compara os três trabalhos em relação às métricas apresentadas por eles.
Tabela 3 – Comparação das métricas dos trabalhos relacionados. Trabalho Precisão Acurácia Recall F1-Measure
1 85% 85% 85% 85%
2 74% 70% 63% -
3 71% - 85% 77%
Assim, este projeto pretende verificar se é possível superar ou, pelo menos, equiparar estas métricas dos classificadores usados pelos trabalhos relacionados. Além disso, o presente trabalho propõe a tenta- tiva de utilizar dados das redes sociais de brasileiros, ou seja, da língua portuguesa, diferenciando-se dos trabalho relacionados que aplicaram
50
6 DESENVOLVIMENTO
O objetivo deste trabalho é, conforme descrito no Capítulo 2, através de um modelo estatístico, identificar usuários com indícios de depressão, analisando seus dados públicos do Twitter. Para esse obje- tivo ser cumprido, o desenvolvimento do modelo proposto neste traba- lho foi realizado em 7 etapas. São elas: Coleta de dados, limpeza dos dados, transformação dos dados, análise exploratória, implementação do modelo e avaliação dos resultados. Pode-se observar o fluxo dessas etapas da Figura 7.
Na primeira fase, os dados foram extraídos do Twitter e coloca- dos em duas tabelas. Na etapa de limpeza de dados, foram retirados os dados com informações faltantes e os duplicados, para que não atrapa- lhassem a análise. Seguindo o fluxo, na parte de transformação, alguns dados foram agrupados e foram criados novos atributos. Já na fase de análise exploratória, foram criados alguns gráficos para visualizar me- lhor os dados e realizar uma análise inicial das informações. Depois, na implementação do modelo, alguns tipos de modelo foram testados e avaliados na etapa de avaliação dos resultados.
Figura 7 – Etapas do desenvolvimento do modelo de classificação
6.1 FERRAMENTAS
A linguagem escolhida para o desenvolvimento foi Python, que é uma linguagem de programação interpretada, de alto nível e que pode ser usado para diversos propósitos. (KUHLMAN, 2011) Python foi escolhida porque, além de ser open source, é fácil de utilizar e possui
52
diversas bibliotecas relacionadas com ciência de dados, facilitando ainda mais o desenvolvimento. (GRUS, 2015)
As bibliotecas Python mais utilizadas no desenvolvimento foram Pandas e Scikit-learn. Pandas é a biblioteca mais popular usada para ciência de dados. Ela fornece estruturas de dados para trabalhar no Python, que permitem importar, explorar, agrupar e manipular esses dados de forma simples. Já a biblioteca Scikit-learn é a principal biblio- teca para implementar aprendizagem de máquina em Python, contendo vários modelos de aprendizagem que estão descritos na sua documen- tação.
6.2 COLETA DE DADOS
Nessa primeira etapa os dados extraídos para treinar e testar o modelo foram retirados do Twitter através da API disponibilizada pela rede social. Para iniciar o processo de coleta, o Twitter solicita o preenchimento de um formulário e depois de alguns dias, pode consentir ou não o uso de sua API.
Para acessar a API, é necessário registrar um aplicativo, descre- vendo sua finalidade e aceitando os termos impostos pelo Twitter. Além disso, o aplicativo, por padrão, só pode acessar informações públicas. Por isso, neste trabalho, foram extraídos somente os dados públicos disponíveis através da API.
Antes de fazer a extração, foi realizada uma busca de usuários da rede social que twittaram que já haviam sido diagnosticados com de- pressão por um especialista. 86 usuários brasileiros foram selecionados e foram extraídos até 3200 tweets desses usuários, quantidade máxima permitida pela API do Twitter. Já para a amostra de usuários cate- gorizados sem depressão, foram extraídos tweets de perfis escolhidos aleatoriamente.
No final, foram geradas duas tabelas a partir dos dados extraídos. A primeira, apresentada na Tabela 4, são os usuários classificados com diagnóstico de depressão ou sem diagnóstico de depressão, contendo o atributo a classificação do diagnóstico, a data e horário de criação do perfil, o id do usuário, sua localização, o número de seguidores, o número de amigos e o número total de tweets. Na Tabela 5 está uma amostra da segunda tabela, que contém os tweets desses usuários, com as respectivas data e horário de postagem do tweet, o número de favoritos, número de retweets, o texto do tweet, o id do usuário que escreveu aquele tweet e a mesma classificação da tabela anterior.
Tabela 4 – Amostra da tabela de usuários
Tabela 5 – Amostra da tabela de tweets
6.3 LIMPEZA DE DADOS
Depois de extrair os dados do Twitter, foi necessário limpá-los de forma que os ruídos não atrapalhassem a análise. Para isso, primei- ramente foram identificadas quais inconsistências cada coluna poderia ter, tais como duplicação, valores diferentes do padrão ou algum outro tipo de ruído.
Os primeiros ruídos retirados foram os sinais de retweet (RT) e de mention (@). Dos 194087 tweets extraídos, 65454 possuia um @ e 57825 tweets eram retweets. Depois, foram removidos todos os links, que estavam em um total de 60246 tweets. Para deixar padronizado, os textos foram todos passados para letra minúscula, pontuações foram removidas e caracteres especiais também.
Para remover as stopwords, foi usada a função da biblioteca nltk que possui uma lista de stopwords em português. Com o objetivo de adicionar mais palavras que estavam faltando na lista, foi contada a frequência de cada palavra nos tweets extraídos e as palavras mais frequentes foram revisadas e acrescentadas nas stopwords. Com isso, foram contabilizados 163503 tweets que possuíam alguma palavra da
54
lista.
Depois de fazer essas remoções nos textos, os tweets que ficaram sem nada foram retirados e os que possuíam texto ou usuário nulo por algum motivo também. Sobrando assim, 183226 tweets.