TCC: Criação de um Modelo de Classificação de Tweets Depressivos Utilizando Máquina de Vetores de Suporte.
- Victor Manoel Araújo
- 21 de set.
- 5 min de leitura
Discente: Vinícius Augusto Alves Zanchini
Orientador: Profa. Dra. Eliana Pantaleão
Título: Criação de um modelo de classificação de tweets depressivos utilizando máquina de vetores de suporte.
Este Trabalho de Conclusão de Curso propõe feito pelo Vinícius Augusto Alves Zanchini a criação de um modelo de classificação de tweets depressivos utilizando o método de reconhecimento de padrões SVM (Support Vector Machine), tendo como fonte de dados dois datasets de domínio público retirados à partir da rede social Twitter. A partir do modelo criado obteve-se classificações corretas de tweets não utilizados no treinamento como pertencentes à classe depressiva ou não-depressiva.
Introdução
Juntamente com o crescimento do acesso à Internet, é notável o crescimento do uso das redes sociais na última década. Dentre as centenas de redes sociais, o Twitter é uma plataforma consolidada e existem milhares de pessoas que o usam constantemente com a intenção de exteriorizar suas opiniões e sentimentos sobre algum tópico em forma de texto
Devido a essa enorme quantidade de publicações através da plataforma, o Twitter se tornou uma grande fonte de informação sobre diversas questões da vida diária da sociedade mundial e diversas análises e experimentos de aprendizado de máquina (machine learning) têm sido utilizados para colher informações e analisar tendências.
O corpo de texto desses tweets pode conter padrões em que pode se identificar a predisposição e/ou a presença do distúrbio de depressão. Neste contexto, técnicas de processamento de linguagem natural e aprendizado de máquina são utilizadas no conjunto de dados de treinamento, que são os próprios tweets , com a finalidade de criar um modelo preditivo que irá classificar um tweet nunca antes visto como contendo sintomas de depressão ou não.
Neste contexto para este trabalho criou-se um modelo de classificação de tweets depressivos, utilizando um classificador SVM (Support Vector Machine - Máquina de Vetores de Suporte), a partir de um conjunto de dados composto por tweets depressivos e não-depressivos, obtidos a partir de repositórios de domínio público.
Desenvolvimento
A metodologia utilizada neste trabalho foi dividida em duas partes: uma de pré-processamento e outra de treinamento. A Figura abaixo ilustra os procedimentos empregados.
Figura 1 – Fluxograma da metodologia utilizada para o desenvolvimento do modelo de classificação.

O dataset é composto por duas partes: o texto do tweet e um rótulo (Labels/Targets) que indica se o tweet é depressivo ou não-depressivo. O texto do tweet passa inicialmente pela etapa de pré-processamento. Nesta etapa, os tweets passam por filtros que eliminam caracteres indesejados como hashtags, websites, palavras vazias e até uma função de lematização. Em seguida, o resultado dessa etapa e mais os rótulos são usados na etapa de Treinamento onde os tweets são vetorizados e preparados para serem inseridos no modelo a ser treinado. Após o treinamento obtemos um modelo SVM capaz de classificar tweets em duas classes: depressivos ou não-depressivos.
O ambiente que foi utilizado para realizar todos os experimentos foi o Jupyter Notebook. Nele é possível organizar o código em blocos independentes onde é possível ter uma saída instantânea para cada bloco, conceito conhecido como livecode. Todos os códigos do trabalho são feitos na linguagem de programação Python, portanto, o kernel utilizado no Jupyter Notebook foi o do Python 3.6, porém, a plataforma tem suporte para linguagens como Julia e C++.
Implementação
Para se criar um classificador de tweets depressivos, deve-se fornecer exemplos do que seriam tweets depressivos e não-depressivos para a etapa de treinamento. Assim, após o treinamento supervisionado, o modelo estará pronto para distinguir dados das duas classes.
Os tweets depressivos obtidos em foram extraídos utilizando a StreamAPI do Twitter filtrando pelas palavras "anxiety", "depression" e "mental health". A partir disso, obteve-se 3574 tweets depressivos para treinamento.
Os tweets não-depressivos foram coletados de um dataset muito utilizado chamado Sentiment140. Esse dataset possui 1,6 milhões de tweets divididos em 3 classes: positivos, neutros e negativos. Para haver um balanceamento das classes no aprendizado supervisionado dos dados, precisamos da mesma quantidade de tweets não-depressivos. Os tweets não-depressivos foram extraídos do Sentiment140, reordenados de uma forma aleatória.
Treina-se os dados utilizando a função svm.SVC(), função que simula o SVM dentro da biblioteca Scikit-learn. Inicialmente, precisa-se separar parte dos dados para que possamos testar o modelo criado e validá-lo. Como um teste inicial, foram separados 30% dos dados para validação do modelo e os 70% restantes para treinamento.
O modelo SVM foi inicialmente criado com os valores default de 𝐶 = 1, e kernel linear. A biblioteca também possui suporte para os kernels pré-definidos como: RBF(Radial Basis Function - Função de Base Radial) e Polinomial, além de permitir a criação de um kernel próprio.
Para validar o modelo SVM criado, utiliza-se a função 𝑠𝑐𝑜𝑟𝑒() com os dados separados para teste. O método score irá avaliar se o modelo consegue identificar todos os rótulos de todos os tweets que estão em data_test.
O resultado para o score do classificador criado foi de 97%.
Resultados
O programa implementado foi executado sobre o conjunto de dados extraídos utilizando a StreamAPI e coletados do dataset Sentiment140, com eles criou-se um modelo de classificação SVM capaz de receber entradas de tweets e classificá-los como depressivos ou não-depressivos. A frase "I think I have depression. I’ll search for help." foi testada no modelo e resultou em -1, ou seja, indicando um tweet depressivo de forma correta. A frase "I am very happy today.", resultou em 1, indicando um tweet não-depressivo, também corretamente. Entretanto, ao avaliar o tweet "I want to die.", o resultado foi 1, indicando um tweet não-depressivo. Esse comportamento aconteceu porque essas palavras não estavam presentes nos exemplos usados no treinamento e, portanto, ficaram fora do modelo criado. Muitos dos tweets depressivos dos usuários podem conter um conteúdo considerado depressivo mas não explicitamente citar palavras como morte, portanto, é necessário uma quantidade maior de tweets depressivos para que se tenha um modelo capaz de generalizar grande parte dos possíveis tweets que venham a ser avaliados.
Conclusão
Conclui-se que o objetivo de criar um modelo de classificação de tweets depressivos utilizando SVM foi realizado com sucesso e obteve-se uma taxa de acerto de 99.7% com os dados de treinamento otimizados pelo método de Grade de Busca. Para as amostras utilizadas, os melhores parâmetros encontrados para o classificador foram o valor de penalidade 𝐶 = 1.5 e o kernel RBF, com 𝛾 = 0.01.
A presença de erros de classificação quando o modelo foi testado com dados não provenientes de tweets reais pode ser explicada pela ausência dos termos utilizados na base de treinamento e, como trabalhos futuros, podem ser realizadas melhorias com o intuito de aumentar essa taxa de acerto.
Por fim, sugere-se que o modelo seja usado em uma aplicação de análise de texto, seja do Twitter, outra rede social ou outro aplicativo, para a identificação de comportamento indicativo de depressão.





Comentários