Chatbot para saúde mental
Atualizações (2024)
- Problemas fixos relacionados a scripts Python não funcionando devido a versões e métodos desatualizados da biblioteca
- Requisitos adicionados.txt para facilitar a instalação de dependências
Antes de executar os scripts, verifique se você possui uma versão python <= 3.8 instalada (de preferência Python 3.8; necessária para instalar algumas bibliotecas como o TensorFlow).
Este projeto foi realizado para um projeto de pesquisa sob um professor da minha universidade com um conjunto de dados auto-embrulhado. O conjunto de dados que usamos é confidencial; Por isso, usei um amostra de conjunto de dados Kaggle. Decidi fazer os scripts abertos para fazer uma compilação de diferentes chatbots do zero em Python desde que lutei com esses recursos durante minha pesquisa.
Motivação por trás deste projeto
Em 2017, a Pesquisa Nacional de Saúde Mental informou que uma em cada sete pessoas na Índia sofria de transtornos mentais, incluindo depressão e ansiedade. A crescente conscientização da saúde mental tornou a preocupação primária do desenvolvimento. Quase 150 milhões de pessoas na Índia precisavam de intervenções, onde a classe baixa e média enfrentava mais fardo do que as pessoas abastadas. Este projeto é uma tentativa de tornar a saúde mental mais acessível. Esse agente de conversação pode ser complementado com os médicos para torná -lo mais eficaz e frutífero.
Classificações de chatbots
Os chatbots podem ser classificados com base em diferentes atributos -

Minha pesquisa estava relacionada às abordagens de design, a saber, baseadas em regras, baseadas em recuperação e baseadas em generativas.
- Chatbots baseados em regras: um chatbot baseado em regras usa um simples mapeamento baseado em regras ou correspondência de padrões para selecionar respostas dos conjuntos de respostas predefinidas. Esses sistemas não produzem nenhum novo texto; Em vez disso, eles escolhem uma resposta de uma lista predeterminada.
- Chatbots baseados em recuperação: um chatbot baseado em recuperação usa conjuntos de aprendizado de máquina como heurística para avaliação. Semelhante aos chatbots baseados em regras, eles não geram novos textos.
- Chatbots baseados em generativos: os modelos generativos não dependem de respostas predefinidas. Eles apresentam novas respostas do zero. As técnicas de tradução da máquina são normalmente usadas em modelos generativos, mas, em vez de traduzir de um idioma para outro, "traduzimos" da entrada para a saída (resposta). Modelos generativos são usados para a criação porque aprendem do zero.
Visão geral dos bots treinados
O conjunto de dados foi escolhido em Kaggle - Perguntas frequentes sobre saúde mental. Esse conjunto de dados consiste em 98 perguntas frequentes sobre saúde mental. Consiste em 3 colunas - questionídeos, perguntas e respostas.
Observe que, para treinar o chatbot de recuperação, o arquivo CSV foi convertido manualmente em um arquivo JSON . Como esse não é o conjunto de dados original usado para a pesquisa (leia a introdução), usei apenas as primeiras 20 linhas para treinar o modelo.
O repositório consiste em três cadernos para os três tipos de chatbots.
Para baseado em regras, o TF-IDF foi usado com o Tokenizer da NLTK para preprocissão de dados. Os dados processados foram testados contra o resultado esperado e a similaridade de cosseno foi usada para avaliação.
Para a recuperação, vários modelos de aprendizado de máquina e aprendizado profundo foram treinados,
- Vanilla rnn
- LSTM
- Bi - lstm
- Gru
- Os modelos de recuperação da CNN são treinados nos arquivos JSON. Para todos os modelos acima, a regularização foi usada e, com base em precisão e perda de treinamento e validação, o melhor modelo foi mantido para comparações finais. Observou -se que a arquitetura da CNN deu os melhores resultados . O modelo consistia em 3 camadas - rede neural convolucional (CNN) + uma camada de incorporação + e uma camada totalmente conectada.
Para chatbots baseados em generativos, o PNL foi usado, pois o PNL permite que os chatbots aprendam e imitem os padrões e estilos de conversas humanas . Dá a você a sensação de que você está falando com um humano, não um robô. Ele mapeia a entrada do usuário para uma intenção, com o objetivo de classificar a mensagem para uma resposta possível predefinida apropriada.
- Um modelo de codificador-decodificador foi treinado no arquivo CSV. O Endoder-Decoder é um modelo SEQ2SEQ, também chamado de modelo de codificador-decodificador, usa memória de curto prazo de longo prazo para geração de texto a partir do corpus de treinamento.
- O que o modelo SEQ2SEQ ou Coder-Decoder faz em palavras simples? Ele prevê uma palavra dada na entrada do usuário e, em seguida, cada uma das próximas palavras é prevista usando a probabilidade de probabilidade dessa palavra ocorrer.
JSON vs. CSV
Durante esse projeto, a maior confusão que tive foi por que o chatbot usou um arquivo JSON em vez do CSV para o modelo baseado em recuperação. Eu listei alguns pontos que fazem a comparação entre os dois tipos de arquivo -
- A JSON armazena dados de maneira hierárquica, que é melhor para um chatbot baseado em recuperação, já que o chatbot exigiria tags e contextos.
- Um chatbot baseado em recuperação é treinado para dar a melhor resposta com base em um pool de respostas predefinidas. Essas respostas predefinidas são finitas em número. Uma tag precisa ser fornecida para o mapeamento de entrada para saída. Para simplificar, a entrada dada pelo usuário (o contexto) é identificada pela tag fornecida. Com base na melhor tag prevista, o usuário é mostrado uma das respostas predefinidas . Portanto, armazenar esse tipo de dados em um arquivo JSON é mais fácil devido à sua compactação e estrutura hierárquica.
- Um arquivo CSV foi usado para armazenar os dados do chatbot generativo. Um chatbot generativo não requer tags para fazer previsões . Esses dados são mais fáceis de armazenar em um arquivo CSV, pois precisamos de apenas duas colunas - texto de entrada e texto de saída. Adicionar ou excluir dados seria mais fácil neste caso em comparação com um arquivo JSON.
Objetivos futuros
Quero pesquisar ainda mais as possibilidades do chatbot generativo. O modelo atual do codificador decodificador não pode capturar todas as dependências na camada decodificadora devido à natureza compacta do LSTM. As camadas de atenção podem ser adicionadas após as camadas LSTM para decodificar cada saída dinamicamente.