2021 CCF BDCI 千言-问题匹配鲁棒性评测-baseline

本文介绍2021 CCF BDCI千言-问题匹配鲁棒性评测。赛题关注问题匹配模型在真实场景的鲁棒性,基于多个数据集从多维度评估。基线评测显示ERNIE-Gram模型效果佳,还提及R-Drop策略。文中还讲述了项目建立中训练集和测试集的合并过程,以及训练、预测的相关操作,最终得分79.788。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

2021 ccf bdci 千言-问题匹配鲁棒性评测-baseline - 创想鸟

〇、简介

1.比赛地址

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_coef dev acc test-A acc test-B acc

ernie-1.0-base0.086.9676.2077.50bert-base-chinese0.086.9376.9077.60ernie-gram-zh0.087.6680.8081.20ernie-gram-zh0.187.9180.2080.80ernie-gram-zh0.287.4780.1081.00

4.最终结果

最终得分: 79.788,可能和batch size等等设置有关,如下图。

2021 CCF BDCI 千言-问题匹配鲁棒性评测-baseline - 创想鸟        

一、建立项目

所有解压缩只进行一起,以后注释掉即可

1.解压缩基线

In [1]

%cd ~

       

/home/aistudio

       In [2]

# !git clone https://gitee.com/paddlepaddle/PaddleNLP.git --depth=1

   

2.解压缩训练集

In [3]

# !unzip -qoa data/data104940/train.zip

   In [4]

!head train/BQ/train

       

用微信都6年,微信没有微粒贷功能4。  号码来微粒贷0微信消费算吗还有多少钱没还0交易密码忘记了找回密码绑定的手机卡也掉了怎么最近安全老是要改密码呢好麻烦0你好 我昨天晚上申请的没有打电话给我 今天之内一定会打吗?什么时候可以到账0“微粒贷开通"你好,我的微粒贷怎么没有开通呢0为什么借款后一直没有给我回拨电话怎么申请借款后没有打电话过来呢!1为什么我每次都提前还款了最后却不给我贷款了30号我一次性还清可以不0请问一天是否都是限定只能转入或转出都是五万。微众多少可以赎回短期理财0微粒zi询电话号码多少你们的人工客服电话是多少1已经在银行换了新预留号码。我现在换了电话号码,这个需要更换吗1

       In [5]

!head train/LCQMC/train

       

喜欢打篮球的男生喜欢什么样的女生爱打篮球的男生喜欢什么样的女生1我手机丢了,我想换个手机我想买个新手机,求推荐1大家觉得她好看吗大家觉得跑男好看吗?0求秋色之空漫画全集求秋色之空全集漫画1晚上睡觉带着耳机听音乐有什么害处吗?孕妇可以戴耳机听音乐吗?0学日语软件手机上的手机学日语的软件1打印机和电脑怎样连接,该如何设置如何把带无线的电脑连接到打印机上0侠盗飞车罪恶都市怎样改车侠盗飞车罪恶都市怎么改车1什么花一年四季都开什么花一年四季都是开的1看图猜一电影名看图猜电影!1

       In [6]

!head train/OPPO/train

       

充电提示音开启充电提示音0那叫你帮我找在这里香肠派对吗那麻烦帮我定下位好吗0导航去大理导航去观音桥0oppo手环怎么连接手机如何连接oppo 手环1我也没感觉我也没感触1咱们游戏里那个问道是那个版本啊我不知道那是什么啊我是一个小学生诶0你应该就是不男不女的那你就是不男不女1梦泪在哪直播虎牙直播0小布下载万能钥匙小布打开万能钥匙0手机密码忘查找手机密码忘记了0

       

3.查看testA

In [7]

!head data/data104941/test_A

       

今天会不会下大雨哦今天的天气很好哦怎么退出微博会员续费怎么退出微博会员企业帐户怎么开通企业账户怎么开通农历多少今天还有多少天到冬天你今年应该过第多少个生日了呢那你今年多大了明天有雨吗明天你明天,明天走一天十字路口用英文怎么说十字路口英文梦见死去的亲人还有猫梦见去世的亲人还有猫2020广东放假2020浙江放假敦煌莫高窟的历史敦煌莫高窟的文物

       

