最近对于实体链接的一些认识

本文整理自知乎文章:https://zhuanlan.zhihu.com/p/100248426

任务定义

  • 实体链接就是把文本中的mention链接到知识图谱里的entity的任务。
  • 当一句话:乔丹是美国著名的篮球运动员。这句句子里面出现的实体有
    1. 人物:乔丹
    2. 国家:美国
    3. 运动:篮球
    4. 职业:运动员

Alt

  • 可以将句子中的mention对应到知识图谱内具体的三元组集合,则为实体链,简称EL

应用

Alt

  • 有KB的地方必然会出现EL,KB的意思是知识图谱库,比如中国最大的KB——CNDBpedia,必然会用到EL去完成以下的内容:
    1. 问答系统
    2. 文本分析:可以延伸出推荐系统
    3. 信息检索
    4. 扩充知识图谱

分类

  • 大体来说,EL的工作分为两类:
    1. End-to-End:先从文本中提取mention,找到对应的候选实体,然后进行消歧义,再映射到给定的KB中。
    2. Linking-Only:直接将text和mention作为输入,找到候选实体以及消歧义,映射至KB中。
  • 针对上面两个内容,有如下两个方法:
    1. Candidate Entity Generation:从mention出发,找到KB中所有可能的实体,组成候选实体集。
    2. Entity Disambiguation:从candidate entities中,选择最可能的实体作为预测实体。

具体的方法

  • Candidate Entity Generation ( CEG ) :

    • 网上都没有讲得太清楚,我的理解就是根据给定的文本,我要找出文本中的mention对应的具体的entity的类别,比如最开始给出的例子中的乔丹,一定是个人物、或者是个姓名,而不会是个球鞋的品牌。
    • 最重要的方法:Name Dictionary ( { mention: entity } )
    • 构建方法:
      1. Wikipedia
      2. 基于搜索引擎
      3. Heuristic Methods
      4. 人工标注,用户日志
    • 具体的方法还是要看EL的使用场景。比如百科问答或者是用文本的阅读增强,就需要用到Wikipedia和搜索引擎;如果是某个具体的行业领域,就需要通过一些启发式的方法、用户日志、网页爬取、人工标注的方法来构建Name Dictionary
  • Entity Disambiguation ( ED ) :(实体消歧)

    • 特征的类型

      • Context-Independent Features:
        • LinkCount : 知识库中某个提及m指向实体e的次数
        • Entity Attributes : Popularity、Type
      • Context-Dependent Features:
        • Textual Context: BOW(词袋), Concept Vector
        • Coherence Between Entities ( 实体一致性 ): WLM、PMI、Jaccard Distance
      • 其中:
        1. Jaccard Distance:与Jaccard Distance相关的另一个单词叫余弦距离,本来,在多维空间中,两个向量的方向越一致,则余弦值越小,比欧式距离更能体现两个向量在方向上的差异。Jaccard系数——集合A和B交集元素的个数在A、B并集中所占的比例,用符合J(A,B)表示,是用来衡量两个集合相似度的一种指标,Jaccard Distance是与Jaccard系数完全相反的一种度量,主要是用来衡量两个集合差异性的一种指标。
        2. PMI:点互信息算法,两个词的PMI值越大,则相关性越强;PMI为0则不相关也不互斥;PMI为负的则互斥性越大
    • 在特征里,独立的有:mention到LinkCount、实体自身的一些属性。其中LinkCount作为先验知识,在用来做实体消歧的时候很有用。

    • 不独立的有:文本的context、实体间的一致性。文本context可以用一些深度学习的方法去深度理解文本的语义,从而实现消除歧义;实体间的coherence则困难一些,由于文本包含的mention都没有确定,所以全局地进行entities的消歧义实际上是一个NP-hard的问题。目前,如何更加快速有效地利用一致性特征是一个非常有趣的方向。

    • 基于这些常用的特征,ED的方法大致有以下几种:

      1. Learning to Rank Methods: 这里需要用到机器学习的ranking技术中的learn2rank技术,包括pointwise,pairwise,listwise三大类型,具体的内容本文中不再赘述,这里有个写的比较详细的网站可以去瞅瞅:https://blog.csdn.net/weixin_34005042/article/details/86264976。由于ED任务中的ground truth 只有一个实体(在有监督学习中,数据是有标注的,以(x,t)的形式出现,其中x是输入数据,t是标注,正确的t标注是ground truth,错误的标记则不是,所以也有人将标注数据都叫做ground truth),一般都是用point-wise来做,输入是文本的context、mention、某个entity的一些attributes,输出mention指向该entity的置信度,以此rank,选出最可信的entity。
      2. Probabilistic Methods: Incorporate heterogeneous knowledge into a probabilistic model,将异构知识整合进概率模型中。结合不同的信息得到条件概率P(e|m,c),其中c是输入文本,e是实体,m是mention。比如用归一化的LinkCount信息,作为先验概率P(e|m)
      3. Graph-Based Approaches: maximize coherence between entities.利用图特征(entity,embedding,relation),在消歧义时,考虑全局消歧义后的一致性。
  • Unlinkable Mention Prediction

    • 如何拒识未知实体
      1. NIL Threshold:通过一个置信度的阈值来调节
      2. Binary Classification:训练一个二分类的模型,判断Top-ranked Entity是否真的是文中mention想要表达的实体
      3. Rank with NIL:在rank的时候,在候选实体中加入NIL Entity

