0.前言

文本匹配工作在自然语言解决中是十分重要的根底工作之一,个别钻研两段文本之间的关系。有很多利用场景;如信息检索、问答零碎、智能对话、文本甄别、智能举荐、文本数据去重、文本类似度计算、自然语言推理、问答零碎、信息检索等,但文本匹配或者说自然语言解决依然存在很多难点。这些自然语言解决工作在很大水平上都能够形象成文本匹配问题,比方信息检索能够归结为搜索词和文档资源的匹配,问答零碎能够归结为问题和候选答案的匹配,复述问题能够归结为两个同义句的匹配。

前置参考我的项目

1.特定畛域常识图谱交融计划:技术常识前置【一】-文本匹配算法

https://blog.csdn.net/sinat_39620217/article/details/128718537

2.特定畛域常识图谱交融计划:文本匹配算法Simnet、Simcse、Diffcse【二】

https://blog.csdn.net/sinat_39620217/article/details/128833057

3.特定畛域常识图谱交融计划:文本匹配算法之预训练ERNIE-Gram单塔模型【三】

https://aistudio.baidu.com/aistudio/projectdetail/5456683?contributionType=1

NLP常识图谱我的项目合集(信息抽取、文本分类、图神经网络、性能优化等)

https://blog.csdn.net/sinat_39620217/article/details/128805154

2023计算机领域顶会以及ACL自然语言解决(NLP)钻研子方向汇总

https://blog.csdn.net/sinat_39620217/article/details/128897539

本我的项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5479941?contributionType=1

1.特定畛域常识图谱交融计划:学以致用千言-问题匹配鲁棒性评测较量验证

本较量重点关注问题匹配模型在实在利用场景中的鲁棒性,多维度、细粒度检测模型的鲁棒性,以期推动语义匹配技术的倒退。

https://aistudio.baidu.com/aistudio/competition/detail/130/0/leaderboard

1.1.赛题背景

问题匹配(Question Matching)工作旨在判断两个天然问句之间的语义是否等价,是自然语言解决畛域一个重要钻研方向。问题匹配同时也具备很高的商业价值,在信息检索、智能客服等畛域施展重要作用。

近年来,神经网络模型尽管在一些规范的问题匹配评测汇合上曾经获得与人类相仿甚至超过人类的准确性,但在解决实在利用场景问题时,性能大幅降落,在简略(人类很容易判断)的问题上无奈做出正确判断(如下图),影响产品体验的同时也会造成相应的经济损失。

以后大多数问题匹配工作采纳繁多指标,在同散布的测试集上评测模型的好坏,这种评测形式可能夸张了模型能力,并且不足对模型鲁棒性的细粒度优劣势评估。本次评测关注问题匹配模型在实在利用场景中的鲁棒性,从词汇了解、句法结构、错别字、口语化、对话了解五个维度检测模型的能力,从而发现模型的不足之处,推动语义匹配技术的倒退。本次比赛次要基于千言数据集,采纳的数据集包含哈尔滨工业大学(深圳)的LCQMC和BQ数据集、OPPO的小布对话短文本数据集以及百度的DuQM数据集,冀望从多维度、多畛域登程,全面评估模型的鲁棒性,进一步晋升问题匹配技术的钻研程度。

1.2 数据背景及阐明

本次评测的问题匹配数据集旨在掂量问题匹配模型的鲁棒性,通过建设细粒度的评测体系,系统地评估模型能力的不足之处。本次的评测体系蕴含了词汇、句法、语用3大维度和14个细粒度的能力,具体分类体系如下图。本次评测数据来自问答搜寻、问答型对话场景的实在问题,所有评测样本通过了人工筛选和语义匹配标注。

