本文主要介绍关于paddlepaddle,nlp,自然语言处理的知识点,对【2021 CCF BDCI 千言-问题匹配鲁棒性评测-baseline】和【肖秀荣1000题有必要买新的吗】有兴趣的朋友可以看下由【AI Studio】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【】相关技术问题。
2021 CCF BDCI 千言-问题匹配鲁棒性评测
2.赛题背景问题匹配(Question Matching)任务旨在判断两个自然问句之间的语义是否等价,是自然语言处理领域一个重要研究方向。问题匹配同时也具有很高的商业价值,在信息检索、智能客服等领域发挥重要作用。
近年来,神经网络模型虽然在一些标准的问题匹配评测集合上已经取得与人类相仿甚至超越人类的准确性,但在处理真实应用场景问题时,性能大幅下降,在简单(人类很容易判断)的问题上无法做出正确判断(如下图),影响产品体验的同时也会造成相应的经济损失。
问题1问题2标签(Label)Model婴儿吃什么蔬菜好婴儿吃什么绿色
蔬菜好01关于
牢房
的电视剧关于
监狱
的电视剧10心率过
快
有什么问题心率过
慢
有什么问题01黑色
裤子
配什么
上衣
黑色
上衣
配什么
裤子
01
当前大多数问题匹配任务采用单一指标,在同分布的测试集上评测模型的好坏,这种评测方式可能夸大了模型能力,并且缺乏对模型鲁棒性的细粒度优劣势评估。本次评测关注问题匹配模型在真实应用场景中的鲁棒性,从词汇理解、句法结构、错别字、口语化、对话理解五个维度检测模型的能力,从而发现模型的不足之处,推动语义匹配技术的发展。本次竞赛主要基于千言数据集,采用的数据集包括哈尔滨工业大学(深圳)的LCQMC和BQ数据集、OPPO的小布对话短文本数据集以及百度的DuQM数据集,期望从多维度、多领域出发,全面评价模型的鲁棒性,进一步提升问题匹配技术的研究水平。本次竞赛将在第九届“CCF大数据与计算智能大赛”举办技术交流论坛和颁奖仪式,诚邀学术界和工业界的研究者和开发者参加本次竞赛!
3.基线评测效果本项目分别基于ERNIE-1.0、Bert-base-chinese、ERNIE-Gram 3 个中文预训练模型训练了单塔 Point-wise 的匹配模型, 基于 ERNIE-Gram 的模型效果显着优于其它 2 个预训练模型。
此外,在 ERNIE-Gram 模型基础上我们也对最新的正则化策略 R-Drop 进行了相关评测, R-Drop 策略的核心思想是针对同 1 个训练样本过多次前向网络得到的输出加上正则化的 Loss 约束。
我们开源了效果最好的 2 个策略对应模型的 checkpoint 作为本次比赛的基线方案: 基于 ERNIE-Gram 预训练模型 R-Drop 系数分别为 0.0 和 0.1 的 2 个模型, 用户可以下载相应的模型来复现我们的评测结果。
模型rdrop_coefdev acctest-A acctest-B accernie-1.0-base0.086.9676.2077.50bert-base-chinese0.086.9376.9077.60ernie-gram-zh0.087.66 80.80 81.20ernie-gram-zh0.187.9180.2080.80ernie-gram-zh0.287.4780.1081.00 4.最终结果最终得分: 79.788,可能和batch size等等设置有关,如下图。
一、建立项目所有解压缩只进行一起,以后注释掉即可
1.解压缩基线%cd ~
/home/aistudio
# !git clone https://gitee.com/paddlepaddle/PaddleNLP.git --depth=1
2.解压缩训练集
# !unzip -qoa data/data104940/train.zip
!head train/BQ/train
用微信都6年,微信没有微粒贷功能 4。 号码来微粒贷 0
微信消费算吗 还有多少钱没还 0
交易密码忘记了找回密码绑定的手机卡也掉了 怎么最近安全老是要改密码呢好麻烦 0
你好 我昨天晚上申请的没有打电话给我 今天之内一定会打吗? 什么时候可以到账 0
“微粒贷开通" 你好,我的微粒贷怎么没有开通呢 0
为什么借款后一直没有给我回拨电话 怎么申请借款后没有打电话过来呢! 1
为什么我每次都提前还款了最后却不给我贷款了 30号我一次性还清可以不 0
请问一天是否都是限定只能转入或转出都是五万。 微众多少可以赎回短期理财 0
微粒咨询电话号码多少 你们的人工客服电话是多少 1
已经在银行换了新预留号码。 我现在换了电话号码,这个需要更换吗 1
!head train/LCQMC/train
喜欢打篮球的男生喜欢什么样的女生 爱打篮球的男生喜欢什么样的女生 1
我手机丢了,我想换个手机 我想买个新手机,求推荐 1
大家觉得她好看吗 大家觉得跑男好看吗? 0
求秋色之空漫画全集 求秋色之空全集漫画 1
晚上睡觉带着耳机听音乐有什么害处吗? 孕妇可以戴耳机听音乐吗? 0
学日语软件手机上的 手机学日语的软件 1
打印机和电脑怎样连接,该如何设置 如何把带无线的电脑连接到打印机上 0
侠盗飞车罪恶都市怎样改车 侠盗飞车罪恶都市怎么改车 1
什么花一年四季都开 什么花一年四季都是开的 1
看图猜一电影名 看图猜电影! 1
!head train/OPPO/train
充电提示音 开启充电提示音 0
那叫你帮我找在这里香肠派对吗 那麻烦帮我定下位好吗 0
导航去大理 导航去观音桥 0
oppo手环怎么连接手机 如何连接oppo 手环 1
我也没感觉 我也没感触 1
咱们游戏里那个问道是那个版本啊 我不知道那是什么啊我是一个小学生诶 0
你应该就是不男不女的 那你就是不男不女 1
梦泪在哪直播 虎牙直播 0
小布下载万能钥匙 小布打开万能钥匙 0
手机密码忘 查找手机密码忘记了 0
3.查看testA
!head data/data104941/test_A
今天会不会下大雨哦 今天的天气很好哦
怎么退出微博会员续费 怎么退出微博会员
企业帐户怎么开通 企业账户怎么开通
农历多少今天 还有多少天到冬天
你今年应该过第多少个生日了呢 那你今年多大了
明天有雨吗明天 你明天,明天走一天
十字路口用英文怎么说 十字路口英文
梦见死去的亲人还有猫 梦见去世的亲人还有猫
2020广东放假 2020浙江放假
敦煌莫高窟的历史 敦煌莫高窟的文物
4.训练集合并
注意事项:
仅执行一次没有表头遇到读不进来得设置error_bad_lines=False分隔符设置 sep=’\t’%cd ~
/home/aistudio
import pandas as pd
# 读取3个数据集的训练集
LCQMC_train = pd.read_csv('train/LCQMC/train', sep = '\t', header=None)
OPPO_train = pd.read_csv('train/OPPO/train', sep = '\t', header=None)
BQ_train = pd.read_csv('train/BQ/train', sep="\t", header=None, error_bad_lines=False)
b'Skipping line 20746: expected 3 fields, saw 4\nSkipping line 54107: expected 3 fields, saw 4\nSkipping line 65083: expected 3 fields, saw 4\nSkipping line 69869: expected 3 fields, saw 4\n'
LCQMC_train=LCQMC_train.dropna()
LCQMC_train.head()
0120喜欢打篮球的男生喜欢什么样的女生爱打篮球的男生喜欢什么样的女生11我手机丢了,我想换个手机我想买个新手机,求推荐12大家觉得她好看吗大家觉得跑男好看吗?03求秋色之空漫画全集求秋色之空全集漫画14晚上睡觉带着耳机听音乐有什么害处吗?孕妇可以戴耳机听音乐吗?0
OPPO_train=OPPO_train.dropna()
OPPO_train.head()
0120充电提示音开启充电提示音01那叫你帮我找在这里香肠派对吗那麻烦帮我定下位好吗02导航去大理导航去观音桥03oppo手环怎么连接手机如何连接oppo 手环14我也没感觉我也没感触1
BQ_train.head()
0120用微信都6年,微信没有微粒贷功能4。 号码来微粒贷0.01微信消费算吗还有多少钱没还0.02交易密码忘记了找回密码绑定的手机卡也掉了怎么最近安全老是要改密码呢好麻烦0.03你好 我昨天晚上申请的没有打电话给我 今天之内一定会打吗?什么时候可以到账0.04“微粒贷开通"你好,我的微粒贷怎么没有开通呢0.0
BQ_train=BQ_train.dropna()
BQ_train[2]=BQ_train[2].astype(int)
BQ_train.head(10)
0120用微信都6年,微信没有微粒贷功能4。 号码来微粒贷01微信消费算吗还有多少钱没还02交易密码忘记了找回密码绑定的手机卡也掉了怎么最近安全老是要改密码呢好麻烦03你好 我昨天晚上申请的没有打电话给我 今天之内一定会打吗?什么时候可以到账04“微粒贷开通"你好,我的微粒贷怎么没有开通呢05为什么借款后一直没有给我回拨电话怎么申请借款后没有打电话过来呢!16为什么我每次都提前还款了最后却不给我贷款了30号我一次性还清可以不07请问一天是否都是限定只能转入或转出都是五万。微众多少可以赎回短期理财08微粒咨询电话号码多少你们的人工客服电话是多少19已经在银行换了新预留号码。我现在换了电话号码,这个需要更换吗1
# 合并3个数据集的训练集
df_tmp = LCQMC_train.append(OPPO_train)
all_train = df_tmp.append(BQ_train)
all_train.info
all_train_2=all_train
all_train_2[0]=all_train_2[1]
all_train_2[1]=all_train[0]
all_train_2.head()
0120爱打篮球的男生喜欢什么样的女生爱打篮球的男生喜欢什么样的女生11我想买个新手机,求推荐我想买个新手机,求推荐12大家觉得跑男好看吗?大家觉得跑男好看吗?03求秋色之空全集漫画求秋色之空全集漫画14孕妇可以戴耳机听音乐吗?孕妇可以戴耳机听音乐吗?0
all_train=all_train.append(all_train_2)
# 另存
all_train.to_csv('all_train.csv', sep = '\t', index=None, header=None)
!head all_train.csv
爱打篮球的男生喜欢什么样的女生 爱打篮球的男生喜欢什么样的女生 1
我想买个新手机,求推荐 我想买个新手机,求推荐 1
大家觉得跑男好看吗? 大家觉得跑男好看吗? 0
求秋色之空全集漫画 求秋色之空全集漫画 1
孕妇可以戴耳机听音乐吗? 孕妇可以戴耳机听音乐吗? 0
手机学日语的软件 手机学日语的软件 1
如何把带无线的电脑连接到打印机上 如何把带无线的电脑连接到打印机上 0
侠盗飞车罪恶都市怎么改车 侠盗飞车罪恶都市怎么改车 1
什么花一年四季都是开的 什么花一年四季都是开的 1
看图猜电影! 看图猜电影! 1
5.合并测试集
仅执行一次
# 读取3个数据集的测试集
LCQMC_dev = pd.read_csv('train/LCQMC/dev', sep = '\t', header=None)
OPPO_dev = pd.read_csv('train/OPPO/dev', sep = '\t', header=None)
BQ_dev = pd.read_csv('train/BQ/dev', sep="\t", header=None, error_bad_lines=False)
# 合并3个数据集的测试集
df_tmp = LCQMC_dev.append(OPPO_dev)
all_dev = df_tmp.append(BQ_dev)
all_dev.dropna()
0120开初婚未育证明怎么弄?初婚未育情况证明怎么开?11谁知道她是网络美女吗?爱情这杯酒谁喝都会醉是什么歌02人和畜生的区别是什么?人与畜生的区别是什么!13男孩喝女孩的尿的故事怎样才知道是生男孩还是女孩04这种图片是用什么软件制作的?这种图片制作是用什么软件呢?1............9995您好,我还款了怎么还没扣款今天一直没有扣款19996有联系方式吗?电话号码是多少19997昨天打的电话我没接到我开通却总是接不到你们的电话199980.05%是日利率如何借款,利息如何计算09999不使用可以关闭吗?额度申请成功后会短信通知吗0
28802 rows × 3 columns
all_dev.info
all_dev_2=all_dev
all_dev_2[0]=all_dev_2[1]
all_dev_2[1]=all_dev[0]
all_dev_2.head()
0120初婚未育情况证明怎么开?初婚未育情况证明怎么开?11爱情这杯酒谁喝都会醉是什么歌爱情这杯酒谁喝都会醉是什么歌02人与畜生的区别是什么!人与畜生的区别是什么!13怎样才知道是生男孩还是女孩怎样才知道是生男孩还是女孩04这种图片制作是用什么软件呢?这种图片制作是用什么软件呢?1
all_dev=all_dev.append(all_dev_2)
# 另存
all_dev.to_csv('all_dev.csv', sep = '\t', index=None, header=None)
! tail all_dev.csv
怎么成为微粒贷 怎么开通微粒贷 怎么成为微粒贷 怎么开通微粒贷 1
我如果今天借4000什么时候到还款日,还多少钱 我如果今天借4000什么时候到还款日,还多少钱 0
借一万,有没有多久开始计算利息 借一万,有没有多久开始计算利息 1
财付通怎么绑定银行卡 财付通怎么绑定银行卡 1
电话确认需要等待多久? 电话确认需要等待多久? 1
今天一直没有扣款 今天一直没有扣款 1
电话号码是多少 电话号码是多少 1
我开通却总是接不到你们的电话 我开通却总是接不到你们的电话 1
如何借款,利息如何计算 如何借款,利息如何计算 0
额度申请成功后会短信通知吗 额度申请成功后会短信通知吗 0
二、训练 1.更新paddlenlp至2.0.8版本
注意:一定要更新,不更新会出问题。
!pip install -U paddlenlp
2.修改train相关参数
据悉这个效果好,精度高,我来试试
45行
parser.add_argument("--epochs", default=30, type=int, help="Total number of training epochs to perform.")
47行
parser.add_argument('--save_step', default=500, type=int, help="Step interval for saving checkpoint.")
202行
if global_step % args.eval_step == 0 and rank == 0 and global_step>5000:
3.开始训练
%cd ~/PaddleNLP/examples/text_matching/question_matching
/home/aistudio/PaddleNLP/examples/text_matching/question_matching
!python -u -m paddle.distributed.launch --gpus "0" train.py --train_set /home/aistudio/all_train.csv --dev_set /home/aistudio/all_dev.csv --device gpu --eval_step 1000 --save_dir ./checkpoints --train_batch_size 50 --rdrop_coef 0.0 --seed 1024 --epochs 1
三、预测 1.A TEST
修改PaddleNLP/examples/text_matching/ernie_matching/predict_pointwise.py,让结果输出到 ccf_qianyan_qm_result_A.csv
with open('ccf_qianyan_qm_result_A.csv','w') as f:
for idx, y_pred in enumerate(y_preds):
text_pair = valid_ds[idx]
text_pair["pred_label"] = y_pred
print(text_pair)
f.writelines(str(y_pred)+'\n')
%cd ~/PaddleNLP/examples/text_matching/question_matching
!python -u predict.py --device --params_path "./checkpoints/model_10000/model_state.pdparams" --batch_size 128 --input_file "${test_set}" --result_file "predict_result"
2.查看
!head ccf_qianyan_qm_result_A.csv
3. 下载并提交即可
本文《2021 CCF BDCI 千言-问题匹配鲁棒性评测-baseline》版权归AI Studio所有,引用2021 CCF BDCI 千言-问题匹配鲁棒性评测-baseline需遵循CC 4.0 BY-SA版权协议。