背景介绍
实体链指是指对于给定的一个文本(如搜寻 Query、微博、对话内容、文章、视频、图片的题目等),将其中的实体与给定知识库中对应的实体进行关联。实体链指个别有两种工作设计形式:Pipeline 式和端到端式。
赛题阐明
百度飞桨举办的千言数据集:面向中文短文本的实体链指工作给出了中文短文本、短文本中的 mention 以及对应地位,须要预测文本中 mention 对应实体在给定知识库中的 id,如果在知识库中没有对应实体即 NIL,须要再给出实体类别。
训练集数据共 7W 条,query 均匀长度 22,蕴含 26W 个 mention,每个 mention 有 6.3 个候选实体,被链接到的 NIL 实体有 3W 个,其中 1.6W 在知识库中有同名实体。能够发现有三个特点:
- 文本长度短,上下文信息无限
- 候选实体数量多
- NIL 数量多,占比超过了 10%
模型计划
这次较量曾经给出了 mention 信息,咱们只须要思考两个工作:实体消歧和 NIL 分类。工作的要害有以下几点:如何设计输出样本、如何设计模型构造、NIL 实体如何与其余实体一起排序、如何开掘更丰盛和多维度的特色等。
样本结构
咱们选取了 ERNIE、RoBERTa 等预训练语言模型进行语义特色抽取,将须要链指的文本和实体形容信息用 [SEP] 符号拼接,作为模型的输出。
query 样本结构:query 样本输出时须要将 mention 的地位信息传入模型,让模型能判断 mention 在 query 中的具体位置,例如:“海绵宝宝:海绵宝宝和派大星致力工作,两人来到高速公路上!”中呈现了两次海绵宝宝,别离链接到了动画片《海绵宝宝》和动画人物海绵宝宝,须要加以辨别。为了解决这一问题咱们通过引入标识符将地位信息传入,在 mention 两边退出对立的标识符“#”,样本如下:
实体形容样本结构:数据库中的实体蕴含了实体的规范说法 subject,实体的类型 type 和实体的一些相干 SPO 信息。结构样本时将 mention 字段和实体规范名用“-”拼接作为输出,强化规范名和 mention 是否雷同这一特色。实体类型是消歧重要的信息,咱们结构了“类型:实体类型”这种形容,提供实体类型信息,为了避免截断,将其放在实体规范名之后。SPO 信息只应用了属性值,这样能够使超过最大输出长度的样本数量缩小 35%。
统计特色样本结构:数据和特色决定了模型的上界,为了丰盛模型输出,将实体类型、实体长度、mention 长度、实体和 mention 的 Jaccard 类似度等特色进行 embedding 了之后,和模型输入的特征向量拼接。
模型构造
实体消歧实质上是对候选实体进行排序的过程,应用 query 和实体信息作为输出,对候选实体进行排序,给出候选实体分数,选出 TOP1 实体。在排序学习中,有三种常见模式 pointwise,pairwise 和 listwise,对于实体消歧这种只须要 TOP1 的排序工作,并不需要思考候选实体之间的顺关系,只思考全局相关性,因而咱们选取了 pointwise 办法。
实体分类工作和实体链指工作看起来没有间接分割,然而 Shuang Chen [2] 提出当能够预测出 mention 的类型时,消歧就相当容易。因而咱们设计了多任务模型框架,同时进行排序和分类,两个工作共享模型参数,一起训练,损失函数一起优化,通过共享排序工作和分类工作的信息,模型能够有更好的体现,多任务损失函数如下。
最终咱们模型构造如下,将 query 和实体形容拼接,输出预训练语言模型,将 CLS、mention 开始和完结地位的向量拼接作为特征向量。排序工作将特征向量输出全连贯层,而后通过 tanh 最终输入 [-1,1] 区间的分数,分数越高代表越有可能是指标实体。分类工作将特征向量输出全链接层,通过 softmax 层输入各个分类的得分。
模型优化
数据荡涤
基于相信学习数据清理:剖析数据集咱们发现,数据之中存在局部标注谬误,依据 Northcutt [6] 相信学习的思维,咱们在原始数据上用 n -flod 形式训练了 5 个模型,用这些模型预测原始训练集的标签,而后交融 5 个模型输入的标签作为实在标签,再从原始训练集中清理实在标签与原标签不统一的样本,依据教训清理的样本数量最好不大于 10%。
NIL 实体排序形式试验
实体消歧过程中 NIL 实体如何和其余实体一起排序,是独自作为一个分类工作,还是将 NIL 转换为特定类型的实体参加排序,针对这个问题,咱们设计了三种计划:
- 计划 1:只对知识库中存在的实体进行排序,当 top1 的 score 小于阈值时,认为是 NIL 实体;
- 计划 2:结构 NIL 实体样本“mention-mention, 类型: 未知类型”,例如:“英雄三国 - 英雄三国,类型:未知类型”,示意该实体是一个未知实体。预测和训练时,所有 mention 候选实体中减少一个未知实体,参加排序;
- 计划 3:将所有候选实体拼接,和 query 样本一起输出模型进行分类,判断是不是 NIL 实体,实践上这样能够带来更多全局信息。思考到训练速度,咱们先用 1)中的计划进行排序,而后将 top3 的实体形容拼接,训练一个分类模型。
反抗训练
反抗训练是指在模型的训练过程中构建反抗样本,参加模型训练的办法。失常训练过程中,如果梯度方向平缓,那么很小的扰动都会产生很大的影响。为了避免这种扰动,反抗训练在模型训练的过程中应用带扰动的反抗样本进行攻打,从而晋升模型的鲁棒性。咱们试验了 FGM 和 PGD 两种生成反抗样本的形式。
试验后果剖析
模型可解释性
在训练完模型后,咱们首先会想要晓得模型学到了哪些特色。C Guan [7] 提出了一种基于互信息的可视化办法,这种办法相较其余可视化办法,具备普适性和一贯性的特点,即解释指标有明确的意义,同时又能比拟神经元之间、层与层之间和模型与模型之间的差别。
为了理解模型到底关注哪些输出特色,咱们基于 Paddle2.0 复现了该算法,对各个词的重要水平进行了可视化,色彩越深重要水平越高。通过可视化发现,模型偏向于关注实体的类型和用来辨别实体的片段,例如示例 1 吃得慢、食物、吃法、火腿肠,示例 2 中的珊迪、海绵宝宝、开关电源品牌。示例 3 种的人物、种族、梦三国等,能够看到多任务模型关注的特色都是对消歧有帮忙的。
试验后果剖析
相干试验中参数配置如下:ERNIE 和 BERT 的模型 batch size 为 64,初始学习率为 5e-5,max_seq_length 为 256,RoBERTa-Large 的模型 batch size 为 32,初始学习率为 1e-5,max_seq_length 为 256,均采纳了基于指数衰减的学习率衰减策略。
比照不同预训练模型和置信度学习的后果,发现模型成果 RoBERTa-Large > ERNIE+ 置信度学习 >ERNIE>BERT。能够看到 ERNIE 专门针对中文数据进行了工作优化,的确比 BERT 的成果更好,然而 ERNIE(12 层)和 RoBERTa-Large(24 层)的比照阐明了一寸长一寸强,更多的参数能够有更好的体现。
比照单任务和多任务时,咱们应用了基于 ERNIE 的模型。通过比照多任务和单任务的模型成果,咱们发现多任务岂但流程简略,而且成果也比单任务联结好。排序时模型须要借助类型信息判断 mention 与候选实体是否统一;NIL 分类时能学习到知识库中其余候选实体的信息,所以两个工作共享参数能够使模型提取到两个工作的共性,晋升模型成果。
从模型 1、2、3 能够看到反抗学习是一种通用的模型优化办法,在各种模型上都有显著晋升,然而 FGM 和最强一阶反抗形式 PGD 实体链指工作上差距并不显著。
NIL 不同形式参加排序的试验中,咱们发现应用结构 NIL 样本参加匹配和对排序 TOP1 的 score 卡阈值这两种形式后果差异不大,AUC 别离为 0.97 和 0.96,训练 NIL 分类器的 AUC 仅为 0.94,猜想是因为对候选实体进行 top3 采样时,曾经有了误差积攒。
通过将体现好的模型进行交融咱们在 dev 测试集上的 F1 达到了 88.7,在 A 榜数据集 F1 达到 88.63,在 B 榜数据集 F1 达到 91.20,最终排名第二。
小布助手的摸索
小布助手每天解决千万级别的用户问题,其中波及实体词的 query 高达 30%。这些由不同人收回的实在对话里,既蕴含千人千面的主观表白,更蕴含大量的翻新词汇,多义词,同义词,同时也常常会面对“李白是谁”、“我要听《李白》”这类 mention 有歧义的问题。
小布助手的技术积攒不仅帮忙咱们在较量中名落孙山,而且曾经帮用户解决“哥哥的代表作”、“李白是谁”、“我要听《李白》”等常见而语音助手又极易误会的用户问题。黑格尔说过:人是靠思维站立起来的。思考赋予人类尊严,驱动文化一直向前。小布助手汇聚有数背地英雄的思维,也在默默致力,而后用乏味贴心有灵魂惊艳所有人。
赛后感想
工欲善其事,必先利其器,本次较量应用了飞桨 2.0 框架进行训练,动态图模式下程序可即时执行并输入后果,进步了编码效率。借助百度的 PaddleNLP 工具包,能够无缝切换 ERNIE、BRART、RoBERTa 等预训练模型,非常适合较量时疾速试验。
PaddleNLP 工具包链接:https://github.com/PaddlePadd…
这次较量的赛题也很值得摸索,实体消歧和分类两个工作如何有机联合,能够做很多尝试。一个实体链指工作就有形象成多种形式,足以见得兵无常势,水无常形,咱们在解决算法问题时,要跳出思维定势,尝试从不同的角度去形象问题,找到最佳的解决方案。
本我的项目链接:
除了实体链指工作,千言我的项目还有情感剖析、浏览了解、凋谢域对话、文本类似度、语义解析、机器同传、信息抽取等方向继续打榜中。
传送门:https://www.luge.ai/
参考文献
[1]Deep Joint Entity Disambiguation with Local Neural Attention. Octavian-Eugen Ganea, Thomas Hofmann.
[2]Improving Entity Linking by Modeling Latent Entity Type Information,Shuang Chen, Jinpeng Wang, Feng Jiang, Chin-Yew Lin.
[3]End-to-End Neural Entity Linking. Nikolaos Kolitsas, Octavian-Eugen Ganea, Thomas Hofmann.
[4] Improving Entity Linking by Modeling Latent Entity Type Information. Shuang Chen, Jinpeng Wang, Feng Jiang, Chin-Yew Lin.
[5]Towards Deep Learning Models Resistant to Adversarial Attacks. A Madry, A Makelov, L Schmidt, D Tsipras.
[6]Confident Learning: Estimating Uncertainty in Dataset Labels. Curtis G. Northcutt, Lu Jiang, Isaac L. Chuang.
[7]Towards a Deep and Unified Understanding of Deep Neural Models in NLP. Chaoyu Guan, Xiting Wang, Quanshi Zhang, Runjin Chen, Di He, Xing Xie.
作者介绍
樊乘源
OPPO 小布助手 NLP 工程师
负责对话和常识图谱相干工作,钻研方向包含用意分类、序列标注、关系抽取、实体链指等。