当你阅读句子“Barack Obama was born in Hawaii. He became the 44th president of the United States.”时,你毫不费力地理解“He”指的是“Barack Obama”。这种理解代词指代的能力,对人类来说轻而易举,但对机器来说却极具挑战。这就是指代消解(Coreference Resolution) 任务——识别文本中所有指向同一实体的表述。
指代消解是语言理解的基础能力。在问答系统中,如果无法理解“他发明了什么”中的“他”指代谁,就无法回答问题。在机器翻译中,代词的翻译往往依赖于其先行语的性别和数(如法语中的“il”和“elle”)。在文本摘要中,需要保持指代的一致性,避免出现“奥巴马...他...总统”这样混乱的指代链。
指代消解之所以困难,在于它需要整合多种语言学线索:句法结构(主语位置的名词更可能是先行语)、语义一致性(性别和数的匹配)、语境推理(“The trophy doesn't fit in the suitcase because it is too big”中的“it”更可能指trophy)、常识知识(医生通常被称为“he”或“she”而非“it”)。本讲将介绍如何用神经网络端到端地学习这些复杂的线索。

最早的指代消解系统完全基于语言学规则。1976年提出的Hobbs算法使用句法分析树来搜索代词的先行语。算法沿着句法树向上遍历,按照语言学理论定义的优先级查找候选先行语。例如,优先查找同一子句中的名词,然后是上一个子句,依此类推。
这类规则方法的问题在于:规则复杂且难以覆盖所有情况;不同语言需要不同规则;对句法分析质量高度依赖;无法处理歧义情况。最致命的是,它们无法从数据中学习——每条规则都需要语言学家手工编写。
2000年代,研究者开始用机器学习方法解决指代消解。核心思想是将其视为分类问题:对于文本中的每一对提及(mention,指向实体的名词短语),训练一个分类器判断它们是否共指(指向同一实体)。
这类方法使用大量人工特征:
通过在标注数据上训练,分类器可以学习这些特征的权重。这比纯规则方法更灵活,但仍然依赖特征工程,而且将提及检测和共指判断分为独立步骤,误差会传递累积。
2017年,华盛顿大学的Kenton Lee等人在EMNLP会议上发表了“End-to-end Neural Coreference Resolution”,提出了第一个真正端到端的神经共指消解模型。这个模型的突破在于联合学习提及检测和共指链接,无需任何人工特征或句法分析。
Lee等人的模型基于一个简洁的框架:
这个端到端的设计避免了流水线方法的误差累积——提及检测的错误不会传递到共指判断,因为两者是联合学习的。
第一个挑战是如何表示一个文本片段(如“Barack Obama”、“the president”)。Lee等人设计了一个丰富的span表示,融合多个信息源:
这个表示包含四个部分:
首尾边界表示:和分别是span首词和尾词的上下文相关表示(通过BiLSTM获得)。这捕获了span的边界信息和局部上下文。
头词注意力表示:是span内所有词的加权平均,权重通过注意力机制学习。这个设计基于语言学中“中心词(head word)”的概念——在“the red car”中,“car”是中心词,承载主要语义。模型学会自动识别中心词并给予更高权重。
特征向量:是一些简单的离散特征,如span长度(编码为one-hot或嵌入)。虽然模型主要依赖神经表示,少量离散特征仍有帮助。

对于两个span 和(出现在之后),模型计算它们共指的分数:
这个分数由三部分组成:
提及分数和:评估和各自是实体提及的可能性。不是所有名词短语都是实体提及——"it rains"中的"it"不指代任何实体,"every student"是泛指而非特指。提及分数帮助模型过滤掉非实体的span。
共指分数:评估和指向同一实体的可能性。这通过一个前馈网络计算:
输入是两个span表示的拼接、逐元素乘积,以及成对特征(如两者的距离)。网络学习复杂的匹配模式——如果和的表示相似、距离合适、语义兼容,分数就高。
模型的训练目标是最大化正确先行语的边际似然。对于一个提及,可能有多个正确的先行语(因为共指是传递的——如果和共指,和共指,那么和也共指)。模型不是选择单一最佳先行语,而是对所有正确先行语的概率求和:
这个边际化让训练更稳定——即使模型在多个正确先行语中选择了不同的一个,只要是正确的,都会得到奖励。
Lee等人在2018年的后续工作中提出了高阶共指消解模型。核心思想是:共指关系具有传递性,应该被迭代地细化。
第一轮推理时,模型基于原始的span表示判断共指关系。但这些判断可能不完美。在第二轮中,模型根据第一轮的共指判断更新span表示——如果两个span在第一轮被判断为可能共指,就让它们的表示相互影响,变得更相似。然后基于更新后的表示再次判断共指。
这个迭代过程让模型能够进行复杂的推理。例如,判断“Barack Obama”、“He”和“the president”是否共指:
这种迭代推理显著提升了性能,使模型在OntoNotes基准上达到了新的最佳水平。
评估共指消解比评估分类任务复杂得多,因为共指关系形成了复杂的簇(cluster)结构。
MUC(Model Theoretic) 评估链接的精确率和召回率。
B³(B-cubed) 针对每个提及计算精确率和召回率,然后平均。这解决了MUC对单例实体(singleton)不敏感的问题。
CEAF(Constrained Entity-Alignment F-Measure) 寻找预测簇和金标准簇之间的最优一对一对齐。
CoNLL分数 是上述三个指标的平均,作为标准评估指标。
用具体例子说明为什么指代消解是NLP中的困难任务。构造一个需要语义推理或常识知识才能解决的指代案例。
比较基于规则和神经网络方法的优劣。在什么情况下规则方法可能仍然有用?
思考如何将共指信息用于下游任务(如问答、翻译)。共指消解的改进能带来多大的下游性能提升?