EL近期的工作

主要讲三篇论文:
1. Deep Joint Entity Disambiguation with Local Neural Attention ( 2017 EMNLP )
2. Improving entity linking by modeling latent relations between mentions. ( 2018 ACL )
3. DeepType: multilingual entity linking by neural type system evolution. ( 2018 AAAI )

  • Deep Joint Entity Disambiguation with Local Neural Attention
    • 这篇文章是EL领域第一篇不依赖特征工程,而是用深度学习来学习基础特征的工作,主要的创新点有三个:
      1. Entity Embeddings:用到了知识库里实体的embedding
      2. Context Attention:用attention机制来获得context的表征
      3. Collective Disambiguation:考虑实体间的coherence,联合消歧
    • 给定文本 D D D,其中有一堆 m e n t i o n ( m 1 , m 2 , . . . . . . , m n ) mention(m_{1},m_{2},......,m_{n}) mention(m1,m2,......,mn) m i m_{i} mi对应的实体为 e i e_{i} ei,对应的 c o n t e x t context context c I c_{I} cI,对应的候选实体集为 C i = ( e i 1 , e i 2 , . . . . . . , e i l i ) C_{i}=(e_{i1},e_{i2},......,e_{il_{i}}) Ci=(ei1,ei2,......,eili)。文章提出了两种模型:Local model,Global model,local只考虑mention的context;global还需要考虑实体间的一致性,联合消歧。
    • Local model:令 Ψ ( e i , c i ) \Psi{(e_{i},c_{i})} Ψ(ei,ci)为local score function,local model要解决的问题即: e i ∗ = arg max ⁡ e i ∈ C i Ψ ( e i , c i ) e^{*}_{i} = \argmax_{e_{i}\in C_{i}}\Psi ({e_{i},c_{i}}) ei=eiCiargmaxΨ(ei,ci)
    • Global model: 除了context,还考虑实体间的coherence(为了简化,只考虑二元一致性)。令 Φ ( e i , e j , D ) \Phi(e_{i},e_{j},D) Φ(ei,ej,D)为实体之间的pair-wise coherence score function, E = ( e 1 , e 2 , . . . . . . , e n ) E = (e_{1},e_{2},......,e_{n}) E=(e1,e2,......,en),全局搜索: E ∗ = arg max ⁡ E ∈ C 1 × C 2 × . . . . . . × C n ∑ i = 1 n Ψ ( e i , c i ) + ∑ i ≠ j Φ ( e i , e j , D ) E^{*} = \argmax_{E\in C_{1}\times C_{2}\times ...... \times C_{n}}\sum^{n}_{i=1}\Psi (e_{i},c_{i}) + \sum_{i\neq j}\Phi(e_{i},e_{j},D) E=EC1×C2×......×Cnargmaxi=1nΨ(ei,ci)+i=jΦ(ei,ej,D)
      Local and pair-wise score function的计算方式如下: Ψ ( e i , c i ) = e i T B f ( c i ) \Psi (e_{i},c_{i}) = e^{T}_{i}Bf(c_{i}) Ψ(ei,ci)=eiTBf(ci) Φ ( e i , c j , D ) = 1 n − 1 e i T R e j \Phi(e_{i},c_{j},D) =\frac{1}{n-1} e^{T}_{i}Re_{j} Φ(ei,cj,D)=n11eiTRej
      其中, e i , e j e_{i},e{j} ei,ej是实体ei,ej的embedding, B , R B,R B,R是对角矩阵, f ( c i ) f(c_{i}) f(ci)是在上下文 c i c_{i} ci上取attention后的表征,具体的attention计算如下图:

