【Ditto】Deep Entity Matching with Pre-Trained Language Models

ditto项目地址
文章地址
ditto的colab代码示例

摘要

本文提出了一种基于预训练Transformer语言模型的实体匹配系统。实验表明,在大型文本语料库上预训练的语言模型(如BERT、DistilBERT或RoBERTa)的直接应用已经显著提高了匹配质量,并超过了之前最好的表现,在基准数据集上 f 1 s c o r e f_{1} score f1score提升了高达29%。文中还提出了三种优化技术来进一步提高Ditto的匹配能力。另外还发现ditto最多用以前一半的标记数据就可以实现以前的SOTA结果。最后文章证明了Ditto在现实世界大规模实体匹配任务中的有效性:在匹配由789K和412K记录组成的两个公司数据集时,Ditto获得了96.5%的 f 1 s c o r e f_{1} score f1score

ditto模型

Ditto的模型框架

Ditto的输入

对每个实体元组
在这里插入图片描述
序列化结果为
在这里插入图片描述
例如:在这里插入图片描述
序列化结果:
[COL] title [VAL] instant immers spanish dlux 2 [COL] manf./modelno [VAL] NULL [COL] price [VAL] 36.11
对于候选实体对,序列化结果为:
在这里插入图片描述
[CLS]是BERT将序列对编码为768维向量所需的特殊标记,该向量将送到全连接层中进行分类。
这里的全连接层指ditto模型中特定于任务的微调结构(Bert模型的微调部分)的一部分,它在语言模型之后。ditto模型的微调结构(Task-specific)包括一个简单的全连接层和一个用于二元分类的softmax输出层

Ditto的优化
1.引入领域知识(Inject Domain-Knowledge)

① 标记分类的重要字段(Span typing)
首先利用命名实体识别(NER)识别输入序列 s e r i a l i z e ( e , e ′ ) serialize(e,{e}') serialize(e,e)中的关键标签,并输出起始/结束位置的index和规范化的token名。利用该结果对序列重新序列化,加入特殊标签。
例如:输入序列属性电话号码中的后四位很重要,那么就将”(866) 246-6453”修改为”(866) 246-[LAST]6453[/LAST]”
如果序列对中的两个序列都有该标签,Ditto可以将两个内容对齐进行匹配判断,从而不必考虑其他属性、属性值。
② 字段标准化(Span normalization)
Ditto设定规则并基于规则对语法上不同但等效的字段重写为同一字符串。
例如:“VLDB joural”和“VLDBJ”都写成VLDBJ;整数都不带逗号;小数部分都保留两位…

2.概括(Summarization)

对长字段进行概括。利用TF-IDF提取重要信息,限制最大长度。

3.数据增强

① EM的数据增强操作
删除某一字段、打乱某一字段,删除某一属性(包括属性名和属性值)、打乱属性顺序(属性名和属性值)、交换两个实体顺序
在这里插入图片描述
除了扩大了训练集,删除某一字段、打乱某一字段、删除某一属性可以训练模型去关注其他属性、字段;打乱属性顺序使判断不依赖于属性顺序;交换两个实体顺序符合对称性。
② MixDA
①中的操作有可能直接改变了匹配结果,或删除操作执行之后剩下的都是无用消息。使用MixDA技术使得得到的训练样本介于原始样本和①操作之间:
由于LM被调用了两次,使用MixDA进行扩充会减慢训练时间。但预测(match步骤)的时间不受影响(预测时不使用MixDA)。

  1. 从带超参数α∈ [0,1](例如实验中取得0.8)的β分布λ~β(α,α)中随机取样λ
  2. 用LM(s)表示序列s的LM输出,进行以下操作:在这里插入图片描述
    也就是说, L M ( s ′ ′ ) LM\left ({s}'' \right ) LM(s′′)是s和数据增强结果 s ′ = a u g m e n t ( s , o ) {s}'=augment\left ( s,o \right ) s=augment(s,o)的LM输出的凸插值;
  3. 通过将 L M ( s ′ ′ ) LM\left ({s}'' \right ) LM(s′′)输入到网络的其余部分并反向传播来训练模型。反向传播同时更新LM和线性层的参数。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值