4.训练集合并

注意事项:

仅执行一次没有表头遇到读不进来得设置error_bad_lines=False分隔符设置 sep=’t’In [8]

%cd  ~

       

/home/aistudio

       In [9]

import pandas as pd

   In [10]

# 读取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 4nSkipping line 54107: expected 3 fields, saw 4nSkipping line 65083: expected 3 fields, saw 4nSkipping line 69869: expected 3 fields, saw 4n'

       In [11]

LCQMC_train=LCQMC_train.dropna()LCQMC_train.head()

       

                    0                1  20    喜欢打篮球的男生喜欢什么样的女生  爱打篮球的男生喜欢什么样的女生  11        我手机丢了,我想换个手机      我想买个新手机,求推荐  12            大家觉得她好看吗       大家觉得跑男好看吗?  03           求秋色之空漫画全集        求秋色之空全集漫画  14  晚上睡觉带着耳机听音乐有什么害处吗?     孕妇可以戴耳机听音乐吗?  0

               In [12]

OPPO_train=OPPO_train.dropna()OPPO_train.head()

       

                0            1  20           充电提示音      开启充电提示音  01  那叫你帮我找在这里香肠派对吗   那麻烦帮我定下位好吗  02           导航去大理       导航去观音桥  03    oppo手环怎么连接手机  如何连接oppo 手环  14           我也没感觉        我也没感触  1

               In [13]

BQ_train.head()

       

                               0                 1    20               用微信都6年,微信没有微粒贷功能        4。  号码来微粒贷  0.01                         微信消费算吗           还有多少钱没还  0.02           交易密码忘记了找回密码绑定的手机卡也掉了  怎么最近安全老是要改密码呢好麻烦  0.03  你好 我昨天晚上申请的没有打电话给我 今天之内一定会打吗?          什么时候可以到账  0.04                        “微粒贷开通"   你好,我的微粒贷怎么没有开通呢  0.0

               In [14]

BQ_train=BQ_train.dropna()BQ_train[2]=BQ_train[2].astype(int)

   In [15]

BQ_train.head(10)

       

                               0                  1  20               用微信都6年,微信没有微粒贷功能         4。  号码来微粒贷  01                         微信消费算吗            还有多少钱没还  02           交易密码忘记了找回密码绑定的手机卡也掉了   怎么最近安全老是要改密码呢好麻烦  03  你好 我昨天晚上申请的没有打电话给我 今天之内一定会打吗?           什么时候可以到账  04                        “微粒贷开通"    你好,我的微粒贷怎么没有开通呢  05               为什么借款后一直没有给我回拨电话   怎么申请借款后没有打电话过来呢!  16          为什么我每次都提前还款了最后却不给我贷款了       30号我一次性还清可以不  07         请问一天是否都是限定只能转入或转出都是五万。       微众多少可以赎回短期理财  08                     微粒zi询电话号码多少       你们的人工客服电话是多少  19                  已经在银行换了新预留号码。  我现在换了电话号码,这个需要更换吗  1

               In [16]

# 合并3个数据集的训练集df_tmp = LCQMC_train.append(OPPO_train)all_train = df_tmp.append(BQ_train)

   In [17]

all_train.info

       


               In [18]

all_train_2=all_trainall_train_2[0]=all_train_2[1]all_train_2[1]=all_train[0]all_train_2.head()

       

                 0                1  20  爱打篮球的男生喜欢什么样的女生  爱打篮球的男生喜欢什么样的女生  11      我想买个新手机,求推荐      我想买个新手机,求推荐  12       大家觉得跑男好看吗?       大家觉得跑男好看吗?  03        求秋色之空全集漫画        求秋色之空全集漫画  14     孕妇可以戴耳机听音乐吗?     孕妇可以戴耳机听音乐吗?  0

               In [19]

all_train=all_train.append(all_train_2)

   In [20]

# 另存all_train.to_csv('all_train.csv', sep = 't', index=None, header=None)

   In [21]

!head all_train.csv

       