Alt

  • 这里是用candidate entity embeddings做key,context word embeddings做value,得到score matrix之后,按列取max,如果某个word的score较高表示这个word至少和一个entity相关度高。为了去除stop words的影响,作者只取了top R的score,剩下的置为负无穷。得到score后,还会结合m到e的LinkCount先验概率,计算出最终各个实体的概率。该工作在AIDA数据集上取得了SOTA ( local: 88.8、global: 92.22 )。

  • Improving entity linking by modeling latent relations between mentions

    • 上一篇论文降到了在EL中引入entity embedding作为信息,那自然还会想到一个问题——KB中还有其他的信息吗?比如开头的句子中,乔丹与美国是否构成了公民的关系
    • 于是隐关系信息的方法被提出,假定图谱中有K个关系,令 ( m i , m j ) (m_{i},m_{j}) (mi,mj)之间为关系k的置信度为 a i j k a_{ijk} aijk,上文中的pair-wise coherence score function可以写成: Φ ( e i , c j , D ) = ∑ k = 1 K α i j k e i T R e j \Phi(e_{i},c_{j},D) =\sum^{K}_{k=1} \alpha_{ijk} e^{T}_{i}Re_{j} Φ(ei,cj,D)=k=1KαijkeiTRej α i j k = 1 Z i j k exp ⁡ ( f T ( m i , c i ) D k f ( m i , c j ) d ) \alpha_{ijk} = \frac{1}{Z_{ijk}}\exp(\frac{f^{T}(m_{i},c_{i})D_{k}f(m_{i},c_{j})}{\sqrt{d}}) αijk=Zijk1exp(d fT(mi,ci)Dkf(mi,cj))
    • 其中, R k , D k R_{k},D_{k} Rk,Dk都是用来表示关系k的对角矩阵(类似于关系k的embedding), Z i j k Z_{ijk} Zijk为归一化因子, f f f为映射函数这样一来,就隐式地添加了关系k,关于如何计算归一化因子,有如下两种思路:
      1. Rel-norm:Relation-wise normalization。就是以关系k维度来norm。
      2. Ment-norm:Mention-wise Normalization。就是以实体j维度来norm。
        Alt
  • DeepType: multilingual entity linking by neural type system evolution

    • 前两篇论文都是在联合消歧的这个角度,做了一定的工作。本文则另辟蹊径,从优化知识库的角度type系统来做。文章很重要的一个观点是:当我们能预测出实体的mention的type,消歧这个任务就做得差不多了。EL系统主要分为三个模块

      1. Type System:一组正交的type轴和一个type标注函数
        1. type轴:一组互斥的type集合 A A A(比如 I s H u m a n ⋂ I s P l a n e = { } IsHuman\bigcap IsPlane = \{\} IsHumanIsPlane={})
        2. type标注函数: t 1 , . . . . . . , t k = T y p e L a b e r l e r ( e , A ) t_{1},......,t_{k} = TypeLaberler(e,A) t1,......,tk=TypeLaberler(e,A)
        3. 举个例子:假定一个包含两个轴的type系统 { I s A , T o p i c } \{IsA,Topic\} {IsA,Topic},比如<奥巴马>对应的就是{黑人,美国前总统}
      2. Type Classifier:给定mention和text,输出mention对应实体的type
      3. Entity Prediction Model:给定mention、text和候选实体,预测概率最高的实体。(本文使用的是LinkCount)
    • 很显然,这三个模块的核心就在于Type System的构建,由于Entity Predict Model是直接用的LinkCount,实际上整个EL系统就两组参数,一组是Type System的离散参数 A A A,一组是 M = ( m 0 , e 0 G T , ξ m n ) M=(m_{0},e_{0}^{GT},\xi_{m_{n}}) M=(m0,e0GT,ξmn),其中 e i G T e_{i}^{GT} eiGT为ground truth的实体, ξ m I \xi_{m_{I}} ξmI为候选实体集,令 S m o d e l ( A , θ ) S_{model}(A,\theta) Smodel(A,θ)为EL系统的消歧准确率,则我们的问题可以定义为: max ⁡ A max ⁡ θ S m o d e l ( A , θ ) = ∑ ( m , e G T , ξ m ) ∈ M e G T ( e ∗ ) ∣ M ∣ \max_{A}\max_{\theta}S_{model}(A,\theta)=\frac{\sum(m,e^{GT},\xi_{m})\in M^{e^{GT}(e^{*})}}{|M|} AmaxθmaxSmodel(A,θ)=M(m,eGT,ξm)MeGT(e)

    • 其中 e ∗ = arg max ⁡ e ∈ A E n t i t y S c o r e ( e , m , D , A , θ ) e^{*} = \argmax_{e\in A} EntityScore(e,m,D,A,\theta) e=eAargmaxEntityScore(e,m,D,A,θ)这个entityScore可以看成是给定m后,EL系统给出的置信度,后面会给具体公式。

    • 同步优化两组参数很耗时,本文将Type System和Type Classifier两个部分独立优化

    • a. Discrete Optimization of Type System:

      • 先固定住classifier,优化Proxy Objective J ( A ) ∼ S m o d e l ( A , θ ) J(A)\sim S_{model}(A,\theta) J(A)Smodel(A,θ),先假设两个classifier model的极端:
        1. Oracle(极端优秀),不管 A A A咋变,都能预测对mention的type,然后从该type对应的候选实体集的子集中选LinkCount最高的, S o r a c l e S_{oracle} Soracle
        2. Greedy(极端愚蠢),不预测type,直接从候选实体集中选linkcount最高的, S g r e e d y S_{greedy} Sgreedy
      • 所以优化的目标函数可以定为最简单的 J ( A ) = S o r a c l e J(A)=S_{oracle} J(A)=Soracle,但考虑到真实的学习能力,更合理的目标函数应该为: J ( A ) = ( S o r a c l e − S g r e e d y ) ∗ l ( A ) + S g r e e d y − λ ∣ A ∣ J(A)=(S_{oracle}-S_{greedy})*l(A) + S_{greedy}-\lambda |A| J(A)=(SoracleSgreedy)l(A)+SgreedyλA
      • 那如何才能不依赖A去计算学习能力呢?如果softmax使用了多分类,那每更换一次,就要训练一个classifier,因此作者设计了二元分类器代替了多分类器,令 l ( A ) = ∑ t ∈ A A U C ( t ) / ∣ A ∣ l(A)=\sum_{t\in A} AUC(t)/|A| l(A)=tAAUC(t)/A,这样只需要最开始计算一次就好了,如下图:
        Alt
    • b. Type Classifier:
      上面讲过了

    • c. Inference:

      • 在训练完Type System和Type Classifier之后,我们就可以计算我们上面说的Entity Score了: s e , m , D , A , θ = P ( e ∣ m ) ∗ ( 1 − β + β ( ∏ i = 1 k ( 1 − a i + a i P ( t i ∣ m , D ) ) ) ) s_{e,m,D,A,\theta} = P(e|m)*(1-\beta+\beta(\prod^{k}_{i=1}(1-a_{i}+a_{i}P(t_{i}|m,D)))) se,m,D,A,θ=P(em)(1β+β(i=1k(1ai+aiP(tim,D))))
      • 其中 A = ( t 1 , . . . . . . , t k ) A=(t_{1},......,t_{k}) A=(t1,......,tk)是k个type组成的type轴, α , β ∈ ( 0 , 1 ) \alpha,\beta\in(0,1) α,β(0,1)是smoothing系数,最终在AIDA数据集上取得了SOTA(94.88)

数据集

Knowledge BaseEL监督数据
Wikipedia中文:CCKS
DBpedia英文:TAC KBP 2010 EL
FreebaseAIDA CoNLL-YAGO

一个不错的多因子消歧总结:https://link.zhihu.com/?target=https%3A//cloud.tencent.com/developer/article/1491361
ccks实体链接第一名方案:https://link.zhihu.com/?target=https%3A//github.com/panchunguang/ccks_baidu_entity_link
DeepType原作博客:https://link.zhihu.com/?target=https%3A//openai.com/blog/discovering-types-for-entity-disambiguation/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值