共指消解 本节摘要:「她给他打电话。他没接。医生在午休。」三个指称指向两个人,却没有一个被点名——共指消解就是搞清谁是谁。从一篇 300 字文章里抽出每一个提到苹果公司(Apple Inc.)的地方:文章写「Apple」时容易,写「那家公司」「他们」「库比蒂诺的科技巨头」「乔布斯的公司」时难;不把这些指称解析到同一实体,你的 NER 流水线会漏掉 6080% 的提及。共指消解把指向同一现实实体的每个表达连成一个簇,它是表层 NLP(NER、句法分析)与下游语义(信息抽取、问答、摘要、知识图谱)之间的胶水。2026 它依然要紧:摘要要会点名 CEO 而非含糊带过,问答要会解析「她」,知识图谱里「PER1 创立苹果」与「乔布斯创立苹果」若是两条就错了。
本节摘要:「她给他打电话。他没接。医生在午休。」三个指称指向两个人,却没有一个被点名——共指消解就是搞清谁是谁。从一篇 300 字文章里抽出每一个提到苹果公司(Apple Inc.)的地方:文章写「Apple」时容易,写「那家公司」「他们」「库比蒂诺的科技巨头」「乔布斯的公司」时难;不把这些指称解析到同一实体,你的 NER 流水线会漏掉 60~80% 的提及。共指消解把指向同一现实实体的每个表达连成一个簇,它是表层 NLP(NER、句法分析)与下游语义(信息抽取、问答、摘要、知识图谱)之间的胶水。2026 它依然要紧:摘要要会点名 CEO 而非含糊带过,问答要会解析「她」,知识图谱里「PER1 创立苹果」与「乔布斯创立苹果」若是两条就错了。本节讲透提及的四种类型(命名、名词性、代词性、同位语)、五种架构(从 Hobbs 1978 规则法到 span 端到端神经网络再到生成式 LLM),以及为何评估要用 MUC、B³、CEAF、BLANC、LEA 五个指标取平均——因为没有单一指标能捕捉聚类质量。
对应原课程:Phase 5 · Lesson 24 ·
coreference-resolution(原英文phases/05-nlp-foundations-to-advanced/24-coreference-resolution/docs/en.md)。前置依赖:第 06 节(NER)、第 07 节(词性与句法分析)。
阅读完本节,你应当能够:
从一篇 300 字文章里抽出每一个提到苹果公司的地方。文章写「Apple」时容易;写「那家公司」「他们」「库比蒂诺的科技巨头」「乔布斯的公司」时难。不把这些指称解析到同一实体,你的 NER 流水线漏掉 60~80% 的提及。
共指消解把指向同一现实实体的每个表达连成一个簇。它是表层 NLP(NER、句法分析)与下游语义(信息抽取、问答、摘要、知识图谱)之间的胶水。
2026 它为何要紧:
四种提及类型:
架构演进:
评估指标。 五个标准指标(MUC、B³、CEAF、BLANC、LEA),因为没有单一指标能捕捉聚类质量。报前三个的平均为 CoNLL F1。2026 在 CoNLL-2012 上的 SOTA 约 83 F1。
已知难例:
import spacy nlp = spacy.load("en_coreference_web_trf") # 实验性模型 doc = nlp("Apple announced new products. The company said they would ship soon.") for cluster in doc._.coref_clusters: print(cluster, "->", [m.text for m in cluster])
更长文档上你会得到类似:
见 code/main.py 的纯标准库实现:
不能与神经模型竞争,但展示了搜索空间与端到端模型必须做的决策。
prompt = f"""Text: {text} List every pronoun and noun phrase that refers to a person or company. Cluster them by what they refer to. Output JSON: [{{"entity": "Apple", "mentions": ["Apple", "the company", "it"]}}, ...] """
两个失败模式要盯。一是 LLM 过度合并(「him」与「her」其实指两个不同的人);二是 LLM 在长文档里静悄悄漏掉提及。总用 span-offset 检查来验。
标准 conll-2012 脚本算 MUC、B³、CEAF-φ4 并报平均。做内部评估时,先在你标注的测试集上报 span 级精确与召回,再加提及链接 F1。
2026 的栈:
| 情形 | 选 |
|---|---|
| 英语,单文档 | en_coreference_web_trf(spaCy-experimental)或 AllenNLP 神经共指 |
| 多语言 | 在 OntoNotes 或 Multilingual CoNLL 上训的 SpanBERT / XLM-R |
| 跨文档事件共指 | 专用端到端模型(2025~26 SOTA) |
| 快速 LLM 基线 | GPT-4o / Claude 配结构化输出共指提示 |
| 生产对话系统 | 规则兜底 + 神经主路径 + 关键槽位人工复核 |
💡 2026 集成模式:先跑 NER,再跑共指,把共指簇并进 NER 实体。下游任务看到的是每簇一实体,而非每提及一实体。
保存为 outputs/skill-coref-picker.md:
--- name: coref-picker description: Pick a coreference approach, evaluation plan, and integration strategy. version: 1.0.0 phase: 5 lesson: 24 tags: [nlp, coref, information-extraction] --- Given a use case (single-doc / multi-doc, domain, language), output: 1. Approach. Rule-based / neural span-based / LLM-prompted / hybrid. One-sentence reason. 2. Model. Named checkpoint if neural. 3. Integration. Order of operations: tokenize → NER → coref → downstream task. 4. Evaluation. CoNLL F1 (MUC + B³ + CEAF-φ4 average) on held-out set + manual cluster review on 20 documents. Refuse LLM-only coref for documents over 2,000 tokens without sliding-window merge. Refuse any pipeline that runs coref without a mention-level precision-recall report. Flag gender-heuristic systems deployed in demographically diverse text.
code/main.py 的规则解析器,对比金标准测提及链接准确率。下一节,我们把共指簇连到真实世界的知识库——进入「实体链接」,看如何把「苹果」这个模糊提及消歧并链接到知识图谱里的正确条目。