想象一下,你是一位正在分析 20 世纪 60 年代政治气候的历史学家。你已经数字化了那个时代的数百万页报纸。你想追踪媒体对“约翰·肯尼迪 (John Kennedy)”的报道。

这听起来很简单,但在计算层面上,这是一场噩梦。

在一篇文章中,“John Kennedy”指的是美国第 35 任总统。在另一篇路易斯安那州当地报纸的文章中,“John Kennedy”指的是一位州政治家。在第三篇文章中,他仅仅被称为“杰克 (Jack)”。对于人类读者来说,上下文线索通常能让区别显而易见。但对于机器来说,这些只是一串串字符。

这个问题被称为实体消歧 (Entity Disambiguation, ED)共指消解 (Coreference Resolution) 。 虽然现代自然语言处理 (NLP) 在这一领域取得了长足进步,但在应用于历史文本时往往会失败。为什么?因为历史上充满了如今没有维基百科页面的任务 (知识库外实体) ,而且历史文档充满了 OCR (光学字符识别) 噪声和过时的措辞。

在这篇文章中,我们将深入探讨一篇引人入胜的论文——*Contrastive Entity Coreference and Disambiguation for Historical Texts (历史文本的对比实体共指与消歧) *,该论文针对这一具体问题提出了一种可扩展的高精度解决方案。我们将探索研究人员如何利用对比学习、大规模“困难负样本”挖掘以及巧妙的双编码器架构,构建一个比现有最先进模型更懂历史的系统。

问题: 为什么处理历史文本很难

在看解决方案之前,我们需要了解为什么现有的工具还不够用。

大多数现代实体消歧模型 (如 BLINK 或 GENRE) 都是在现代互联网数据 (如维基百科或 Common Crawl) 上训练的。它们的运作假设是: 提到的实体很可能存在于它们的知识库中。

历史档案提出了三个具体的挑战:

  1. “被遗忘”的人: 历史报纸上充满了在当地或一时出名,但未被维基百科等现代知识库收录的个人。如果模型试图强行将 20 世纪 50 年代的某位当地市长与现代维基百科条目联系起来,它就会产生幻觉般的错误连接。
  2. 困难负样本 (Hard Negatives): 历史是重复的。像“John Smith”或“Robert Kennedy” (政治家与苏格兰足球运动员) 这样的名字经常出现。区分两个同名的人需要敏锐的上下文理解能力。
  3. 规模: 历史档案是海量的。仅美国国家档案馆就保存着数十亿份文件。任何解决方案都需要具备极高的计算效率;我们无法承担在数十亿个 token 上运行笨重、缓慢的模型。

基础: WikiConfusables

这项研究的第一个主要贡献不是模型本身,而是用于教导模型的数据。为了训练一个模型区分“John F. Kennedy”和“John Kennedy (路易斯安那州政治家)”,模型需要看到这些令人困惑的配对示例。

研究人员创建了一个名为 WikiConfusables 的大规模数据集。

标准的训练通常涉及“简单负样本”。例如,将“John F. Kennedy”与“埃菲尔铁塔”配对。模型很容易学到这两者是不同的。但要区分“John F. Kennedy”和“John F. Kennedy Jr. (小肯尼迪) ”则难得多,但这这对于 AI 来说更具教育意义。

研究人员挖掘了维基百科的消歧页面 (具有相似名称的人员列表) 和 Wikidata 的家族树来生成困难负样本 。 他们过度采样了家庭成员 (同名的父亲和儿子) ,因为这是历史文本中经常出现的混淆源。

表 1: 数据集规模统计。

如表 1 所示,该数据集的规模是巨大的。仅共指训练集就包含超过 1.79 亿对数据。这种海量的“易混淆”数据迫使模型密切关注名字周围的上下文,而不仅仅是匹配文本字符串。

核心方法: 对比双编码器

现在,让我们看看架构。研究人员的目标是找到一种准确、可扩展且能够处理维基百科中未收录实体的解决方案。他们最终选定了对比训练的双编码器架构