Corpus    Category    Subcategory    Perturbation    Example    LabelDuQM    Lexical Feature    POS    insert n.    高血压吃什么好 / 高血压孕妇吃什么好    Ninsert v.    贵州旅游景点 / 贵州旅游景点预约    Ninsert adj.    吃芒果上火吗 / 吃青芒果上火吗    Ninsert adv.    为什么打嗝 / 为什么始终打嗝    Nreplace n.    脂肪肝能吃猪肝吗 / 脂肪肝能吃猪肉吗    Nreplace v.    下蹲膝盖疼 / 下跪膝盖疼    Nreplace adj.    喉咙哑怎么办 / 喉咙疼怎么办    Nreplace adv.    总是胸闷喘不上气 / 偶然胸闷喘不上气    Nreplace num.    血压130/100高吗 / 血压120/110高吗    Nreplace quantifier    一枝花多少钱 / 一束花多少钱    Nreplace phrase    如何进步本人的记忆力 / 如何减少本人的实力    NNamed Entity    replace loc.    山西春节风俗 / 陕西春节风俗    Nreplace org.    暨南大学分数线 / 济南大学分数线    Nreplace person    王健林哪里人 / 王福林哪里人    Nreplace product    iphone 6多少钱 / iphone6x多少钱    NSynonym    replace n.    吃猕猴桃有什么效用 / 吃奇异果有什么效用    Yreplace v.    如何预防冻疮 / 如何避免冻疮    Yreplace adj.    膝盖冷什么起因 / 膝盖冰凉什么起因    Yreplace adv.    虾不能和什么一起吃 / 虾不能和什么同时吃    YAntonym    replace adj.    只吃蔬菜会让皮肤变好吗 / 只吃蔬菜会让皮肤变差吗    NNegation    negate v.    为什么宝宝哭 / 为什么宝宝不哭    Nnegate adj.    为什么苹果是红的 / 为什么苹果不是红的    Nneg.+antonym    冲动怎么办 / 无奈平静怎么办    YTemporal    insert    2007年的修仙小说 / 2007年以前的修仙小说    Nreplace    我在吃饭 / 我刚刚在吃饭    NSyntactic Feature    Symmetry    swap    鱼和鸡蛋能一起吃吗 / 鸡蛋和鱼能一起吃吗    YAsymmetry    swap    北京飞上海航班 / 上海飞北京航班    NNegative Asymmetry    swap + negate    男人比女人更高吗 / 女人比男人更矮吗    YVoice    insert passive word    我撞了他人怎么办 / 我被他人撞了怎么办    NPragmatic Feature    Misspelling    replace    小孩上吐下泻 / 小孩上吐下泄    YDiscourse Particle(Simple)    insert or replace    人为什么做梦 / 那么人为什么做梦    YDiscourse Particle(Complex)    insert or replace    明孝陵景区怎么走 / 嗨 你晓得明孝陵风景区怎么走吗    YOPPO    Conversational Semantics    -    是学生还是小姐猜一猜我 / 猜猜我是女生还是男生    Y

训练集

蕴含四个文本类似度数据集,别离为哈尔滨工业大学(深圳)的 LCQMC、BQ Corpus、谷歌PAWS数据集以及OPPO小布对话短文本数据集。4个数据集的工作统一,都是判断两段文本在语义上是否匹配的二分类工作。

测试集

  • 百度DuQM测试集:通过对搜寻问答场景中的原始问题进行替换、插入等操作,并过滤掉实在场景中未呈现过的问题,保障扰动后问题的自然性和流畅性,而后进行人工筛选和语义匹配标注,失去最终的评测集。
  • OPPO小布对话短文本测试集:采样自OPPO语音助手小布的实在对话场景数据,进行人工筛选和语义匹配标注,失去最终的评测集。

数据统计信息

数据用处数据集名称内容训练集大小开发集大小测试集大小
训练集(train)LCQMC(问题对, 标签)238,7668,80212,500
训练集(train)BQ(问题对, 标签)100,00010,00010,000
训练集(train)OPPO小布助手短文本对话(问题对, 标签)167,17410,000 -
训练集(train)PAWS(问题对, 标签)49,40120002000
测试集(test)DuQM、OPPO小布助手短文本对话(问题对)--100,000
  • 问题对:问题以中文为主,可能带有大量英文单词,采纳UTF-8编码,未分词,两个问题之间应用\t宰割;
  • 标签: 标签为0或1,其中1代表问题对语义相匹配,0则代表不匹配,标签与问题对之间也用\t宰割;

DuQM具体介绍,Github地址: https://github.com/baidu/DuRe...

