【cs224n-14】Reference in Language and Coreference Resolution
本文主要讲解语言中的指称和指称的消解,介绍其相关定义和发展情况。
1.什么是指代消解?
指代是指:识别所有涉及到相同现实世界实体的 提及。通俗点讲是篇章中的一个语言单位(通常是词或短语)与之前出现的语言单位存在特殊语义关联,其语义解释依赖于前者。例如He, her 都是实体的提及,He,her的具体表示意思依赖与之前出现的语言单位。
举几个例子:
李明怕高妈妈一人呆在家里寂寞,他便将家里的电视搬了过来。
上面例子中的加粗部分,很明显依赖于前文。在语言学把用于指向的语言单位(上面例子中的粗体部分)称为照应语(或指代语Anaphor),被指向的语言单位(具体的实体)称为先行语(或先行词Antecedent)。确定照应语所指的先行语的过程就是指代消解。
2.指代消解可用于哪些场景?
- 全文理解:信息提取, 回答问题, 总结。例:“他生于1961年”(谁?)
- 机器翻译:语言对性别,数量等有不同的特征
- 对话系统
3.指代发现的方式
- Pronouns 代词:因为代词是 POS 检测结果的一种,所以只要使用 POS 检测器即可。
- Named entities 命名实体:使用命名实体识别系统。
- Noun phrases 名词短语:使用依存句法分析方法。
基于以上方法我们可能获取到比较多的非指代的词,如:"Every student"、"No student"、"The best donut in the world",,我们如何处理呢?
- 可以训练一个分类器过滤掉 假的指代
- 更为常见的:保持所有 指代作为 “候选指代”。在你的共指系统运行完成后,丢弃所有的单个引用(即没有被标记为与其他任何东西共同引用的)
流水线系统:我们可以训练一个专门用于指代检测的分类器,而不是使用POS标记器、NER系统和解析器。甚至端到端共同完成 指代检测和共指解析,而不是两步。
4.指代消解的分类
从照应语的角度将指代消解分为三类:
-
按先行词与照应语出现的顺序分类
若照应语的位置在先行语之前则称为预指消解,当照应语位于先行语之后称为回指消解。 -
按照应语的抽象程度分类
根据指代的表现形式的抽象程度,指代消解分为名词消解、代词消解、零代词消解,具体有六种:
其中,零代词在中文句子中出现的频率很高。
3.按照应语在句子中语义关系强弱程度分类
当先行语和照应语存在等价关系,并同时指向同一个实体时叫做共指。共指关系脱离上下文的语义仍旧独立存在,与上下文关系较弱。
(非等价)指代消解是指先行语与照应语之间存在着非对称关系并且和上下文的语义有着紧密联系,在不同的语义和语境下照应语指代的先行语是不同的。
非等价指代消解的目标是:寻找照应语对应的先行语;
而共指消解的目标是:发现指向相同实体的语言表示单元,很有可能包括多语篇任务。
5.共指模型: 指代对(Coreference Models: Mention Pair)
训练一个二元分类器,为每一对 mention 的分配共参的概率 p(mi,mj)
- 例如,为了寻找 “she” 的共指,查看所有候选先行词(以前出现的 mention ),并确定哪些与之相关
- 文章的 N 个 mentions 如果 mi和 mj 是共指的,则 yij=1 ,否则 yij=−1。只是训练正常的交叉熵损失(看起来有点不同,因为它是二元分类)
- 遍历 mentions。遍历候选先行词(前面出现的 mention)、共指 mention 对应该得到高概率,其他应该得到低概率
共指解析是一项聚类任务,但是我们只是对 mentions 对进行了评分……该怎么办?
- 选择一些阈值(例如0.5),并将 p(mi,mj),在阈值以上的 mentions 对之间添加共指链接,利用传递闭包得到聚类。
风险:
- 共指连接具有传递性,即使没有不存在 link 的两者也会由于传递性,处于同一个聚类中,
- 如果有一个共指 link 判断错误,就会导致两个 cluster 被错误地合并了,这是十分危险的
不利条件:
假设我们的长文档里有如下的 mentions,许多 mentions 只有一个清晰的先行词,但我们要求模型来预测它们
解决方案:相反,训练模型为每个 mention 只预测一个先行词,在语言上更合理。
6.指代排序(Coreference Models: Mention Ranking)
思路:
- 据模型把其得分最高的先行词分配给每个 mention
- 虚拟的 NA mention 允许模型拒绝将当前 mention 与任何内容联系起来(“singleton” or “first” mention)
- first mention: I 只能选择 NA 作为自己的先行词
Coreference Models: Training
- 我们希望当前 mention mj与它所关联的任何一个候选先行词相关联。
- 在数学上,我们可能想要最大化这个概率
公式解析
- 遍历候选先行词集合
- 对于 yij=1的情况,即 mi 与 mj是共指关系的情况我们希望模型能够给予其高可能性
该模型可以为一个正确的先行词产生概率 0.9 ,而对其他所有产生较低的概率,并且总和仍然很大。
Turning this into a loss function
Mention Ranking Models: Test Time
和 mention-pair 模型几乎一样,除了每个 mention 只分配一个先行词
我们如何计算概率?
1.Non-neural statistical classifier
2. Simple neural network
3.More advanced model using LSTMs, attention
7.最后共指方式: Clustering-Bas
- 共指是个聚类任务,让我们使用一个聚类算法吧
- 特别是我们将使用 agglomerative 凝聚聚类 自下而上的
- 开始时,每个 mention 在它自己的单独集群中
- 每一步合并两个集群,使用模型来打分那些聚类合并是好的
聚类模型架构
8.评估
- 许多不同的评价指标:MUC, CEAF, LEA, B-CUBED, BLANC
- 经常使用一些不同评价指标的均值
- 例如 B-cubed
- 对于每个 mention ,计算其准确率和召回率
- 然后平均每个个体的准确率和召回率
参考:http://web.stanford.edu/class/cs224n/slides/cs224n-2019-lecture16-coref.pdf