什么是双编码器?

双编码器包含两个独立的神经网络 (编码器) 。

  1. 提及编码器 (Mention Encoder): 接收报纸中包含名字的句子 (例如,“Kennedy 在集会上发言……”) 。
  2. 实体编码器 (Entity Encoder): 接收知识库中的描述 (例如,肯尼迪维基百科页面的第一段) 。

每个编码器输出一个向量 (一串数字) ,代表文本的语义含义。如果提及和实体指的是同一个人,它们的向量在数学空间中应该非常接近。如果是不同的人,向量应该相距甚远。

这就是对比学习 (Contrastive Learning) 发挥作用的地方。在训练期间,模型被输入大量的 WikiConfusables 数据集。如果它将“John F. Kennedy”的向量放置得离“John Kennedy (路易斯安那州)”太近,就会受到惩罚;如果离正确的维基百科条目很近,就会受到奖励。

流程: 先共指,后消歧

研究人员引入了两步法: LinkMentions (用于共指) 和 LinkWikipedia (用于消歧) 。

图 1: LinkWikipedia 的模型架构。

让我们通过上面的图 1 来梳理架构,因为它直观地展示了整个过程。

1. 输入 (左上) : 我们从一段提到“Kennedy”四次的历史新闻片段开始。注意,提及 1、2 和 3 可能指的是不同的人,或者是同一个人。

2. LinkMentions 共指模型 (左中) : 首先,系统不看维基百科。它只看文档本身。它使用 LinkMentions 模型对所有四个提及进行嵌入。 然后,它执行凝聚聚类 (Agglomerative Clustering) 。 它根据上下文将看似同一人的提及分组。

  • *聚类 {1, 3}: * 模型确定这些指的是同一个“Kennedy”。
  • *聚类 {2}: * 这是一个不同的“Kennedy”。
  • *聚类 {4}: * 又是另一个独特的个体。

3. 原型生成: 对于每个聚类,系统通过平均该聚类中提及的嵌入来创建一个“查询原型 (Query Prototype)”。这比单个提及提供了更清晰、更强的信号。

4. LinkWikipedia 消歧 (右侧) : 现在,系统搜索知识库 (维基百科) 。LinkWikipedia 模型将查询原型与数百万个预先计算好的维基百科实体嵌入 (图中标记为 a, b, c, d) 进行比较。

  • 它检索最近的邻居。
  • 它计算“排序得分 (Rank Score)”。

5. 输出 (底部) :

  • 提及 #1 以高置信度链接到实体 ‘a’ (Robert F. Kennedy)。
  • 提及 #2 链接到实体 ‘b’ (JFK)。
  • 关键点: 提及 #4 被标记为 OOKB (知识库外) 。 得分 (0.4) 低于接受阈值。这意味着模型正确地意识到这个特定的“Kennedy” (也许是那位苏格兰足球运动员) 不是政治背景下讨论的那位,或者并未有效地存在于数据库中。

这种架构使得系统能够高效地处理数十亿份文档,因为维基百科实体只需要编码一次。

基准测试: Entities of the Union

为了证明他们的模型在历史数据上有效,研究人员不能依赖标准的现代数据集。他们创建了一个名为 Entities of the Union (EotU) 的高质量新基准。

他们选取了 20 世纪 50 年代和 60 年代的 157 篇新闻专线文章,特别是围绕国情咨文演讲日期的文章。这些文章由人工标记,以创建“黄金标准”真值。

表 2: 不同基准测试中的实体和人物提及情况。

表 2 将此历史基准与其他常见数据集进行了比较。虽然 EotU 的总提及次数看起来较少,请注意人物提及 (People Mentions) 一栏。它高度关注人物,这是最难消歧的类别。此外,与每个实体都存在于知识库中的标准数据集不同,EotU 包含许多没有维基百科页面的人,这使其成为对历史分析更现实的测试。

实验与结果

那么,模型的表现如何呢?

