参考论文: https://arxiv.org/abs/1901.00056
参考代码: https://github.com/czhang99/SynonymNet
命名实体的同义发现在许多NLP任务中起到了重要的作用。同义发现任务中一个核心的问题是如何衡量一对实体之间的语义相似度。 基于表示学习(representation learning)的同义实体发现致力于学习更好的词表示(word embedding)或者字符表示(character-level embedding)。这些方法大都可以很好的处理表述相似的同义实体(例如airplane/aeroplane), 但在衡量语义相似的同义实体下表现不佳(例如clogged nose/nasal congestion)。近年来,基于上下文(context)的同义实体发现多基于分布式语义模型(Distributional Semantics Models)的假设 ,即“在相同的上下文中出现的词汇在某种程度上有类似的含义“。在实际应用中,一个命名实体会通常出现在许多不同的上下文中。对于每个命名实体,现有基于分布式语义模型的方法大多将单个上下文的信息拿来做匹配。
IJCAI2020的一篇论文 (“Entity Synonym Discovery via Multipiece Bilateral Context Matching”) 在如何利用多个上下文信息来做同义实体发现问题上进行了一些新的探索。作者认为对于一对命名实体,若对每个实体能利用多个不同的上下文来做匹配不仅可以更全面的学习其上下文语意表示从而提高衡量实体之间语义相似度的准确性,还可以增加匹配的鲁棒性,减少因采用某个低质量上下文而引入的噪声。为了达到这一目标,作者在同义词发现任务上将传统的基于单个上下文的匹配(single-piece context matching)扩展至多个上下文(multi-piece context),并通过多个上下文之间的双向匹配(bilateral context matching) 来学习实体间的相似度,从而用于海量文本中的同义实体发现。在公开/特定领域(医疗),英文/中文文本数据集上均取得了较佳的表现。
模型解析
SynonymNet核心idea是对于每个命名实体查找一组(多个)其出现的上下文句子,并通过对两组上下文句子之间进行匹配得到最终命名实体间的相似度。那么这样的匹配要如何实现呢?
作者采用了如下图所示的模型结构: 检索器 (context retriever)通过检索的方式从海量文本中选择一组实体被提到的句子;编码器(context encoder)将每一个上下文信息进行编码; 双向匹配(bilateral matching)+泄漏单元(leaky unit)则将两个实体对应的两组上下文信息进行双向匹配;合成器(context aggregation)利用匹配的信息选择具有代表性,且在匹配中较为informative的上下文信息进行多上下文的聚合。作者考虑了两种不同的架构:一是针对二元实体组
双向匹配。
对于一组命名实体
对于每个提到实体
同样的,对于每一个提到实体
这样的匹配看似需要进行
泄露单元。
当需要和多个上下文进行匹配的时候,可能会存在没有高质量的上下文进行匹配,甚至上下文存在错误的情况。为了更好的解决这个问题,作者引入了泄漏单元(leaky unit)的概念。Leaky unit的想法是在双向匹配时引入一个多余的上下文向量
在每个匹配方向上,Leaky unit会额外和
当存在某个低质量的上下文,比如因为实体
分母中的泄漏单元会承担匹配分数;
上下文信息聚合。
作者将多个上下文基于attention思想进行聚合。当已经获得了
这里的动机是如果
泄漏单元虽然在匹配时分担了匹配分数,但泄漏单元不参与聚合过程。因此泄漏单元不会在聚合过程中贡献信息给聚合后的上下文向量。这样是为了保证泄露的噪声能被隔离开,不去影响最终聚合的质量。
siamese/triplet 结构。
作者尝试了两种不同的模型结构/损失函数。siamese 结构以二元实体组
实体发现流程
作者利用SynonymNet衡量实体间语义相似度的能力将其用于文本中的实体发现。如图所示,实体发现分为四步:1)根据文本训练word embedding; 2)对于一个query entity
实验表现
作者在Wiki + Freebase, PubMed + UMLS, MedBook + MKG 三个数据集上进行了评估。实验采用AUC和MAP评价采用相同的word embedding时不同模型结构对于衡量实体同义相似度的影响。
作者对上下文个数对性能的影响进行了评估。结果显示采用多个上下文进行匹配可以降低单个上下文匹配时可能带来的噪声,从而显著提高同义相似度的准确性。
作者还在真实的同义实体发现任务中进行了一些分析。word2vec采用了利用上下文来对实体语义进行建模的思想,用cosine similarity进行embedding最近邻选取可以得到初筛后的candidate entity。对于query entity “UNGA”,获得的candidates虽然大多出现在类似的上下文中,不相关的实体仍在前列。经过SynonymNet对于上下文更细粒度的刻画,以及多上下文的双向匹配后,同义实体的排名变得更靠前了。
总结
根据多个上下文进行双向匹配来确定两个实体同义程度,利用泄漏单元来处理多个上下文匹配时可能存在噪音的情况,思路直观,实现的方式简洁。实验结果上验证了采用多个上下文进行匹配来带准确度和鲁棒性上的提升。
该框架对于编码器,检索器的选择比较灵活。目前文中采用的是bi-LSTM结构,和基于transformer的众多预训练语言模型碰撞之后说不定也能有一些新的发现。在需要用多个上下文进行匹配的时候,如何利用多个上下文带来的多样性,全面地学习实体表示也是一个很有意思的问题。在处理由之产生的噪声方面,文中的泄漏单元给出了一个比较新颖的观点。