今天介绍一个小众的 Task, 实体集合拓展(Entity set expansion).
Empower Entity Set Expansion via Language Model Probing. ACL 2020.
Yunyi Zhang, Jiaming Shen, Jingbo Shang, Jiawei Han
任务的目标是拓展原有的实体集合,向其中添加相同类别的实体,注意这里的实体类别一般不是传统的 7 大 NER 类别,更偏向 Fine-grained 的。
举个例子,原有集合{德州,杭州,青岛},可以拓展为{林芝,六盘水}之类的。
简单的话,我们用聚类 Contextual Embedding(类似于 Word Sense Induction 中的做法), 或者用 pair-wise loss 增强 Similarity 的计算可以给到一个结果。
但这样操作会有两个缺点:
- 单纯的相似度计算,容易拓展不准确的实体(非同级,反义词,High level 相似,但细粒度不同).
- 随着集合的拓展,容易出现语义偏移等误差累计问题.
如果能获得实体集合的类别名称,能减少歧义,促进对实体集合的理解。
本文从这个角度出发,通过两个 query 分别预测实体类别和实体, 试图更好的利用预训练模型中的语言知识。
初看可能思路比较简单,只是做一个 MLM 的预测。
但如果只是这样,最多只是让生成的实体更符合生成的 class name,但很容易产生误差传递的问题, 并没解决语义偏移的问题。
文中使用了一些 tricks, 来试图解决以上问题,(体现在阅读观感上,就会觉得这个模型有点繁琐)。
Class-guided Entity Expansion
具体来说,这是一个三阶段的 pipeline 模型。
- 集合类名生成(class name generation).
- 集合名称排序(class name ranking).
- 集合指导下的实体选择(class-guided entity selection).
Class Name Generation
这一部分是三个阶段中最简单的一个,主体架构就是 MLM。
这个过程类似于一个已知特定的下位词,寻找通用的上位词这个过程。
使用 Hearst(1992)年提出的,六个 pattern 构建 query。
每次随机抽取三个实体组成一个 query。
这些 query 简短,主要起到的构建层次化语义,强化归纳类别信息的作用,例如Country such as China, Japan, South Korea.
- NPy such as NPa
- such NPy as NPa
- NPa or other NPy
- NPa and other NPy
- NPy, including NPa
- NPy, especially NPa
通过 Mask pattern 中 class name 部分,预测出最符合当前三个实体的 class name。
但这样操作也只能预测出 single token 的 class name, 适用性较差。
这边就采用一个迭代+beam search 的策略。依次向前填词。例如先预测出来country
, 然后再去预测Asia country
.
每轮选取 top-k 的候选集依次向前。
最大长度限制在 3,然后利用 pos tag 工具(nltk)来筛除非名词短语。
和很多 pipeline 模型一样,这个阶段的目标只是高 recall,通过多次 sample entity subset 来尽可能提高 recall。
Class Name Ranking
单纯的做上面的 MLM 任务,使用的只是 LM 学到的分布,不一定符合当前 Corpus.
在这个阶段,目标是筛选出来最佳 class name( c p c_p cp) 和一些负样本( C N C_N CN, 用于后面辅助选择 entity).
一个简单的想法,统计前面一个阶段每个 class name 出现的次数,作为排序的指标,但是容易更偏向短 token。
M k ( e , c ) = 1 k max X X e , ∣ X ∣ = k ∑ x ∈ X max x ′ ∈ X c cos ( x , x ′ ) M^{k}(e, c)=\frac{1}{k} \max_{X X_{e},|X|=k} \sum_{ {x} \in X} \max_{ {x}^{\prime} \in X_{c}} \cos \left({x}, {x}^{\prime}\right) Mk(e,c)=k1XXe,∣X∣=kmaxx∈X∑x′∈Xcmaxcos(<