研究人员将他们的方法 (LinkWikipedia 和针对新闻微调的版本 LinkNewsWikipedia) 与该领域的重量级模型进行了比较: BLINK、GENRE 和 ReFinED。

击败历史领域的最先进水平

表 3: 不同方法的基准测试性能比较。第一行评估 Entities of the Union 中的所有实体,而第二行仅考虑知识库内的实体。

表 3 显示了结果。这些数字令人震惊:

  • 总体准确率: 微调后的模型 (LinkNewsWikipedia) 在历史数据集上达到了 78.3% 的准确率。最接近的竞争对手 ReFinED 仅达到 65.4%。
  • 知识库内准确率: 即使我们忽略那些困难的“被遗忘”的人,只看那些确实有维基百科页面的人,新模型仍然获胜 (89.0% 对比 GENRE 的 80.9%) 。

这证明了在“困难负样本”(WikiConfusables) 上进行训练显著提高了模型理解历史写作中细微上下文的能力。

分析组件 (消融实验)

研究人员还进行了消融研究,以观察其流程中哪些部分最重要。

数据集 ACE2004,其中包含的人物非常少。在其他现代基准测试中,有模型表现更好,但我们的性能与其他模型的范围相当。

注意: 上图显示了消融研究表 (表 4) 。

观察上图中的表格,我们可以看到每个步骤的影响:

  1. 基础 MPNet (Base MPNet): 使用标准的现成模型产生的结果很糟糕 (26.5%)。
  2. 仅消歧 (Disambiguation Only): 训练模型有巨大帮助,跃升至 69.1%。
  3. 添加共指 (Add Coref): 这是一个改变游戏规则的步骤。添加共指步骤 (在链接之前对提及进行聚类) 将准确率提高到了 77.9%

这验证了一个假设: 在尝试链接到维基百科之前解决文档内的共指问题,能为 AI 提供更清晰的信号。

应用模型: 一个世纪的新闻

最后,为了展示该工具的威力,研究人员将其应用于 1878 年至 1977 年间由 270 万篇历史新闻专线文章组成的庞大语料库。

他们成功消歧了超过 1500 万次人物提及 。 这使得以前不可能实现的定量历史分析成为可能。

图 2: 新闻专线文章中最常出现的实体的提及次数随时间的变化。

图 2 可视化了历史人物的兴衰。我们可以清楚地看到美国民主的“心跳”,艾森豪威尔、杜鲁门和尼克松总统的提及高峰与选举周期相对应。我们也可以看到 20 世纪 40 年代希特勒的提及量呈现出巨大的、黑暗的主导地位。

但该模型不仅能统计著名名字,还能让我们分析显著性

图 3: 提及次数与维基百科 Qrank 的对比。

图 3 显示了一个人在历史报纸上被提及的频率 (x 轴) 与他们如今在维基百科上的受欢迎程度 (Qrank,y 轴) 之间的相关性。

  • 趋势: 总体而言,当时出名的人现在也出名 (向上的斜率) 。
  • 异常值: 散点图也暗示了一些在过去被大量提及但如今知名度较低的人——即该模型特别适合重新发现的历史上“被遗忘”的人物。

结论与启示

这项研究弥合了现代 AI 能力与历史学家和社会科学家需求之间的关键差距。通过创建一个专注于“易混淆”实体的大规模数据集并利用对比双编码器架构,作者构建了一个能够驾驭混乱、嘈杂、不完整的历史文本世界的工具。

给学生和研究人员的关键要点:

  1. 数据质量至关重要: 创建 WikiConfusables (包含困难负样本) 与模型架构同样重要。随机负样本通常不足以完成细粒度的任务。
  2. 共指是关键: 在外部检索之前对文档内的提及进行分组,显著提高了准确性。
  3. OOKB 处理: 对于实际应用,你的模型必须知道何时说“我不知道”或“此人不在数据库中”。

这项工作为大规模定量历史分析打开了大门,使我们能够追踪数百万塑造了我们世界的个人的生活、职业和媒体报道,无论他们是否拥有维基百科页面。