☰
实体抽取的事实边界怎么测:字符跨度、否定与关系证据
2026/10/25 17:55:06 网站建设 项目流程

实体名字全部找对,也可能抽出完全错误的关系。“Acme did not acquire Birch.”包含两家公司的名字,却没有宣称收购发生。把实体识别的正确率当作关系事实正确率,会奖励这种错误。

10月7日Anthropic发布Haiku 5.5并介绍可调推理投入;官方发布页可以确认产品能力声明,不能证明在某份实体抽取数据上的效果。选择快模型或增加推理预算前,先让评测知道什么叫错。

让标注回到原文位置

跨度应规定字符还是字节,端点是否包含,是否在归一化文本上计算。中文、emoji及组合字符会让不同计数口径产生分歧。以下教学示例采用Python字符串索引、左闭右开,保留原始文本,不先做大小写或空白归一化。

text = "Acme did not acquire Birch." gold = [(0, 4, "ORG"), (21, 26, "ORG")] assert [text[a:b] for a, b, _ in gold] == ["Acme", "Birch"] def exact_scores(pred, truth): p, g = set(pred), set(truth) hit = len(p & g) return hit / len(p) if p else 0, hit / len(g) if g else 0 p, r = exact_scores(gold, gold) assert p == r == 1 candidate = {"head": (0, 4), "tail": (21, 26), "relation": "acquire", "asserted": False} assert candidate["asserted"] is False print("perfect entity spans do not assert an acquisition")

这里手工标注否定,不是用一个not in text分类器解决所有否定。否定可能只作用于价格或时间,双重否定、引语与传闻也需要单独规范。真实系统若输出“收购”,必须指向支持该事实的证据片段,而不能只返回两个实体。

回归集应该故意留下困难的近邻

同一对实体可构造“已收购”“没有收购”“计划收购”“否认收购传闻”四种不同标签。它们表面相似,关系状态不同。拆分训练集与测试集时,还应按模板族、文档或实体组合分组,避免只换公司名就跨到测试集。

实体指标可报告严格跨度与类型F1;关系指标则应包含关系类型、方向、状态和证据位置。漏抽与无证据添加需分别统计。空文档的全空预测不能靠约定的完美precision掩盖模型在其他文档上的幻觉,应同时给出支持数与文档级失败率。

增加推理预算的比较也应配对进行:相同原文、相同schema与相同最大重试次数,记录解析失败、截断、未知状态。若只统计成功解析的回答,复杂模型可能通过丢掉难例获得漂亮分数。

本文没有调用Haiku或比较模型。上方代码只验证跨度与事实关系不能合并计分。一个值得保留的抽取结果,应让读者从关系对象回到原文,再看到它究竟是事实、意图还是被否认的传闻。

本地验证:上方各 Python 代码块独立保存后,在 Python 3.9.6 的临时目录以python3 example.py执行,退出码均为 0;输出分别为perfect entity spans do not assert an acquisition。数据为文中教学夹具,不是模型、GPU或线上性能测量。

Haiku公告发布:2026-10-07。后续模型评测仍需独立数据与原始输出。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询