AI 改写时改动了数字吗?用 Python 比较金额、日期和出现次数

保存原稿与假设改写稿,用 difflib 查行差异、Counter 核对金额日期及出现次数,发现集合相同仍丢项的情况并说明语义审核边界。

AI 润色或改写时,金额、日期和数量很容易被顺手修改。可以先在本地保存原稿和改写稿,用行差异找到改动段落,再按出现次数比较数字。下面用一个假设改写案例展示:数字是否出现与出现几次都要核对。

这次比较的输入与规则

before 是人工原稿,after 是人为构造的假设 AI 改写稿,没有调用实际模型。正则先匹配 YYYY-MM-DD,再匹配普通整数或小数;使用 Counter 保存每个匹配字符串的出现次数。日期作为完整字符串比较,不拆成三个独立数字。

AI 改写时改动了数字吗?用 Python 比较金额、日期和出现次数

行差异由 difflib.unified_diff 生成,减号行是原稿删除部分,加号行是改写稿新增部分;它不推断谁说得对。Counter 的差值保留正数减少量和增加量,适合发现同一金额从两次变成一次的情况。

环境与完整代码

示例在 Windows、Python 3.11.15 的本地 CPU 环境实际运行。新建空文件夹,将后面完整代码保存为 07-rewrite-numeric-audit.py,在该目录用 PowerShell 执行:

python -m venv .venv
.\.venv\Scripts\python.exe 07-rewrite-numeric-audit.py

最后一行在保存代码后执行。macOS 或 Linux 使用 ./.venv/bin/python。输出文件留在当前目录,先用教学样本核对;代码不调用大模型 API,也不修改你的原始业务文件。

把完整代码保存为 07-rewrite-numeric-audit.py 后运行,先读 text_changes.diff 的删除与新增行,再读 numeric_changes.json 中减少和增加的数值及次数;换成真实原稿和改写稿时,保留两份输入。

from pathlib import Path
from collections import Counter
import difflib,re,json

# 人工原稿与假设AI改写稿,不是某个模型的真实回答。
before='''项目:演示项目
交付日:2026-10-08
两项金额:1500元、1500元
延期原因:尚待确认
'''
after='''项目:演示项目
交付日:2026-10-10
两项金额:1500元、1800元
延期原因:供应商延误
'''
Path('before.txt').write_text(before,encoding='utf-8')
Path('after.txt').write_text(after,encoding='utf-8')
diff=''.join(difflib.unified_diff(before.splitlines(keepends=True),after.splitlines(keepends=True),
                               fromfile='before.txt',tofile='after.txt'))
pattern=re.compile(r'\d{4}-\d{2}-\d{2}|\d+(?:\.\d+)?')
old,new=Counter(pattern.findall(before)),Counter(pattern.findall(after))
removed=dict(sorted((old-new).items()));added=dict(sorted((new-old).items()))
print(diff,end='')
print('removed_or_reduced:',removed)
print('added_or_increased:',added)
# 相同集合也可能丢了第二次出现的同一数值。
a,b=Counter(pattern.findall('费用1500,补贴1500')),Counter(pattern.findall('费用1500'))
print('same_set_but_count_changed:',set(a)==set(b),dict(a-b))
assert removed=={'1500':1,'2026-10-08':1}
assert added=={'1800':1,'2026-10-10':1}
Path('text_changes.diff').write_text(diff,encoding='utf-8')
Path('numeric_changes.json').write_text(json.dumps({'removed':removed,'added':added},ensure_ascii=False,indent=2),encoding='utf-8')
print('saved text_changes.diff and numeric_changes.json')

实际结果:金额与日期如何变了

--- before.txt
+++ after.txt
@@ -1,4 +1,4 @@
 项目:演示项目
-交付日:2026-10-08
-两项金额:1500元、1500元
-延期原因:尚待确认
+交付日:2026-10-10
+两项金额:1500元、1800元
+延期原因:供应商延误
removed_or_reduced: {'1500': 1, '2026-10-08': 1}
added_or_increased: {'1800': 1, '2026-10-10': 1}
same_set_but_count_changed: True {'1500': 1}
saved text_changes.diff and numeric_changes.json

原日期 2026-10-08 与一次 1500 被减少,新增日期 2026-10-10 与一次 1800;另一个示例的数值集合完全相同,但第二次出现的 1500 已经丢失。

