如何基于Paddle训练一个98%准确率的抑郁文本预测模型
Paddle是一个比较高级的深度学习开发框架,其内置了许多方便的计算单元可供使用,我们之前写过PaddleHub相关的文章:
1.Python 识别文本情感就这么简单
2.比PS还好用!Python 20行代码批量抠图
3.Python 20行代码检测人脸是否佩戴口罩
在这些文章里面,我们基于PaddleHub训练好的模型直接进行预测,用起来特别方便。不过,我并没提到如何用自己的数据进行训练,因此本文将弥补前几篇文章缺少的内容,讲解如何使用paddle训练、测试、推断自己的数据。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
我们需要安装百度的paddlepaddle, 进入他们的官方网站就有详细的指引:
https://www.paddlepaddle.org.cn/install/quick
根据你自己的情况选择这些选项,最后一个CUDA版本,由于本实验不需要训练数据,也不需要太大的计算量,所以直接选择CPU版本即可。选择完毕,下方会出现安装指引,不得不说,Paddlepaddle这些方面做的还是比较贴心的(就是名字起的不好)。
要注意,如果你的Python3环境变量里的程序名称是Python,记得将语句改为Python xxx,如下进行安装:
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
最后是安装paddlehub:
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
然后为了用paddle的模型训练我们自己的数据,还需要下载他们的源代码:
git clone https://github.com/PaddlePaddle/models.git
比较大,大概400M。
2. 数据预处理
这次实验,我使用了8000条走饭下面的评论和8000条其他微博的正常评论作为训练集,两个分类分别使用1000条数据作为测试集。
2.1 去重去脏
在这一步,我们需要先去除重复数据,并使用正则表达式@.* 和 ^@.*\n 去除微博**@**的脏数据。如果你是使用Vscode的,可以使用sort lines插件去除重复数据:
如果不是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要修改,代表每训练多少次保存一次模型,还可以修改一下训练代数epoch,和 一次训练的样本数目 batch_size.
4.如果你是windows系统,还要新建一个save_models文件夹,然后在里面分别以你的每训练多少次保存一次的数字再新建文件夹。。没错,这可能是因为他们开发这个框架的时候是基于linux的,他们写的保存语句在linux下会自动生成文件夹,但是windows里不会。
好了现在可以开始训练了,由于训练启动脚本是shell脚本,因此我们要用powershell或git bash运行指令,Vscode中可以选择默认的终端,点击Select Default Shell后选择一个除cmd外的终端即可。
输入以下语句开始训练
$ sh run.sh train
4.测试
恭喜你走到了这一步,作为奖励,这一步你只需要做两个操作。首先是将run.sh里的MODEL_PATH修改为你刚保存的模型文件夹:
我这里最后一次训练保存的文件夹是step_1200,因此填入step_1200,要依据自己的情况填入。然后一句命令就够了:
$ sh run.sh eval
然后就会输出损失率和准确率:
可以看到我的模型准确率大概有98%,还是挺不错的。
5.预测
我们随意各取10条抑郁言论和普通言论,命名为test.txt存入senta_data文件夹中,输入以下命令进行预测:
$ sh run.sh test
这二十条句子如下,前十条是抑郁言论,后十条是普通言论:
好 崩溃 每天 都 是 折磨 真的 生不如死
姐姐 我 可以 去 找 你 吗
内心 阴暗 至极 … …
大家 今晚 都 是因为 什么 没睡
既然 儿子 那么 好 那 就 别生 下 我 啊 生下 我 又 把 我 扔下 让 我 自生自灭 这算 什么
走饭 小姐姐 怎么办 我该 怎么办 每天 都 心酸 心如刀绞 每天 都 有 想要 死 掉 的 念头 我 不想 那么 痛苦 了
你 凭 什么 那么 轻松 就 说出 这种 话
一 闭上眼睛 脑子里 浮现 的 就是 他 的 脸 和 他 的 各种 点点滴滴 好 难受 睡不着 啊 好 难受 为什么 吃 了 这么 多 东西 还是 不 快乐 呢
以前 我 看到 那些 有手 有 脚 的 人 在 乞讨 我 都 看不起 他们 我 觉得 他们 有手 有 脚 的 不 应该 乞讨 他们 完全 可以 凭 自己 的 双手 挣钱 但是 现在 我 有 手 有 脚 我 也 想 去 人 多 的 地方 乞讨 … 我 不想 努力 了 …
熬过来 吧 求求 你 了 好 吗
是 在 说 我们 合肥 吗 ?
这歌 可以 啊
用 一个 更坏 的 消息 掩盖 这 一个 坏消息
请 尊重 他人 隐私 这种 行为 必须 严惩不贷
这个 要 转发
如何基于Paddle训练一个98%准确率的抑郁文本预测模型相关推荐
- Python 教你训练一个98%准确率的微博抑郁文本分类模型(含数据)
Paddle是一个比较高级的深度学习开发框架,其内置了许多方便的计算单元可供使用,我们之前写过PaddleHub相关的文章: 1.Python 识别文本情感就这么简单 2.比PS还好用!Python ...
- 基于协同训练的半监督文本分类算法
标签: 半监督学习,文本分类 作者:炼己者 --- 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! 如果大家觉得格式看着不舒服,也欢迎大家去看我的 ...
- 实战|手把手教你训练一个基于Keras的多标签图像分类器
图片来自 pexels,作者:Jean-Christophe André 2019 年第 63 篇文章,总第 87 篇文章 原文链接:https://www.pyimagesearch.com/201 ...
- 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种
基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种 ,含数据集可直接运行 完整代码下载地址:基于LSTM三分类的文本情感分 ...
- 如何训练一个简单的语音识别网络模型---基于TensorFlow
这篇文章是翻译自Google的教程:还有一部分没完成,但今天上去发现登录不了,只好先发这部分上来. 欢迎有兴趣学习的朋友,与我交流.微信:18221205301 如何训练一个简单的语音识别网络模型 准 ...
- 基于预训练词向量的文本相似度计算-word2vec, paddle
文章目录 0. 前言 1. 余弦相似度算子 2. 示例代码并验证 3. 基于词向量的文本相似度 3.1 读取word2vec文件 3.2 定义模型 3.3 运行模型 3.4 根据分数降序排列 3.5 ...
- 【NLP】bert4vec:一个基于预训练的句向量生成工具
一个基于预训练的句向量生成工具 bert4vec: https://github.com/zejunwang1/bert4vec 环境 transformers>=4.6.0,<5.0 ...
- 【Pytorch实战4】基于CIFAR10数据集训练一个分类器
参考资料: <深度学习之pytorch实战计算机视觉> Pytorch官方教程 Pytorch中文文档 先是数据的导入与预览. import torch import torchvisio ...
- NLP:训练一个中文问答模型Ⅱ
训练一个中文问答模型Ⅱ-Step by Step 接上一篇 中文问答模型Ⅰ基于这次仍是基于NMT架构训练,但是把Seq2Seq替换为Transformer架构,还有一点不同是,本次没有采用分词训练 ...
- 基于TensorFlow训练花朵识别模型的源码和Demo
基于TensorFlow训练花朵识别模型的源码和Demo 转发来源: https://blog.csdn.net/Anymake_ren/article/details/80550684 下面就通过对 ...
最新文章
- 乐视美国官网下线,官方公告称一周后还会回来
- Access数据库中Sum函数返回空值(Null)时如何设置为0
- python散点图拟合曲线-python中的多元(多项式)最佳拟合曲线?
- python基础教程:修改Python列表中元素的几种方法
- 数据结构与算法 -- 二叉树 ADT
- 三种excel 多条件计数方法
- promise链式调用_这一次,彻底弄懂 Promise
- QT接收Linux内核,QT界面程序经过网路与普通的linux应用程序进行数据传送的情况...
- 继续南山聊代码!Apache Kafka × Apache Flink Meetup · 深圳站
- 启动凤凰系统出现android,凤凰系统重启后出现蓝屏时的解决方法
- matlab餅秶滲杅芞砓,通信猫
- Erlang中的fun函数使用详解
- Python 谷歌翻译_浏览器版本 selenium (2022年1月测试可用)
- 解读采用DSP工业电机控制系统电路_电动机控制电路图讲解
- libpython3.7m so静态库_Python3.7:加载共享库时出错:libpython3.7m.so.1.0
- 关闭compactos_HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量
- P2713(罗马游戏 可并堆模板)
- 一文解读广告投放全攻略,提升拓客效率
- mybatis+servlet
- Virgo与Maven整合开发环境搭建(一)
热门文章