当前位置: 首页 > 后端技术 > Python

如何基于Paddle训练98%准确率的抑郁症文本预测模型

时间:2023-03-26 00:32:54 Python

Paddle是一个比较先进的深度学习开发框架,内置了很多方便使用的计算单元。之前我们在PaddleHub上写过相关文章:1.Python识别文字情感就是这么简单2.比PS好用!Python20行代码批量切图3.Python20行代码检测人脸是否戴口罩在这几篇文章中,我们直接基于PaddleHub训练好的模型进行预测,使用起来非常方便。但是,我并没有提到如何使用自己的数据进行训练,所以这篇文章将弥补前几篇文章内容的不足,讲解如何使用paddle来训练、测试和推断自己的数据。1.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,请访问这篇文章:超详细的Python安装指南进行安装。Windows环境打开Cmd(开始-运行-CMD),苹果系统环境打开Terminal(command+空格进入Terminal),准备开始输入命令安装依赖。当然,我推荐大家使用VSCode编辑器,复制本文代码,在编辑器下方的终端中安装依赖模块。多么惬意的一件事:Python编程的最佳搭档——VSCode详解指南。我们需要安装百度的paddlepaddle,在他们的官网有详细的说明:https://www.paddlepaddle.org.cn/install/quick根据自己的情况选择这些选项,最后的CUDA版本,由于本次实验不需要训练数据,也不需要过多的计算,直接选择CPU版本即可。选择完成后,下方会出现安装指南。不得不说,Paddlepaddle在这些方面还是挺用心的(只是名字不好听)。注意,如果你的Python3环境变量中的程序名是Python,记得把语句改成Pythonxxx,安装如下:python-mpipinstallpaddlepaddle-ihttps://mirror.baidu.com/pypi/simple最后安装paddlehub:pipinstall-ihttps://mirror.baidu.com/pypi/simplepaddlehub然后为了用paddle模型训练我们自己的数据,我们还需要下载他们的源码:gitclonehttps://github。com/PaddlePaddle/models.git比较大,大约400M。2.数据预处理在本次实验中,我使用了走粉下的8000条评论和其他微博的8000条正常评论作为训练集,两个类别的1000条数据作为测试集。2.1重复和脏在这一步,我们需要先去除重复数据,使用正则表达式@。和^@.\n去除微博@的脏数据。如果你使用的是Vscode,你可以使用sortlines插件来去除重复数据:如果不是Vscode,请用Python编写脚本遍历文件,将每一行放入一个集合中去重。比较简单,这里就不细说了。正则表达式去除脏数据。我这里有少量数据。直接编辑器解决:2.2分词首先,我们需要对我们的文本数据进行分词。这里我们使用口吃分词的形式:那么我们需要在分词结果之后用\t来分隔和添加标签,我这里是把有抑郁倾向的句子标记为0,正常的句子标记为1。另外,所有的单词都需要保存起来形成一个字典文件,每个单词一行。并将训练集和测试集分别保存为train.tsv和dev.tsv,词典文件命名为word_dict.txt,方便后续训练。3.训练下载Paddle模型源码后,进入models/PaddleNLP/sentiment_classification文件夹,这里是情感文本分类的源码部分。在开始训练之前,您需要做以下工作:1.将train.tsv、dev.tsv和word_dict.txt放入senta_data文件夹中。2.设置senta_config.json的模型类型。我在这里使用gru_net:3。修改run.sh相关设置:如果你的paddle是CPU版本,请将use_cuda改为false。另外还有一个save_steps可以修改,代表每次训练保存多少次模型,也可以修改trainingalgebraepoch,以及一次训练的样本数batch_size。4.如果你是windows系统,新建一个save_models文件夹,然后在里面新建一个文件夹,里面有你每次训练保存的次数。.没错,这可能是因为他们基于linux开发了这个框架。他们写的save语句在linux下会自动生成一个文件夹,在windows下不会。好了,现在可以开始训练了。由于训练启动脚本是一个shell脚本,所以我们需要使用powershell或者gitbash来运行命令。您可以在Vscode中选择默认终端。单击“选择默认Shell”并选择cmd以外的终端。输入以下语句开始训练$shrun.shtrain4。测试恭喜你,你已经走到这一步了。作为奖励,您只需要在这一步中进行两次操作。首先是将run.sh中的MODEL_PATH改成刚才保存的模型文件夹:我这里上次训练保存的文件夹是step_1200,所以step_1200根据自己的情况填写。然后一个命令就够了:$shrun.sheval然后会输出损失率和准确率:可以看到我的模型准确率在98%左右,还是比较不错的。5.预测我们随机取10个抑郁演讲和普通演讲,命名为test.txt保存在senta_data文件夹中,输入以下命令进行预测:$shrun.shtest这二十句话如下,前十个是抑郁症评论,后十个是普通评论:我好崩溃,每天都在受折磨。生不如死是真的吗?姐姐,我可以去找你吗?心里郁闷极了……今晚大家都是因为有什么事没有睡。既然我儿子这么好,你就别生我了。啊,生了我又丢下我自生自灭。它是什么?小姐,我该怎么办,我该怎么办,每天心如刀绞,每天都有想死的念头,不想这么痛苦,你怎么办,你为什么这么轻易说出这样的话?闭上眼睛,脑海里浮现的是他的脸,他的种种点点滴滴。难受得睡不着。太不舒服了。为什么我吃了那么多还是不开心?我以前看过。那些有手有脚的人都在乞讨,我看不起他们。我觉得他们不应该用手脚去乞讨。他们可以用自己的双手赚钱。可现在有了手脚,我也想去人多的地方乞讨……不想再辛苦了……算了吧,你说的是我们合肥吗?这首歌可以用来用更坏的消息来掩盖这个坏消息。请尊重他人的隐私。这种行为必须严惩。这个必须转发??坚持到最后,努力工作。我在家里的钱比在学校的多。我在家吃饭,零食、水果和牛奶。妈妈每天给我买各种各样的水果。还能挤着弟弟跑腿。买衣服也是水和牛奶,除了化妆品。反正我现在不需要。在广西的生活比在学校要好得多。广西最美的是柳州紫荆花城。让我们一起度过这个难关。我们可以安全,上帝保佑我们。结果如下:最终测试结果:00.9999990.00000100.9940130.00598700.9976360.00236400.9999750.00002501.0000000.00000001.0000000.00000000.9997570.00024300.9997060.00029400.9999950.00000500.9984720.00152810.0000510.99994910.0002300.99977010.2302270.76977310.0000001.00000010.0008090.99919110.0000010.99999910.0092130.99078710.0000030.99999710.0003630.99963710.0000001.000000第一列是预测结果(0代表抑郁文本),第二列是预测抑郁的可能性,第三列是预测正常微博的可能性。可以看出基本的预测是正确的,并且根据这个分值,我们也可以将文中的抑郁程度分为:轻度、中度、重度。如果是严重的抑郁症,就应该进行干预,因为很可能会发展成自杀倾向。基于这个模型,我们可以构建一个自杀预测和监测系统。一旦我们发现严重抑郁症的文字迹象,我们就可以进行干预。但是,这不是我们可以一次完成的事情。我们需要随着时间的推移慢慢改进这种识别算法。并与相关机构合作介入。这是我们文章的结尾。想要我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。有什么问题可以在下方评论留言,我们会耐心解答!Python实战宝典不只是合集欢迎关注公众号:Python实战宝典原文来自Python实战宝典:如何基于Paddle训练准确率98%的抑郁症文本预测模型