特定畛域常识图谱交融计划:文本匹配算法(Simnet、Simcse、Diffcse)
本我的项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5423713?contributionType=1
文本匹配工作在自然语言解决中是十分重要的根底工作之一,个别钻研两段文本之间的关系。有很多利用场景;如信息检索、问答零碎、智能对话、文本甄别、智能举荐、文本数据去重、文本类似度计算、自然语言推理、问答零碎、信息检索等,但文本匹配或者说自然语言解决依然存在很多难点。这些自然语言解决工作在很大水平上都能够形象成文本匹配问题,比方信息检索能够归结为搜索词和文档资源的匹配,问答零碎能够归结为问题和候选答案的匹配,复述问题能够归结为两个同义句的匹配。
0.前言:特定畛域常识图谱交融计划
本我的项目次要围绕着特定畛域常识图谱(Domain-specific KnowledgeGraph:DKG)交融计划:文本匹配算法、常识交融学术界计划、常识交融业界落地计划、算法测评KG生产品质保障解说了文本匹配算法的综述,从经典的传统模型到孪生神经网络“双塔模型”再到预训练模型以及有监督无监督联结模型,期间也波及了近几年前沿的比照学习模型,之后提出了文本匹配技巧晋升计划,最终给出了DKG的落地计划。这边次要以原理解说和技术计划论述为主,之后会缓缓把我的项目开源进去,一起共建KG,从常识抽取到常识交融、常识推理、品质评估等争取走通残缺的流程。
0.1 具体细节参考第一篇我的项目:特定畛域常识图谱交融计划:技术常识前置【一】-文本匹配算法
https://aistudio.baidu.com/aistudio/projectdetail/5398069?contributionType=1
0.2 特定畛域常识图谱(Domain-specific KnowledgeGraph:DKG)交融计划(重点!)
在后面技术常识下能够看看后续的理论业务落地计划和学术计划
对于图神经网络的常识交融技术学习参考上面链接:[PGL图学习我的项目合集&数据集分享&技术演绎业务落地技巧[系列十]](https://aistudio.baidu.com/ai...)
从入门常识到经典图算法以及进阶图算法等,自行查阅食用!
文章篇幅无限请参考专栏按需查阅:NLP常识图谱相干技术业务落地计划和码源
1.特定畛域常识图谱常识交融计划(实体对齐):优酷畛域常识图谱为例
计划链接:https://blog.csdn.net/sinat_39620217/article/details/128614951
2.特定畛域常识图谱常识交融计划(实体对齐):娱乐常识图谱构建之人物实体对齐
计划链接:https://blog.csdn.net/sinat_39620217/article/details/128673963
3.特定畛域常识图谱常识交融计划(实体对齐):商品常识图谱技术实战
计划链接:https://blog.csdn.net/sinat_39620217/article/details/128674429
4. 特定畛域常识图谱常识交融计划(实体对齐):基于图神经网络的商品异构实体表征摸索
计划链接:https://blog.csdn.net/sinat_39620217/article/details/128674929
5.特定畛域常识图谱常识交融计划(实体对齐)论文合集
计划链接:https://blog.csdn.net/sinat_39620217/article/details/128675199
论文材料链接:两份内容不雷同,且依照序号从小到大重要性顺次递加
常识图谱实体对齐材料论文参考(PDF)+实体对齐计划+特定畛域常识图谱常识交融计划(实体对齐)
常识图谱实体对齐材料论文参考(CAJ)+实体对齐计划+特定畛域常识图谱常识交融计划(实体对齐)
6.常识交融算法测试计划(常识生产品质保障)
计划链接:https://blog.csdn.net/sinat_39620217/article/details/128675698
1.传统深度模型:SimNet
短文本语义匹配(SimilarityNet, SimNet)是一个计算短文本类似度的框架,能够依据用户输出的两个文本,计算出类似度得分。 SimNet框架次要包含BOW、CNN、RNN、MMDNN等外围网络结构模式,提供语义类似度计算训练和预测框架, 实用于信息检索、新闻举荐、智能客服等多个利用场景解决语义匹配问题。
模型简介:
通过调用Seq2Vec中内置的模型进行序列建模,实现句子的向量示意。蕴含最简略的词袋模型和一系列经典的RNN类模型。
详情能够查看SimNet文件下的encoder文件 or 参考:https://github.com/PaddlePadd...
__all__ = ["BoWEncoder", "CNNEncoder", "GRUEncoder", "LSTMEncoder", "RNNEncoder", "TCNEncoder"]
模型 | 模型介绍 |
---|---|
BOW(Bag Of Words) | 非序列模型,将句子示意为其所蕴含词的向量的加和 |
CNN | 序列模型,应用卷积操作,提取部分区域地特色 |
GRU(Gated Recurrent Unit) | 序列模型,可能较好地解决序列文本中长距离依赖的问题 |
LSTM(Long Short Term Memory) | 序列模型,可能较好地解决序列文本中长距离依赖的问题 |
Temporal Convolutional Networks (TCN) | 序列模型,可能更好地解决序列文本中长距离依赖的问题 |
1.1 TCN:工夫卷积网络
Temporal Convolutional Networks (TCN)工夫卷积网络,18年提出的时序卷积神经网络模型用来解决工夫序列预测的算法。其中,时序问题建模通常采纳RNN循环神经网络及其相干变种,比方LSTM、GRU等,这里将卷积神经网络通过收缩卷积达到抓取长时依赖信息的成果,TCN在一些工作上甚至能超过RNN相干模型。
作为一个新的序列剖析 model 它的特点次要有两个:
- 其卷积网络层层之间是有因果关系的,意味着不会有“漏接”的历史信息或是将来数据的状况产生,即使 LSTM 它有记忆门,也无奈完完全全的记得所有的历史信息,更何况要是该信息无用了就会逐步被忘记。
- 这个 model 的架构能够伸缩自如的调整成任何长度,并能够依据输入端须要几个接口就 mapping 成对应的样子,这点和 RNN 的框架意思雷同,十分的灵便。
论文链接:https://arxiv.org/pdf/1803.01271.pdf
github链接:https://github.com/LOCUSLAB/tcn
时序问题的建模大家个别习惯性的采纳循环神经网络(RNN)来建模,这是因为RNN天生的循环自回归的构造是对工夫序列的很好的示意。传统的卷积神经网络个别认为不太适宜时序问题的建模,这次要因为其卷积核大小的限度,不能很好的抓取长时的依赖信息。 然而最近也有很多的工作显示,特定的卷积神经网络构造也能够达到很好的成果,比方Goolgle提出的用来做语音合成的wavenet,Facebook提出的用来做翻译的卷积神经网络。这就带来一个问题,用卷积来做神经网络到底是只实用于特定的畛域还是一种普适的模型? 本文就带着这个问题,将一种非凡的卷积神经网络——时序卷积网络(Temporal convolutional network, TCN)与多种RNN构造绝对比,发现在多种工作上TCN都能达到甚至超过RNN模型。
1.1.1 因果卷积(Causal Convolution)
因果卷积能够用上图直观示意。 即对于上一层t时刻的值,只依赖于下一层t时刻及其之前的值。和传统的卷积神经网络的不同之处在于,因果卷积不能看到将来的数据,它是单向的构造,不是双向的。也就是说只有有了后面的因才有前面的果,是一种严格的工夫束缚模型,因而被成为因果卷积。
1.1.2 收缩卷积(Dilated Convolution)
单纯的因果卷积还是存在传统卷积神经网络的问题,即对工夫的建模长度受限于卷积核大小的,如果要想抓去更长的依赖关系,就须要线性的重叠很多的层。为了解决这个问题,钻研人员提出了收缩卷积。如下图a所示。
1.1.3 残差链接(Residual Connections)
上图b、c所示
残差链接被证实是训练深层网络的无效办法,它使得网络能够以跨层的形式传递信息。本文构建了一个残差块来代替一层的卷积。如上图所示,一个残差块蕴含两层的卷积和非线性映射,在每层中还退出了WeightNorm和Dropout来正则化网络。
1.1.4 小结剖析
总体来讲,TCN模型上的翻新并不是很大,因果卷积和扩大卷积也并不是本论文提出来,本文次要是将TCN的构造梳理了一下,相比于wavenet中的构造,去掉了门机制,退出了残差构造,并在很多的序列问题上进行了试验。试验成果如下:
在多个工作上,都比规范的LSTM、GRU等成果好。
其余仿真后果:
长处 :
(1)并行性。当给定一个句子时,TCN能够将句子并行的解决,而不须要像RNN那样程序的解决。(2)灵便的感触野。TCN的感触野的大小受层数、卷积核大小、扩张系数等决定。能够依据不同的工作不同的个性灵便定制。(3)稳固的梯度。RNN常常存在梯度隐没和梯度爆炸的问题,这次要是由不同时间段上共用参数导致的,和传统卷积神经网络一样,TCN不太存在梯度隐没和爆炸问题。(4)内存更低。RNN在应用时须要将每步的信息都保留下来,这会占据大量的内存,TCN在一层外面卷积核是共享的,内存应用更低。
毛病:
(1)TCN 在迁徙学习方面可能没有那么强的适应能力。这是因为在不同的畛域,模型预测所须要的历史信息量可能是不同的。因而,在将一个模型从一个对记忆信息需求量少的问题迁徙到一个须要更长记忆的问题上时,TCN 可能会体现得很差,因为其感触野不够大。(2)论文中形容的TCN还是一种单向的构造,在语音辨认和语音合成等工作上,纯单向的构造还是相当有用的。然而在文本中大多应用双向的构造,当然将TCN也很容易扩大成双向的构造,不应用因果卷积,应用传统的卷积构造即可。(3)TCN毕竟是卷积神经网络的变种,尽管应用扩大卷积能够扩充感触野,然而依然受到限制,相比于Transformer那种能够任意长度的相干信息都能够抓取到的个性还是差了点。TCN在文本中的利用还有待测验。
参考链接:
https://blog.csdn.net/qq_27586341/article/details/90751794
1.2 模型训练与预测
1.2.1 数据筹备
代码阐明:
simnet/├── model.py # 模型组网├── predict.py # 模型预测├── utils.py # 数据处理工具├── train.py # 训练模型主程序入口,包含训练、评估
程序运行时将会主动进行训练,评估,测试。同时训练过程中会主动保留模型在指定的save_dir中。 如:
checkpoints_simnet_lstm/├── 0.pdopt├── 0.pdparams├── 1.pdopt├── 1.pdparams├── ...└── final.pdparams
NOTE: 如需复原模型训练,则init_from_ckpt只需指定到文件名即可,不须要增加文件尾缀。如--init_from_ckpt=checkpoints/0即可,程序会主动加载模型参数checkpoints/0.pdparams,也会主动加载优化器状态checkpoints/0.pdopt。
局部后果展现:
step 1790/1866 - loss: 0.2604 - acc: 0.9097 - 28ms/stepstep 1800/1866 - loss: 0.2853 - acc: 0.9096 - 28ms/stepstep 1810/1866 - loss: 0.3007 - acc: 0.9094 - 28ms/stepstep 1820/1866 - loss: 0.2607 - acc: 0.9094 - 28ms/stepstep 1830/1866 - loss: 0.3522 - acc: 0.9093 - 28ms/stepstep 1840/1866 - loss: 0.2478 - acc: 0.9092 - 28ms/stepstep 1850/1866 - loss: 0.2186 - acc: 0.9092 - 28ms/stepstep 1860/1866 - loss: 0.1786 - acc: 0.9091 - 28ms/stepstep 1866/1866 - loss: 0.2358 - acc: 0.9091 - 28ms/stepsave checkpoint at /home/aistudio/SimNet/checkpoints_simnet_lstm/4Eval begin...step 10/69 - loss: 0.5209 - acc: 0.7336 - 31ms/stepstep 20/69 - loss: 0.9080 - acc: 0.7352 - 34ms/stepstep 30/69 - loss: 0.9188 - acc: 0.7352 - 34ms/stepstep 40/69 - loss: 0.9328 - acc: 0.7393 - 34ms/stepstep 50/69 - loss: 0.5988 - acc: 0.7398 - 32ms/stepstep 60/69 - loss: 0.5592 - acc: 0.7367 - 32ms/stepstep 69/69 - loss: 0.6573 - acc: 0.7384 - 30ms/step
1.2.3 模型预测
启动预测
测试案例能够在output文件下test_1中有125000待预测后果,
{"query": "谁有狂三这张高清的", "title": "这张高清图,谁有", "label": ""}{"query": "英雄联盟什么英雄最好", "title": "英雄联盟最好英雄是什么", "label": ""}{"query": "这是什么意思,被蹭网吗", "title": "我也是醉了,这是什么意思", "label": ""}{"query": "当初有什么动画片难看呢?", "title": "当初有什么难看的动画片吗?", "label": ""}{"query": "请问晶达电子厂当初的工资待遇怎么样要求有哪些", "title": "三星电子厂工资待遇怎么样啊", "label": ""}{"query": "文章真的爱姚笛吗", "title": "姚笛真的被文章干了吗", "label": ""}{"query": "送本人做的闺蜜什么生日礼物好", "title": "送闺蜜什么生日礼物好", "label": ""}{"query": "近期上映的电影", "title": "近期上映的电影有哪些", "label": ""}{"query": "求英雄联盟大神带?", "title": "英雄联盟,求大神带~", "label": ""}{"query": "如加上什么部首", "title": "给东加上部首是什么字?", "label": ""}{"query": "杭州哪里好玩", "title": "杭州哪里好玩点", "label": ""}{"query": "这是什么乌龟值钱吗", "title": "这是什么乌龟!值钱嘛?", "label": ""}{"query": "心各有所属是什么意思?", "title": "心有所属是什么意思?", "label": ""}{"query": "什么货色越热爬得越高", "title": "什么货色越热爬得很高", "label": ""}{"query": "世界杯哪位球员进球最多", "title": "世界杯单界进球最多是哪位球员", "label": ""}{"query": "韭菜多吃什么益处", "title": "多吃韭菜有什么益处", "label": ""}{"query": "云赚钱怎么样", "title": "怎么能力赚钱", "label": ""}{"query": "何炅结婚了嘛", "title": "何炅结婚了么", "label": ""}{"query": "长的清爽是什么意思", "title": "小清爽的意思是什么", "label": ""}
如果须要批量预测自行批改代码,data局部。
1.3 模型后果比照
| 模型 | train acc|dev acc |
| -------- | -------- | -------- |
| BoW | 0.8836 | 0.7297 |
|CNN | 0.9517 |0.7352 |
| GRU | 0.9124 | 0.7489 |
| LSTM | 0.9091 | 0.7384 |
| TCN | ---- | ---- |
| RNN | ---- | ---- |
对于RNN、TCN自行批改model文件即可,参考/home/aistudio/SimNet/encoder.py 批改/home/aistudio/SimNet/model.py
CNN:
- Data: ['淘宝上怎么用信用卡分期付款', '淘宝怎么分期付款,没有信用卡?'] Label: similar
- Data: ['石榴是什么时候成熟的?', '成熟的石榴像什么?'] Label: similar
- Data: ['为什么坐车玩手机会晕车', '为什么我坐车玩手机不晕车'] Label: similar
BOW:
- Data: ['淘宝上怎么用信用卡分期付款', '淘宝怎么分期付款,没有信用卡?'] Label: similar
- Data: ['石榴是什么时候成熟的?', '成熟的石榴像什么?'] Label: dissimilar
- Data: ['为什么坐车玩手机会晕车', '为什么我坐车玩手机不晕车'] Label: similar
GRU:
- Data: ['淘宝上怎么用信用卡分期付款', '淘宝怎么分期付款,没有信用卡?'] Label: similar
- Data: ['石榴是什么时候成熟的?', '成熟的石榴像什么?'] Label: dissimilar
- Data: ['为什么坐车玩手机会晕车', '为什么我坐车玩手机不晕车'] Label: similar
LSTM:
- Data: ['淘宝上怎么用信用卡分期付款', '淘宝怎么分期付款,没有信用卡?'] Label: dissimilar
- Data: ['石榴是什么时候成熟的?', '成熟的石榴像什么?'] Label: dissimilar
- Data: ['为什么坐车玩手机会晕车', '为什么我坐车玩手机不晕车'] Label: similar
抽样后果还是不言而喻的,越新的算法个别越优越。
1.4篇幅无限更多程序代码请参考:
本我的项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5423713?contributionType=1
2.无监督语义匹配模型 SimCSE
SimCSE 模型适宜不足监督数据,然而又有大量无监督数据的匹配和检索场景。
相干原理参考我的项目:https://aistudio.baidu.com/aistudio/projectdetail/5398069?contributionType=1 第4.2.4节 SimSCE 2021.04
上面将别离应用 LCQMC、BQ_Corpus、STS-B、ATEC 这 4 个中文语义匹配数据集的训练集作为无监督训练集(仅应用文本信息,不应用 Label),并且在各自数据集上的验证集上进行成果评估,评估指标采纳 SimCSE 论文中采纳的 Spearman 相关系数,Spearman 相关系数越高,示意模型成果越好. 压缩包名称:senteval_cn
斯皮尔曼相关系数及其显著性测验:
斯皮尔曼相关系数(spearman)
- 代码构造阐明
simcse/├── model.py # SimCSE 模型组网代码├── data.py # 无监督语义匹配训练数据、测试数据的读取逻辑├── predict.py # 基于训练好的无监督语义匹配模型计算文本 Pair 类似度├── train.sh # 模型训练的脚本└── train.py # SimCSE 模型训练、评估逻辑
2.1 模型训练与预测(LCQMC)
咱们以中文文本匹配公开数据集 LCQMC 为示例数据集, 仅应用 LCQMC 的文本数据结构生成了无监督的训练数据。能够运行如下命令,开始模型训练并且在 LCQMC 的验证集上进行 Spearman 相关系数评估。
%cd SimCSE!unset CUDA_VISIBLE_DEVICES!python -u -m paddle.distributed.launch --gpus '0' \ train.py \ --device gpu \ --save_dir ./checkpoints_simcse/ \ --batch_size 64 \ --learning_rate 5E-5 \ --epochs 1 \ --save_steps 100 \ --eval_steps 100 \ --max_seq_length 64 \ --dropout 0.3 \ --train_set_file "/home/aistudio/LCQMC/train.txt" \ --test_set_file "/home/aistudio/LCQMC/dev.tsv"
局部后果展现:
[2023-02-01 10:22:15,087] [ INFO] - tokenizer config file saved in ./checkpoints_simcse/model_1900/tokenizer_config.json[2023-02-01 10:22:15,088] [ INFO] - Special tokens file saved in ./checkpoints_simcse/model_1900/special_tokens_map.jsonglobal step 1910, epoch: 1, batch: 1910, loss: 0.03640, speed: 0.95 step/sglobal step 1920, epoch: 1, batch: 1920, loss: 0.03480, speed: 6.70 step/sglobal step 1930, epoch: 1, batch: 1930, loss: 0.00650, speed: 7.08 step/sglobal step 1940, epoch: 1, batch: 1940, loss: 0.00571, speed: 6.75 step/sglobal step 1950, epoch: 1, batch: 1950, loss: 0.00966, speed: 6.28 step/sglobal step 1960, epoch: 1, batch: 1960, loss: 0.01481, speed: 6.54 step/sglobal step 1970, epoch: 1, batch: 1970, loss: 0.00974, speed: 6.42 step/sglobal step 1980, epoch: 1, batch: 1980, loss: 0.03734, speed: 6.67 step/sglobal step 1990, epoch: 1, batch: 1990, loss: 0.00716, speed: 6.68 step/sglobal step 2000, epoch: 1, batch: 2000, loss: 0.01359, speed: 7.04 step/sglobal step: 2000, spearman_corr: 0.4231, total_num: 8802
配置的参数:
- infer_with_fc_pooler:可选,在预测阶段计算文本 embedding 示意的时候网络前向是否会过训练阶段最初一层的 fc; 倡议敞开模型成果最好。
- dup_rate: 可选,word reptition 的比例,默认是0.32,依据论文 Word Repetition 比例采纳 0.32 成果最佳。
- scale:可选,在计算 cross_entropy loss 之前对 cosine 类似度进行缩放的因子;默认为 20。
- dropout:可选,SimCSE 网络前向应用的 dropout 取值;默认 0.1。
- save_dir:可选,保留训练模型的目录;默认保留在当前目录checkpoints文件夹下。
- max_seq_length:可选,ERNIE-Gram 模型应用的最大序列长度,最大不能超过512, 若呈现显存有余,请适当调低这一参数;默认为128。
- batch_size:可选,批处理大小,请联合显存状况进行调整,若呈现显存有余,请适当调低这一参数;默认为32。
- learning_rate:可选,Fine-tune的最大学习率;默认为5e-5。
- weight_decay:可选,管制正则项力度的参数,用于避免过拟合,默认为0.0。
- epochs: 训练轮次,默认为1。
- 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中。 如:
checkpoints/├── model_100│ ├── model_state.pdparams│ ├── tokenizer_config.json│ └── vocab.txt└── ...
NOTE:如需复原模型训练,则能够设置init_from_ckpt, 如init_from_ckpt=checkpoints/model_100/model_state.pdparams。
咱们用 LCQMC 的测试集作为预测数据, 测试数据示例如下:
谁有狂三这张高清的 这张高清图,谁有英雄联盟什么英雄最好 英雄联盟最好英雄是什么这是什么意思,被蹭网吗 我也是醉了,这是什么意思当初有什么动画片难看呢? 当初有什么难看的动画片吗?请问晶达电子厂当初的工资待遇怎么样要求有哪些 三星电子厂工资待遇怎么样啊
2.2 评估成果
所有数据集可自行调整运行,超参数也可自行调优,上面展现局部后果:
- 中文语义匹配数据集成果
模型 | LCQMC | BQ_Corpus | STS-B | ATEC |
---|---|---|---|---|
SimCSE | 57.01 | 51.72 | 74.76 | 33.56 |
SimCSE + WR | 58.97 | 51.58 | 78.32 | 33.73 |
- SimCSE + WR 策略在中文数据集训练的超参数设置如下:
数据集 | epoch | learning rate | dropout | dup rate |
---|---|---|---|---|
LCQMC | 1 | 5E-5 | 0.3 | 0.32 |
BQ_Corpus | 1 | 1E-5 | 0.3 | 0.32 |
STS-B | 8 | 5E-5 | 0.1 | 0.32 |
ATEC | 1 | 5E-5 | 0.3 | 0.32 |
3.无监督语义匹配模型 DiffCSE
相干原理参考我的项目:https://aistudio.baidu.com/aistudio/projectdetail/5398069?contributionType=1 第4.2.9节 DiffSCE 2022.04
相比于 SimCSE 模型,DiffCSE模型会更关注语句之间的差异性,具备准确的向量示意能力。DiffCSE 模型同样适宜不足监督数据,然而又有大量无监督数据的匹配和检索场景。
代码构造:
DiffCSE/├── model.py # DiffCSE 模型组网代码├── custom_ernie.py # 为适配 DiffCSE 模型,对ERNIE模型进行了局部批改├── data.py # 无监督语义匹配训练数据、测试数据的读取逻辑├── run_diffcse.py # 模型训练、评估、预测的主脚本├── utils.py # 包含一些罕用的工具式函数├── run_train.sh # 模型训练的脚本├── run_eval.sh # 模型评估的脚本└── run_infer.sh # 模型预测的脚本
3.1 模型训练与预测 (LCQMC)
默认应用无监督模式进行训练 DiffCSE,模型训练数据的数据样例如下所示,每行示意一条训练样本:
全年中央财政总收入3686.81亿元,比上年增长12.3%。“我对案情并不非常分明,所以没方法提出批评,倡议,只能心愿通过质询,要求检察院对此做出阐明。”他说。据调查结果显示:2015年微商行业总体市场规模达到1819.5亿元,预计2016年将达到3607.3亿元,增长率为98.3%。返回冈仁波齐须要办理目的地蕴含日喀则和阿里地区的边防证,外转沿途有一些补给点,可购买到干粮和饮料。
3.2 模型训练与预测 (STS-B数据集)
数据集以及相干指标参考:Chinese-STS-B数据集,共蕴含0到5的6个标签,数字越大示意文本对越类似。在数据处理过程中,将标签为5的文本对当作匹配文本对(标记为1),将标签为0-2的文本对当作不匹配文本对(标记为0)。
https://zhuanlan.zhihu.com/p/388680608
https://zhuanlan.zhihu.com/p/454173790
局部展现
一个戴着安全帽的男人在跳舞。 一个戴着安全帽的男人在跳舞。 5一个小孩在骑马。 孩子在骑马。 4一个女人在弹吉他。 一个人在弹吉他。 2一个女人在切洋葱。 一个人在切洋葱。 2一个女人在吹长笛。 一个人在吹长笛。 2一个男人在擦粉笔。 那人在擦粉笔。 5一个女人抱着一个男孩。 一个女人怀了她的孩子。 2女人剥土豆。 一个女人在剥土豆。 5人们在玩板球。 男人们在打板球。 3一个男人在弹吉他。 一个人在吹长笛。 1美洲狮在追熊。 一只美洲狮正在追赶一只熊。 5那人在弹吉他。 一个男人在弹吉他。 4一个男人在找货色。 一个女人在切货色。 0女孩对着麦克风唱歌。 这位女士对着麦克风唱歌。 2一个男人在爬绳子。 一个男人爬上一根绳子。 5小猫在吃货色。 小猫从盘子里吃货色。 4
评测指标:斯皮尔曼等级相关系数Spearman's rank correlation coefficient把句子对别离输出模型编码失去embedding对后,计算embedding对的余弦间隔。因为STS-B数据集是把句子对进行0~5的打分,所以评测指标采纳斯皮尔曼等级相关系数。
3.3评估成果
模型 | LCQMC | STS-B |
---|---|---|
Simcse | 58.97% | 74.58 |
Diffcse | 63.23% | 71.79(未调优) |
调优过程能够参考文章:
https://zhuanlan.zhihu.com/p/388680608
整体看出Diffcse优于Simcse
4. 总结
文本匹配工作在自然语言解决中是十分重要的根底工作之一,个别钻研两段文本之间的关系。有很多利用场景;如信息检索、问答零碎、智能对话、文本甄别、智能举荐、文本数据去重、文本类似度计算、自然语言推理、问答零碎、信息检索等,但文本匹配或者说自然语言解决依然存在很多难点。这些自然语言解决工作在很大水平上都能够形象成文本匹配问题,比方信息检索能够归结为搜索词和文档资源的匹配,问答零碎能够归结为问题和候选答案的匹配,复述问题能够归结为两个同义句的匹配。
本我的项目次要围绕着特定畛域常识图谱(Domain-specific KnowledgeGraph:DKG)交融计划:文本匹配算法、常识交融学术界计划、常识交融业界落地计划、算法测评KG生产品质保障解说了文本匹配算法的综述,从经典的传统模型到孪生神经网络“双塔模型”再到预训练模型以及有监督无监督联结模型,期间也波及了近几年前沿的比照学习模型,之后提出了文本匹配技巧晋升计划,最终给出了DKG的落地计划。这边次要以原理解说和技术计划论述为主,之后会缓缓把我的项目开源进去,一起共建KG,从常识抽取到常识交融、常识推理、品质评估等争取走通残缺的流程。
5.篇幅无限更多程序代码请参考:
本我的项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5423713?contributionType=1