七夕礼物没送对?飞桨PaddlePaddle帮你读懂女朋友的小心思

七夕礼物没送对?飞桨PaddlePaddle帮你读懂女朋友的小心思#vocab_size为词典大小,对应上面./data/vocab.txt”vocab_size”:如果用户基于

大家好,欢迎来到IT知识分享网。

本文作者:飞桨工程师

量子位 转载 | 公众号 QbitAI

七夕节,广大的钢铁直男们,你们给女朋友的礼物买对了么?

“女孩儿的心思男孩你别猜,你猜来猜去也猜不明白。不知道她为什么掉眼泪,也不知她为什么笑开怀……”

对于广大男同胞而言,如何猜透女朋友的心思,是极为苦恼的一件事情。

尤其是在微信聊天的时候,看不到对方的表情,也听不到对方的语气语调,只有聊天界面上“平静如水”的文字,可是你却猜不透,在这表面“平静”的背后,女孩子的心中到底是怎样的“风起云涌”。

七夕礼物没送对?飞桨PaddlePaddle帮你读懂女朋友的小心思

图片源自网络

很多时候,女孩子已经闷闷地生了很久的气,男孩儿却没有丝毫的察觉。“你……你生气了吗?”往往导致一场腥风血雨的情侣大战。

铛铛铛铛!敲重点啦!!!

飞桨(PaddlePaddle)对话情绪识别模型,专注于识别对话场景中的用户情绪,能够帮您更快更准地识别出聊天过程中女朋友的各种小情绪。

该模型将对话文本分类为正向情绪、中性情绪和负向情绪三种。

其中,正向情绪进一步细分为:喜爱、愉快和感谢三种;负向情绪进一步细分为:抱怨、愤怒、厌恶、恐惧和悲伤五种。可以帮助理解女友的真实情绪。

除了哄女朋友外,对话情绪识别模型还可以应用到客服聊天等诸多企业场景。识别用户在客服咨询过程中的情绪变化,能够帮助企业更好地把握对话质量、改善用户交互体验,同时分析客服的服务质量、降低人工质检的成本。

那么,飞桨对话情绪识别模型的效果如何呢?基于自建测试集(包含闲聊、客服)和nlpcc2014微博情绪数据集,进行评测,结果如下表。此外,我们还开源了基于海量数据已经训练好的模型,只需要进行简单的fine-tune,就能获得更好的效果。看一下情绪识别准确率的评测结果。

七夕礼物没送对?飞桨PaddlePaddle帮你读懂女朋友的小心思

本项目有以下技术优势:

  • 依托于百度强大的对话系统,深入分析多种对话场景的主要情绪类型及分布,更能准确理解并识别对话中的情绪
  • 基于大数据和深度学习,自动学习词义及词序关系,具备较强的泛化能力,情绪识别精度高
  • 在多个垂类(金融客服、闲聊对话、导航交互),负向情绪的识别准确率可达90%以上

话不多说,让我们来一起实践,快速上手吧!

快速上手

(1)克隆项目

克隆代码库到本地。

git clone https://github.com/PaddlePaddle/models.git

cd models/PaddleNLP/emotion_detection

(2)数据准备

运行如下脚本,下载经过预处理的数据。自动生成data目录,data目录下有训练集数据(train.tsv)、开发集数据(dev.tsv)、测试集数据(test.tsv)、 待预测数据(infer.tsv)和对应词典(vocab.txt)。

sh download_data.sh

(3)模型下载

我们开源了基于海量数据训练好的对话情绪识别模型(基于TextCNN、ERNIE等模型训练),可供用户直接使用,并提供两种下载方式。

方式一:基于PaddleHub命令行工具

