聊天机器人的心理健康
更新(2024)
- 固定问题与Python脚本有关,由于过时的库版本和方法无法使用
- 添加的要求.txt以容易安装依赖项
在运行脚本之前,请确保安装了Python版本<= 3.8(最好是Python 3.8;安装某些库(例如TensorFlow)所需的必需)。
该项目是为我的大学教授带有自绑数据集的研究项目完成的。我们使用的数据集是机密的;因此,我使用了示例Kaggle数据集。我决定将脚本开源,以制作Python中从头开始的不同聊天机器人的汇编,因为我在研究过程中为这种资源而苦苦挣扎。
这个项目背后的动机
2017年,《国家心理健康调查》报告说,印度七分之一的人患有精神障碍,包括抑郁症和焦虑。人们对心理健康的认识越来越大,这使其成为发展的主要关注点。印度近1.5亿人需要干预措施,那里的低矮和中产阶级面临的负担比富裕的人更负担。该项目试图使心理健康更容易获得。这种对话剂可以与临床医生相辅相成,使其更有效和富有成果。
聊天机器人的分类
聊天机器人可以根据不同属性进行分类 -

我的研究与设计方法有关,即基于规则,基于检索和基于生成的方法。
- 基于规则的聊天机器人:基于规则的聊天机器人使用简单的基于规则的映射或模式匹配来从一组预定义的响应中选择响应。这些系统不会产生任何新文本。相反,他们从预定的列表中选择答案。
- 基于检索的聊天机器人:基于检索的聊天机器人使用机器学习集合作为启发式方法进行评估。与基于规则的聊天机器人类似,它们不会生成新文本。
- 基于生成的聊天机器人:生成模型不依赖于预定义的响应。他们提出了从头开始的新答复。机器翻译技术通常用于生成模型中,但是我们不是从一种语言转换为另一种语言,而是从输入转换为输出(响应)。生成模型用于创建,因为它们从头开始学习。
机器人训练的概述
该数据集是从Kaggle拾取的 - 心理健康常见问题解答。该数据集由98个关于心理健康的常见问题解答。它由3列组成 - 问题,问题和答案。
请注意,要训练检索聊天机器人,将CSV文件手动转换为JSON文件。由于这不是用于研究的原始数据集(阅读介绍),因此我仅使用了前20行来训练模型。
存储库由三种类型的聊天机器人组成的三个笔记本。
对于基于规则的,将TF-IDF与NLTK的令牌使用,以进行数据进行处理。针对预期结果测试了处理后的数据,并使用余弦相似性进行评估。
对于基于检索的,几种机器学习和深度学习模型进行了培训,
- 香草RNN
- LSTM
- BI -LSTM
- gru
- CNN检索模型对JSON文件进行了培训。对于所有上述模型,都使用正规化,并基于培训和验证精度和损失,保留了最佳模型以进行最终比较。据观察, CNN体系结构给出了最好的结果。该模型由3层 - 卷积神经网络(CNN) +嵌入层 +和完全连接的层组成。
对于基于生成的聊天机器人,使用NLP,因为NLP使聊天机器人可以学习和模仿人类对话的模式和样式。它使您感到自己正在与人交谈,而不是机器人。它将用户输入映射到意图,目的是将消息分类为适当的预定义响应。
- 在CSV文件上训练了编码器模型。 endoder-decoder是一个SEQ2SEQ模型,也称为编码器模型使用长期内存-LSTM用于训练语料库的文本生成。
- SEQ2SEQ或编码器模型用简单的单词做什么?它预测了用户输入中给出的单词,然后使用该单词可能发生的可能性进行预测的每个单词。
JSON vs. CSV
在这个项目中,我遇到的最大混乱是为什么聊天机器人使用JSON文件而不是CSV进行基于检索的模型。我已经列出了一些点,以使两种文件类型之间的比较 -
- JSON以层次结构的方式存储数据,这对于基于检索的聊天机器人来说更好,鉴于聊天机器人需要标签和上下文。
- 基于检索的聊天机器人经过培训,可以根据预定义的答案提供最佳答案。这些预定义的响应的数量是有限的。需要为输入到输出映射提供标签。简而言之,用户给出的输入(上下文)由提供的标签标识。根据预测的最佳标签,向用户显示了预定义的响应之一。因此,由于其紧凑性和分层结构,将这种数据存储在JSON文件中更容易。
- CSV文件已用于存储生成聊天机器人的数据。生成的聊天机器人不需要标签来做出预测。这些数据更容易存储在CSV文件中,因为我们只需要两列 - 输入文本和输出文本。与JSON文件相比,在这种情况下,添加或删除数据将更容易。
未来目标
我想进一步研究基于生成的聊天机器人的可能性。由于LSTM的紧凑性,当前的编码器模型无法捕获解码器层中的所有依赖项。可以在LSTM层之后添加注意图层以动态解码每个输出。