日语摘要数字校验:先统一数值与单位
JP Number Grounding 将日语文本中的汉字数字、日期、时间和计数单位规范化,再核对摘要与原文。它既能识别不同写法表达的同一数值,也能发现数字相同但单位被改写的问题。
AI 深度解读
日语会议摘要里的数字,不能只靠 grep 查有没有出现。原文写「三千五百万円」,模型写「3,500万円」,金额相同,字面却对不上;原文是「30件」,摘要变成「30人」,数字对上了,事实仍然错了。
作者做了一个小工具 JP Number Grounding:先统一数字、日期、时间和计数单位的表示,再检查摘要中的值是否有原文依据。它适合给 AI 摘要加一道便宜的检查,但不能替代事实核对。最值得借鉴的,是它如何划清规则能检查的边界。
为什么搜到相同数字还不够
日语中,同一个值可以写成汉字数字、阿拉伯数字或全角数字,还可能带上「万」「億」这样的数量级。日期有年号,时间有「午前」「午後」,数量后面还有计数单位。
例如「三千五百万円」和「3,500万円」都是 3500 万日元,即 35 million yen。直接提取数字比较,可能把正确转换误判成错误。
另一种情况更危险:「30件」变成「30人」。数字搜索会放行,但「件数」已经被改成了「人数」。
要比较的是带单位的值,不能只比较数字字符。
作者的做法是从原文和摘要中提取数量、日期与时间,将汉字数字、万/億、全角数字、年号、午前/午後及计数单位转换成统一形式,再检查摘要里的值是否得到原文支持。
一段会议摘要,能查出哪些错误
作者给出的实际运行示例,原文包含这些信息:
- 来期预算为「三千五百万円」。
- 从「令和7年4月1日」开始。
- 说明会从「午後2時」开始。
- 收到「30件」咨询。
- 下次会议在「5月18日」。
模型摘要则写成:「予算は3,500万円、2025/4/1開始。説明会は14:00。問い合わせ30人。期限は5月1日。」
这里,金额、年号日期和时间都只是表示形式发生变化;咨询数量的单位却从「件」换成了「人」,还出现了原文没有的「5月1日」期限。
下面这段调用负责检查摘要中的值是否有原文依据,source 和 summary 分别放入上述两段文本:
from jpnumground import check
r = check(source, summary)
r["ok"] # False
要看的是 r["ok"]:这次返回 False,作者称工具抓到了计数单位替换和无依据日期两处问题。不过,它抓到「5月1日」不受支持,并不代表它理解了「下次会议」与「期限」的语义区别。
仓库附带 30 个用例。工具在这些用例上判对了 30/30,单纯检查数字是否出现在原文中则是 14/30。作者明确说明,用例和规则都由自己编写,因此这是回归测试结果,不能当成独立基准测试。
怎么接进 Agent,又该停在哪里
JP Number Grounding 提供 MCP server、CLI 和 Python library,只依赖 Python 标准库,不发起网络请求,采用 MIT 许可证。
通过下面的配置,可以让支持 MCP 的 Agent 启动它:
{"mcpServers": {"jp-number-grounding": {"command": "python", "args": ["-m", "jpnumground.server"], "cwd": "/path/to/jp-number-grounding"}}}
要注意 cwd 这一项:/path/to/jp-number-grounding 是需要替换的项目路径,启动命令则是 python -m jpnumground.server。
作者建议在 system prompt 中规定:从日语文本生成纪要或摘要后,调用 jp_number_grounding_check,修正或删除所有没有依据的事实,再发送结果。原文没有给出 CLI 的具体调用方式。
这道检查也有明确盲区。原文出现过 15%,摘要把这个比例安到另一个项目上,工具仍可能通过。它检查值是否存在,不检查值是否用在正确的对象上。目前它只处理日语,遇到无法识别的数字形式会报告未知,而不是猜测。
我的判断
我认同先做归一化,再用规则检查的思路。金额、日期和计数单位的转换有明确结构,适合做成可重复执行的校验,尤其能补上纯数字搜索的漏洞。
但 30/30 只能说明当前回归用例通过了。真实会议中的口语、省略和非标准写法覆盖到什么程度,原文没说清;误报率、漏报率和执行耗时也没有数据。
相比再让模型核对一遍,这个工具的检查范围更明确,也无需网络请求。至于准确率和成本谁更好,作者没有提供对照数据。system prompt 中的调用规则是否可靠执行,也只是经验之谈。
检查通过,只能说明值在原文中有依据,不能说明整句事实正确。
能拿来做什么
- 给现有日语纪要 Agent 增加一次
jp_number_grounding_check调用,将不受支持的值送回修改,并保留检查结果供排查。 - 在 Python 摘要流程中用
check(source, summary)做提交前检查,同时保留人工核对「数值属于哪个项目」的环节。 - 用团队自己的日语会议样本补充回归用例,优先覆盖金额、年号日期、时间和计数单位,再判断是否适合接入日常流程。