1.3赛题工作

给定一组问题对,判断问题对在语义上是否匹配(等价),例如:

类型问题1问题2标签(Label)
匹配胎儿什么时候入盆胚胎什么时候入盆1
不匹配人民币怎么换港币港币怎么换 人民币0

评估指标

本次评测采纳的评估指标为宏均匀准确率(Macro-Accuracy),即先求得每个维度(词汇了解、句法结构、错别字、口语化、对话了解)的准确率(Accuracy),而后对所有维度的准确率求均匀(Macro-Averaging),具体评分如下:

2.数据筹备

本我的项目应用比赛提供的 LCQMC、BQ、OPPO、paws 这 4 个数据集的训练汇合集作为训练集,应用这 4 个数据集的验证汇合集作为验证集。

运行如下命令生成本我的项目所应用的训练集和验证集,在参赛过程中能够摸索采取其它的训练集和验证集组合,不须要和基线计划完全一致。

#合并所有数据集!cat /home/aistudio/dataset/lcqmc/train.tsv /home/aistudio/dataset/BQ/train /home/aistudio/dataset/paws-x-zh/train.tsv /home/aistudio/dataset/oppo/train > train.txt!cat /home/aistudio/dataset/lcqmc/dev.tsv /home/aistudio/dataset/BQ/dev /home/aistudio/dataset/paws-x-zh/dev.tsv /home/aistudio/dataset/oppo/dev > dev.txt#查看合并后数据import pandas as pddev = pd.read_csv('/home/aistudio/dev.txt', sep = '\t',  header=None)# dev.head()dev.info<bound method DataFrame.info of                     0               1  20         开初婚未育证实怎么弄?    初婚未育状况证实怎么开?  11         谁晓得她是网络美女吗?  恋情这杯酒谁喝都会醉是什么歌  02         人和畜生的区别是什么?     人与畜生的区别是什么!  13          男孩喝女孩的尿的故事   怎么才晓得是生男孩还是女孩  04      这种图片是用什么软件制作的?  这种图片制作是用什么软件呢?  1...               ...             ... ..30797      能够定制充电提示音吗         定制充电提示音  030798  有未读信息吗点按两次即可激活           这个好消息  030799           丫鸭梦想家         关上丫鸭梦想家  030800       我要一口一口吃掉你           我要吃掉你  130801       你妈妈叫什么名字啊        我妈妈叫什么名字  0[30802 rows x 3 columns]>
 #报错:ParserError: Error tokenizing data. C error: Expected 1 fields in line 28591, saw 2 #解决办法:退出 error_bad_lines=False #如呈现报错是BQ数据集导致的 train = pd.read_csv('/home/aistudio/train.txt',sep = '\t',header=None,error_bad_lines=False)train.info# train.head()<bound method DataFrame.info of                          0                1  20         喜爱打篮球的男生喜爱什么样的女生  爱打篮球的男生喜爱什么样的女生  11             我手机丢了,我想换个手机      我想买个新手机,求举荐  12                 大家感觉她难看吗       大家感觉跑男难看吗?  03                求秋色之空漫画选集        求秋色之空选集漫画  14       早晨睡觉带着耳机听音乐有什么坏处吗?     孕妇能够戴耳机听音乐吗?  0...                    ...              ... ..555335         手机画质不分明了怎么办        手机画质含糊怎么办  1555336               我条件不行         我问一下都不行吗  0555337               看我帅不帅          请问我长得帅吗  1555338            什么本事最大成语   一个人本事很大打一成语的答案  0555339              手机铃声设置         设置手机电话铃声  0[555340 rows x 3 columns]>

3.模型训练预测

代码构造阐明:

├── model.py # 匹配模型组网├── data.py # 训练样本的数据读取、转换逻辑├── predict.py # 模型预测脚本,输入测试集的预测后果: 0,1└── train.py # 模型训练评估
!unset CUDA_VISIBLE_DEVICES!python -u -m paddle.distributed.launch --gpus "0" train.py \       --train_set train.txt \       --dev_set dev.txt \       --device gpu \       --eval_step 500 \       --save_step 1000 \       --save_dir ./checkpoints \       --train_batch_size 128 \       --learning_rate 2E-5 \       --rdrop_coef 0.0 \       --epochs 3 \       --warmup_proportion 0.1# 可反对配置的参数:# train_set: 训练集的文件。# dev_set:验证集数据文件。# rdrop_coef:可选,管制 R-Drop 策略正则化 KL-Loss 的系数;默认为 0.0, 即不应用 R-Drop 策略。# train_batch_size:可选,批处理大小,请联合显存状况进行调整,若呈现显存有余,请适当调低这一参数;默认为32。# learning_rate:可选,Fine-tune的最大学习率;默认为5e-5。# weight_decay:可选,管制正则项力度的参数,用于避免过拟合,默认为0.0。# epochs: 训练轮次,默认为3。# warmup_proption:可选,学习率 warmup 策略的比例,如果 0.1,则学习率会在前 10% 训练 step 的过程中从 0 缓缓增长到 learning_rate, 而后再迟缓衰减,默认为 0.0。# init_from_ckpt:可选,模型参数门路,热启动模型训练;默认为None。# seed:可选,随机种子,默认为1000。# device: 选用什么设施进行训练,可选cpu或gpu。如应用gpu训练则参数gpus指定GPU卡号。# 程序运行时将会主动进行训练,评估。同时训练过程中会主动保留模型在指定的save_dir中。

局部后果展现:

global step 12880, epoch: 3, batch: 4202, loss: 0.1993, ce_loss: 0.1993., kl_loss: 0.0000, accu: 0.9204, speed: 12.02 step/sglobal step 12890, epoch: 3, batch: 4212, loss: 0.2516, ce_loss: 0.2516., kl_loss: 0.0000, accu: 0.9202, speed: 12.56 step/sglobal step 12900, epoch: 3, batch: 4222, loss: 0.1872, ce_loss: 0.1872., kl_loss: 0.0000, accu: 0.9203, speed: 12.03 step/sglobal step 12910, epoch: 3, batch: 4232, loss: 0.1950, ce_loss: 0.1950., kl_loss: 0.0000, accu: 0.9206, speed: 12.16 step/sglobal step 12920, epoch: 3, batch: 4242, loss: 0.2245, ce_loss: 0.2245., kl_loss: 0.0000, accu: 0.9205, speed: 12.35 step/sglobal step 12930, epoch: 3, batch: 4252, loss: 0.2398, ce_loss: 0.2398., kl_loss: 0.0000, accu: 0.9205, speed: 12.20 step/sglobal step 12940, epoch: 3, batch: 4262, loss: 0.2234, ce_loss: 0.2234., kl_loss: 0.0000, accu: 0.9202, speed: 11.87 step/sglobal step 12950, epoch: 3, batch: 4272, loss: 0.3007, ce_loss: 0.3007., kl_loss: 0.0000, accu: 0.9202, speed: 11.91 step/sglobal step 12960, epoch: 3, batch: 4282, loss: 0.3511, ce_loss: 0.3511., kl_loss: 0.0000, accu: 0.9202, speed: 11.91 step/sglobal step 12970, epoch: 3, batch: 4292, loss: 0.1860, ce_loss: 0.1860., kl_loss: 0.0000, accu: 0.9205, speed: 11.51 step/sglobal step 12980, epoch: 3, batch: 4302, loss: 0.1380, ce_loss: 0.1380., kl_loss: 0.0000, accu: 0.9204, speed: 11.80 step/sglobal step 12990, epoch: 3, batch: 4312, loss: 0.1749, ce_loss: 0.1749., kl_loss: 0.0000, accu: 0.9203, speed: 11.86 step/sglobal step 13000, epoch: 3, batch: 4322, loss: 0.1800, ce_loss: 0.1800., kl_loss: 0.0000, accu: 0.9204, speed: 11.89 step/sdev_loss: 0.33451, accuracy: 0.87163, total_num:30802

训练过程中每一次在验证集上进行评估之后,程序会依据验证集的评估指标是否优于之前最优的模型指标来决定是否存储以后模型,如果优于之前最优的验证集指标则会存储以后模型,否则则不存储,因而训练过程完结之后,模型存储门路下 step 数最大的模型则对应验证集指标最高的模型, 个别咱们抉择验证集指标最高的模型进行预测。