爱打篮球的男生喜欢什么样的女生爱打篮球的男生喜欢什么样的女生1我想买个新手机,求推荐我想买个新手机,求推荐1大家觉得跑男好看吗?大家觉得跑男好看吗?0求秋色之空全集漫画求秋色之空全集漫画1孕妇可以戴耳机听音乐吗?孕妇可以戴耳机听音乐吗?0手机学日语的软件手机学日语的软件1如何把带无线的电脑连接到打印机上如何把带无线的电脑连接到打印机上0侠盗飞车罪恶都市怎么改车侠盗飞车罪恶都市怎么改车1什么花一年四季都是开的什么花一年四季都是开的1看图猜电影!看图猜电影!1

       

5.合并测试集

仅执行一次

In [22]

# 读取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)

   In [23]

# 合并3个数据集的测试集df_tmp = LCQMC_dev.append(OPPO_dev)all_dev = df_tmp.append(BQ_dev)all_dev.dropna()

       

                   0               1  20        开初婚未育证明怎么弄?    初婚未育情况证明怎么开?  11        谁知道她是网络美女吗?  爱情这杯酒谁喝都会醉是什么歌  02        人和畜生的区别是什么?     人与畜生的区别是什么!  13         男孩喝女孩的尿的故事   怎样才知道是生男孩还是女孩  04     这种图片是用什么软件制作的?  这种图片制作是用什么软件呢?  1...              ...             ... ..9995   您好,我还款了怎么还没扣款        今天一直没有扣款  19996         有联系方式吗?         电话号码是多少  19997      昨天打的电话我没接到  我开通却总是接不到你们的电话  19998       0.05%是日利率     如何借款,利息如何计算  09999       不使用可以关闭吗?   额度申请成功后会短信通知吗  0[28802 rows x 3 columns]

               In [24]

all_dev.info

       


               In [25]

all_dev_2=all_devall_dev_2[0]=all_dev_2[1]all_dev_2[1]=all_dev[0]all_dev_2.head()

       

                0               1  20    初婚未育情况证明怎么开?    初婚未育情况证明怎么开?  11  爱情这杯酒谁喝都会醉是什么歌  爱情这杯酒谁喝都会醉是什么歌  02     人与畜生的区别是什么!     人与畜生的区别是什么!  13   怎样才知道是生男孩还是女孩   怎样才知道是生男孩还是女孩  04  这种图片制作是用什么软件呢?  这种图片制作是用什么软件呢?  1

               In [26]

all_dev=all_dev.append(all_dev_2)

   In [27]

# 另存all_dev.to_csv('all_dev.csv', sep = 't', index=None, header=None)

   In [28]

! tail all_dev.csv

       

怎么成为微粒贷 怎么开通微粒贷怎么成为微粒贷 怎么开通微粒贷1我如果今天借4000什么时候到还款日,还多少钱我如果今天借4000什么时候到还款日,还多少钱0借一万,有没有多久开始计算利息借一万,有没有多久开始计算利息1财付通怎么绑定银行卡财付通怎么绑定银行卡1电话确认需要等待多久?电话确认需要等待多久?1今天一直没有扣款今天一直没有扣款1电话号码是多少电话号码是多少1我开通却总是接不到你们的电话我开通却总是接不到你们的电话1如何借款,利息如何计算如何借款,利息如何计算0额度申请成功后会短信通知吗额度申请成功后会短信通知吗0

       

二、训练

1.更新paddlenlp至2.0.8版本

注意:一定要更新,不更新会出问题。

In [ ]

!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.开始训练

In [30]

%cd ~/PaddleNLP/examples/text_matching/question_matching

       

/home/aistudio/PaddleNLP/examples/text_matching/question_matching

       In [ ]

!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')

   In [ ]

%cd ~/PaddleNLP/examples/text_matching/question_matching

   In [ ]

!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.查看

In [ ]

!head ccf_qianyan_qm_result_A.csv

   

3. 下载并提交即可

以上就是2021 CCF BDCI 千言-问题匹配鲁棒性评测-baseline的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/53579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 10:48:52
下一篇 2025年11月9日 10:53:18

相关推荐

发表回复

登录后才能评论
关注微信