(PaddleHub安装,可以参考https://github.com/PaddlePaddle/PaddleHub)

mkdir models && cd models

hub download emotion_detection_textcnn–output_path ./

hub download emotion_detection_ernie_finetune–output_path ./

tar xvf emotion_detection_textcnn-1.0.0.tar.gz

tar xvfemotion_detection_ernie_finetune-1.0.0.tar.gz

方式二:直接下载脚本

sh download_model.sh

(4)模型评估

基于已有的预训练模型和数据,可以运行下面的命令进行测试,查看预训练的模型在测试集(test.tsv)上的评测结果。

# TextCNN 模型

sh run.sh eval

# ERNIE 模型

sh run_ernie.sh eval

(5)模型训练

基于示例的数据集,可以运行下面的命令,在训练集(train.tsv)上进行模型训练,并在开发集(dev.tsv)验证。

# TextCNN 模型

sh run.sh train

# ERNIE 模型

sh run_ernie.sh train

训练完成后,可修改run.sh和run_ernie.sh中的init_checkpoint 参数,选择最优step的模型进行评估和预测。

(6)模型预测

利用已有模型,可在未知label的数据集(infer.tsv)上进行预测,得到模型预测结果及各label的概率。

# TextCNN 模型

sh run.sh infer

# ERNIE 模型

sh run_ernie.sh infer

二、进阶使用

(1)任务定义

对话情绪识别任务输入是一段用户文本,输出是检测到的情绪类别,包括消极、积极、中性,这是一个经典的短文本三分类任务。

(2)模型原理介绍

本项目针对对话情绪识别问题,开源了一系列分类模型,供用户可配置地使用:

  • BOW:Bag Of Words,是一个非序列模型,使用基本的全连接结构;
  • CNN:浅层CNN模型,能够处理变长的序列输入,提取一个局部区域之内的特征;;
  • TextCNN:多卷积核CNN模型,能够更好地捕捉句子局部相关性;
  • LSTM:单层LSTM模型,能够较好地解决序列文本中长距离依赖的问题;
  • BI-LSTM:双向单层LSTM模型,采用双向LSTM结构,更好地捕获句子中的语义特征;
  • ERNIE:百度自研基于海量数据和先验知识训练的通用文本语义表示模型,并基于此在对话情绪分类数据集上进行fine-tune获得。

(3)数据格式说明

训练、预测、评估使用的数据示例如下,数据由两列组成,以制表符(’\t’)分隔,第一列是情绪分类的类别(0表示消极;1表示中性;2表示积极),第二列是以空格分词的中文文本,文件为utf8编码。

label text_a

0 谁 骂人 了 ?我 从来不 骂人 , 我 骂 的 都 不是 人 , 你 是 人 吗 ?

1 我 有事 等会儿 就 回来和 你 聊

2 我 见到 你 很高兴 谢谢你 帮 我

注:本项目额外提供了分词预处理脚本(在preprocess目录下),可供用户使用,具体使用方法如下:

python tokenizer.py–test_data_dir ./test.txt.utf8 –batch_size 1 > test.txt.utf8.seg

(4)代码结构说明

.

├── config.json # 模型配置文件

├── config.py # 定义了该项目模型的相关配置,包括具体模型类别、以及模型的超参数

├── reader.py # 定义了读入数据,加载词典的功能

├── run_classifier.py # 该项目的主函数,封装包括训练、预测、评估的部分

├── run_ernie_classifier.py # 基于ERNIE表示的项目的主函数

├── run_ernie.sh # 基于ERNIE的训练、预测、评估运行脚本

├── run.sh # 训练、预测、评估运行脚本

├── utils.py # 定义了其他常用的功能函数

(5)如何组建自己的模型

可以根据自己的需求,组建自定义的模型,具体方法如下:

  • 定义自己的网络结构。用户可以在 models/classification/nets.py 中,定义自己的模型,只需要增加新的函数即可。此处假设用户自定义的函数名为user_net。
  • 更改模型配置。需要在config.json中将model_type改为用户自定义的user_net。
  • 模型训练、评估、预测,需要在run.sh、run_ernie.sh中修改模型、数据、词典路径的配置。

(6)如何基于百度开源模型进行 Fine-tune

用户可基于百度开源的对话情绪识别模型,在自有数据上实现 Fine-tune 训练,以获得更好的效果提升。具体方法如下:

如果用户基于开源的 TextCNN模型进行 Fine-tune,需要修改run.sh和config.json文件。

run.sh脚本修改如下:

# 在train()函数中,增加–init_checkpoint选项;修改–vocab_path

–init_checkpoint ./models/textcnn

–vocab_path ./data/vocab.txt

config.json 配置修改如下:

# vocab_size为词典大小,对应上面./data/vocab.txt

“vocab_size”:

如果用户基于开源的 ERNIE模型进行Fine-tune,需要更新run_ernie.sh脚本,具体修改如下:

# 在train()函数中,修改–init_checkpoint选项

–init_checkpoint./models/ernie_finetune/params

我们也提供了使用PaddleHub加载ERNIE模型的选项。PaddleHub是PaddlePaddle的预训练模型管理工具,可以用一行代码完成预训练模型的加载,简化预训练模型的使用和迁移学习。

需要修改run_ernie.sh中的配置如下:

# 在train()函数中,修改–use_paddle_hub选项

–use_paddle_hub true

注意:使用该选项需要先安装PaddleHub,安装命令如下:

$ pip install paddlehub

快快自己动手尝试下吧!

想与更多的深度学习开发者交流,请加入飞桨官方:

如果您想详细了解更多飞桨PaddlePaddle的相关内容,请点击文末阅读原文或参阅以下文档。

官网地址:

https://www.paddlepaddle.org.cn?fr=lzw

项目地址:

https://github.com/PaddlePaddle/models/tree/v1.5.1/PaddleNLP/emotion_detection

— 完 —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/53109.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信