Scripts e utilitários para modelagem e identificação de tópicos relativos a depressão no Reddit, em língua portuguesa e inglesa, usando técnicas de modelagem de tópicos. Os modelos de tópicos Latent Dirichlet Allocation (LDA), Contextualized Topic Model (CTM) e Embedded Topic Model (ETM) foram explorados neste estudo.
Use uma aplicação CLI compatível com shell script para executar os scripts de automatização de tarefas. A execução dos mesmos só foi realizada em ambiente Unix.
- python >= 3.7.6 - versão recomendada do python. A versão
3.7.6
da linguagem foi usada no projeto; - pip >= 20.x.x - a versão
20.2.4
foi usada no projeto. - virtualenvwrapper
Instale as dependências do projeto usando pip install -r requirements.txt
.
Alguns diretórios nesse projeto representam funcionalidades usadas para realização da modelagem de tópicos. Essas pastas são descritas a seguir, e estão listadas de acordo com sua ordem recomendada de uso pra treinamento:
-
preprocessing - possui o script para pré-processamento dos corpora explorados neste estudo, descrito por
preprocess.py
. Esse script pode receber como entrada um corpus JSON contendo diversos documentos, onde cada um deles é representado por seu texto armazenado em seu campo"body"
. O script realiza tokenização e possibilita que etapas como lematização, remoção de stopwords e de categorias de part-of-speech (POS) indesejadas sejam removidas, tanto em português quanto em inglês. -
vocabulary - possui o script
vocab_evaluation.py
, usado para auxiliar a etapa de filtragem dos termos muito/pouco frequentes em um corpus. Após o pré-processamento do corpus realizado na etapa anterior, ainda podem restar no conjunto textual palavras que ocorrem com frequência alta ou baixa, e que não são interessantes para a modelagem. Esse script possibilita a geração de um histograma de faixas de frequência de palavras, que podem ser filtradas caso assim desejado pelo usuário. -
preparation - possui o script para preparação de recursos para treinamento dos modelos de tópicos, descrito por
prepare_training_resources.py
. Esse script prepara as entradas adequadas e recursos compartilhados para cada um dos três tipos de arquitetura de modelagem de tópicos aqui estudados: LDA, CTM e ETM. Note que o uso de embeddings de palavras SBERT e word2vec é necessário nesta etapa. O corpus pré-processado e o vocabulário/dicionário construídos na etapa anterior devem ser usados neste passo. O script produzirá dois conjuntos textuais, sendo o primeiro destinado ao treinamento dos modelos e o segundo destinado à sua validação. -
training - possui os scripts para treinamento dos modelos de tópicos:
lda.py
,ctm.py
eetm.py
. A partir do corpus pré-processado e das entradas preparadas, cada treinamento é realizado. A métrica de coerência NPMI é calculada com base no conjunto textual de validação criado na etapa anterior.
Os datasets foram construídos por meio da API Pushshift, agregando postagens em português e em inglês relacionadas à discussões de depressão. Termos de busca tiveram de ser usados para coleta dos dados em português, dada a não existência de um subreddit voltado ao tema no idioma. A tabela a seguir detalha os datasets construídos. Ambos corpora estão disponíveis para uso na plataforma Kaggle, em formato JSON.
idioma | subreddits usados | palavras-chave usadas | período de coleta | total de submissões coletadas | link |
---|---|---|---|---|---|
português | brasil, desabafos | "depressão", "suicídio", "diagnóstico depressão", "tratamento depressão" | 2008-2021 | 3404 | 1 |
inglês | depression | - | 2009-2021 | 32165 | 2 |