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%准确率的抑郁文本预测模型相关推荐

  1. Python 教你训练一个98%准确率的微博抑郁文本分类模型(含数据)

    Paddle是一个比较高级的深度学习开发框架,其内置了许多方便的计算单元可供使用,我们之前写过PaddleHub相关的文章: 1.Python 识别文本情感就这么简单 2.比PS还好用!Python ...

  2. 基于协同训练的半监督文本分类算法

    标签: 半监督学习,文本分类 作者:炼己者 --- 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! 如果大家觉得格式看着不舒服,也欢迎大家去看我的 ...

  3. 实战|手把手教你训练一个基于Keras的多标签图像分类器

    图片来自 pexels,作者:Jean-Christophe André 2019 年第 63 篇文章,总第 87 篇文章 原文链接:https://www.pyimagesearch.com/201 ...

  4. 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种

    基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种 ,含数据集可直接运行 完整代码下载地址:基于LSTM三分类的文本情感分 ...

  5. 如何训练一个简单的语音识别网络模型---基于TensorFlow

    这篇文章是翻译自Google的教程:还有一部分没完成,但今天上去发现登录不了,只好先发这部分上来. 欢迎有兴趣学习的朋友,与我交流.微信:18221205301 如何训练一个简单的语音识别网络模型 准 ...

  6. 基于预训练词向量的文本相似度计算-word2vec, paddle

    文章目录 0. 前言 1. 余弦相似度算子 2. 示例代码并验证 3. 基于词向量的文本相似度 3.1 读取word2vec文件 3.2 定义模型 3.3 运行模型 3.4 根据分数降序排列 3.5 ...

  7. 【NLP】bert4vec:一个基于预训练的句向量生成工具

    一个基于预训练的句向量生成工具 bert4vec:   https://github.com/zejunwang1/bert4vec 环境 transformers>=4.6.0,<5.0 ...

  8. 【Pytorch实战4】基于CIFAR10数据集训练一个分类器

    参考资料: <深度学习之pytorch实战计算机视觉> Pytorch官方教程 Pytorch中文文档 先是数据的导入与预览. import torch import torchvisio ...

  9. NLP:训练一个中文问答模型Ⅱ

    训练一个中文问答模型Ⅱ-Step by Step   接上一篇 中文问答模型Ⅰ基于这次仍是基于NMT架构训练,但是把Seq2Seq替换为Transformer架构,还有一点不同是,本次没有采用分词训练 ...

  10. 基于TensorFlow训练花朵识别模型的源码和Demo

    基于TensorFlow训练花朵识别模型的源码和Demo 转发来源: https://blog.csdn.net/Anymake_ren/article/details/80550684 下面就通过对 ...

最新文章

  1. 乐视美国官网下线,官方公告称一周后还会回来
  2. Access数据库中Sum函数返回空值(Null)时如何设置为0
  3. python散点图拟合曲线-python中的多元(多项式)最佳拟合曲线?
  4. python基础教程:修改Python列表中元素的几种方法
  5. 数据结构与算法 -- 二叉树 ADT
  6. 三种excel 多条件计数方法
  7. promise链式调用_这一次,彻底弄懂 Promise
  8. QT接收Linux内核,QT界面程序经过网路与普通的linux应用程序进行数据传送的情况...
  9. 继续南山聊代码!Apache Kafka × Apache Flink Meetup · 深圳站
  10. 启动凤凰系统出现android,凤凰系统重启后出现蓝屏时的解决方法
  11. matlab餅秶滲杅芞砓,通信猫
  12. Erlang中的fun函数使用详解
  13. Python 谷歌翻译_浏览器版本 selenium (2022年1月测试可用)
  14. 解读采用DSP工业电机控制系统电路_电动机控制电路图讲解
  15. libpython3.7m so静态库_Python3.7:加载共享库时出错:libpython3.7m.so.1.0
  16. 关闭compactos_HOWTO: 利用 CompactOS 减少 Windows 10 磁盘占用量
  17. P2713(罗马游戏 可并堆模板)
  18. 一文解读广告投放全攻略,提升拓客效率
  19. mybatis+servlet
  20. Virgo与Maven整合开发环境搭建(一)

热门文章

  1. 【IDEA】创建包和新文件的问题
  2. 分布式通信框架-WebService(分布式笔记)
  3. 解决企业内部上网行为安全隐患很重要!
  4. Python初学者笔记--第二天(基础练习题)
  5. Cadence 小技巧系列(持续更新)
  6. 湖南科技大学 并查集_宗教信仰 小水题
  7. Day 02 python学习笔记
  8. oracle的透明网关是什么,Oracle透明网关的使用方法是什么?
  9. c语言程序设计第一次月考考试重点,C语言程序设计第一次月考试题.doc
  10. Node-RED与uibuilder构建自定义UI