checkpoints/├── model_10000│   ├── model_state.pdparams│   ├── tokenizer_config.json│   └── vocab.txt└── ...
# 训练实现后,在指定的 checkpoints 门路下会主动存储在验证集评估指标最高的模型,运行如下命令开始生成预测后果:!unset CUDA_VISIBLE_DEVICES!python -u \    predict.py \    --device gpu \    --params_path "./checkpoints_new2/model_14600/model_state.pdparams" \    --batch_size 128 \    --input_file "/home/aistudio/dataset/test.tsv" \    --result_file "predict_result1"

局部后果展现:

0110000001

4.总结

4.1基线评测成果

本我的项目别离基于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 acclearning_rateepochswarmup_proportion
ernie-1.0-base0.086.9676.2077.505E-550
bert-base-chinese0.086.9376.9077.605E-550
ernie-gram-zh0.087.6680.8081.205E-550
ernie-gram-zh0.187.9180.2080.805E-550
ernie-gram-zh0.287.4780.1081.005E-550

4.2 最终后果

模型rdrop_coefdev acctestacclearning_rateepochswarmup_proportion
ernie-gram-zh087.1673.562E-530.1
ernie-gram-zh0.0587.8475.985E-550.1
ernie-gram-zh0.0587.2175.925E-550

第一次后果:

发现问题:1.数据集切割 2.模型欠拟合 3.超参数调优(epochs、rdrop_coef、warmup_proption、weight_decay)等进行改良

第二次后果:

依据上表仅简略对参数和数据集进行重新组合失去的成果。能够显著看出模型晋升空间有很大,最次要起因是训练轮数以及数据集调配导致模型泛化能欠佳,须要大家进行粗疏调优

4.3 相干倡议

举荐:

能够理解一些可解释学习相干常识,找出badcase,对模型进一步优化。如下图:

能够看到榜单上后果都是90+,这里我狐疑是测试数据标注后泄露导致,在同散布的测试集上评测模型的好坏,这种评测形式可能夸张了模型能力,并且不足对模型鲁棒性的细粒度优劣势评估。

如有谬误还请斧正。

5.特定畛域常识图谱(DKG)交融计划举荐(重点!)

在后面技术常识下能够看看后续的理论业务落地计划和学术计划

对于图神经网络的常识交融技术学习参考上面链接:[PGL图学习我的项目合集&数据集分享&技术演绎业务落地技巧[系列十]](https://aistudio.baidu.com/ai...)

从入门常识到经典图算法以及进阶图算法等,自行查阅食用!

文章篇幅无限请参考专栏按需查阅:NLP常识图谱相干技术业务落地计划和码源

5.1特定畛域常识图谱常识交融计划(实体对齐):优酷畛域常识图谱为例

计划链接:https://blog.csdn.net/sinat_39620217/article/details/128614951

5.2特定畛域常识图谱常识交融计划(实体对齐):娱乐常识图谱构建之人物实体对齐

计划链接:https://blog.csdn.net/sinat_39620217/article/details/128673963

5.3特定畛域常识图谱常识交融计划(实体对齐):商品常识图谱技术实战

计划链接:https://blog.csdn.net/sinat_39620217/article/details/128674429

5.4特定畛域常识图谱常识交融计划(实体对齐):基于图神经网络的商品异构实体表征摸索

计划链接:https://blog.csdn.net/sinat_39620217/article/details/128674929

5.5特定畛域常识图谱常识交融计划(实体对齐)论文合集

计划链接:https://blog.csdn.net/sinat_39620217/article/details/128675199

论文材料链接:两份内容不雷同,且依照序号从小到大重要性顺次递加

常识图谱实体对齐材料论文参考(PDF)+实体对齐计划+特定畛域常识图谱常识交融计划(实体对齐)

常识图谱实体对齐材料论文参考(CAJ)+实体对齐计划+特定畛域常识图谱常识交融计划(实体对齐)

5.6常识交融算法测试计划(常识生产品质保障)

计划链接:https://blog.csdn.net/sinat_39620217/article/details/128675698