“延期原因”从尚待确认变为供应商延误,虽然这段没有数字,行差异仍显示出来。审核时应回到事实材料核对原因;数字报告不能覆盖整篇事实完整性。代码不自动用原稿数值覆盖改写稿,因为某次变化也可能是经过授权的更新。

只比较数字集合会忽略次数。另一个例子中,费用和补贴原本各出现 1500,改写只剩费用1500;集合相等却丢了一项。需要把变化定位到具体句子和字段,不能只看到“1500还在”就通过。

替换为真实文件后的核对流程

先确认原稿是此次改写的事实基线,保留文件版本,再比较。逐条核对数字所属项目、单位、日期格式和约束条件;确认变更是否得到你的事实更新指令。对表格或合同字段,更适合按稳定字段编号对照,避免只靠全篇匹配。

数字和日期完全相同,仍可能把“上限”改成“承诺”、把元改成万元或删掉条件。这个报告只定位候选变化,不能判断原文事实是否正确,也不能代替逐句审核。

当前正则不覆盖中文数词、千位分隔符、科学计数法或带单位的完整数值。例如 1,500 可能被拆开,1.5万元和15000元也不会被理解成相同金额。需要这些格式时,先按业务约定扩展识别规则,并保存原始字符串与单位,不能把一次格式转换当数值一致性证明。

日期匹配只识别外形,不验证日期是否存在;2026-99-88 也符合这个形状。确需日期有效性时,应另做日历解析。相同数字改变所属人物或项目也可能漏掉,因此结尾仍应审核改变的完整句子。

本例适用于小文本的本地核对,没有实现复杂PDF布局还原、跨段语义对齐或自动发布。中文断句和段落换行不同会增加差异行,先理解格式变化再决定是否过滤空白。

官方资料与核对范围

资料读取日期为 2026 年 10 月 1 日。接口行为依照以下官方文档或项目说明核对,输出来自上述本地教学代码。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31822.html

赞 (0)
AI小管家的头像AI小管家
AI 写的 Python 代码怎么检查语法?用 ast.parse 和 compile 定位错误
上一篇 2026年10月1日 下午9:28
AI 训练图片方向怎么校正?用 Pillow 应用 EXIF 并核对像素尺寸
下一篇 2026年10月1日 下午9:28

相关推荐

  • Claude数学建模如何从问题拆解到模型构建

    Claude数学建模的价值,不是直接生成一组看似完整的公式,而是帮助使用者把自然语言问题转换成可分析、可计算、可验证的结构。面对“如何提高效率”“如何合理分配资源”这类表述,第一步应先明确研究对象、决策目标、可用数据、限制条件和最终评价标准。

    11小时前
    200
  • claude教学:从提问到整理资料的AI使用步骤

    Claude更适合承担需要阅读、比较、归纳和改写的工作。面对一份较长的会议记录、调研材料、项目文档或多轮沟通内容,它可以帮助你提炼主题、识别章节结构、抽取关键事实,并将零散信息重新组织成摘要、提纲、表格或行动清单。它也适合用于邮件改写、报告初稿、问答整理和不同语气之间的转换。

    11小时前
    200
  • claude数学能解决哪些题型?从提问到验算的使用指南

    claude数学更适合被当作一个会解释、会追问、能协助检查的数学助手,而不是只负责吐出最终数字的计算器。它可以帮助用户读懂题意、整理已知条件、选择公式、展示推导步骤,也能根据用户提供的解答寻找计算或逻辑上的漏洞。

    11小时前
    200
  • claude教科书中的AI对话使用场景与操作步骤

    本文把“claude教科书”作为学习AI对话方法的主题表达,不把未提供的书籍章节、作者观点、官方功能或具体版本当作已知事实。真正值得掌握的,不是背下一句所谓万能提示词,而是建立一套可重复的对话流程:先明确目标,再补充背景,随后规定输出方式,最后检查结果。

    11小时前
    200
  • claude数学公式怎么用 从文字描述到规范公式的操作步骤

    使用Claude处理数学公式,关键不是直接输入“帮我写公式”,而是把题意中的变量、条件、运算关系和输出格式交代清楚。自然语言往往省略主语、范围或单位,如果这些信息没有说明,生成结果就可能在符号定义、括号范围或等号两侧的逻辑上出现偏差。

    11小时前
    200
联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部