AI 入门与核查AI 应用

AI清洗“1,234”先别删逗号:按来源规则核对数字

AI清洗数字文本时,先取得来源对小数符、分组符和负数的定义,再转换。1,234既可能是1234,也可能是1.234;没有来源规则时,删除逗号只是选择了一个未经确认的答案。下面用6条同单位的重量调整记录,交付确定值、歧义与缺失三种结果。

数码秤上放着一个小型白色物体,用作重量记录的配图
配图:Shawn Rain · Unsplash License称量场景摄影配图;不是本文虚构报表的真实库存、秤读数或AI运行结果。摄影:Shawn Rain / Unsplash。

先明确任务与结果

按本例明确规则,前3条都是1234.50千克,第4条是−20.00千克,四条确认记录的小计为3683.50千克。N05的1,234保留1234与1.234两个候选,N06保留缺失。不要把这两条当零,也不要把确认小计写成六条记录的完整总量。

同一个逗号,在两份报表里可以负责不同事情

先问导出方字段怎样表达数值,再讨论换成什么格式。来源P1用点作小数符、逗号分组;P2反过来。若把P2的1.234,50直接删掉逗号,就会得到1.23450,数值为1.2345,而不是1234.50。它仍像一个合法数字,错误不会自动显示成报错。

本例是编辑设计的虚构重量调整报表,所有记录单位均为kg。P1–P4是给定的来源合同,不是按文件语言、同事所在地或国家名称推测出的通用规定。负调整量表示本教学合同中的扣减,不是对真实库存是否可信的审计结论。

Microsoft的NUMBERVALUE说明允许显式指定小数符和分组符;省略参数时使用当前区域设置。函数能按指定规则转换,不负责证明你指定的规则就是原作者的含义。

本例先给来源规则,再处理数值
规则小数符分组符额外约定
P1点 .逗号 ,允许合法三位分组
P2逗号 ,点 .分组不能当作小数
P3逗号 ,U+202F窄空格保留原字符以便核对
P4点 .逗号 ,包围整个数值的括号表示负调整

保留原始字符串、规则ID与单位

下面是完整原材料,没有真实企业或客户数据,也不是某个AI模型的运行输出。N03在1和234之间有一个实际U+202F字符;复制时不要先把所有空白删除。N05故意没有来源规则,N06是真正空字段。

CSV里的双引号用来包住含逗号的字段,不是数值的一部分,也不能保证表格软件按文本保留它。Microsoft的Text/CSV导入说明支持关闭自动类型检测。导入时将raw_value指定为文本,保留完整原字符串后再按来源规则转换;若已经被自动转换,重新导入保留的源CSV,仅改显示格式不能还原原值。若列已经错位,按CSV字段边界与列类型指南修复结构,别在错列数据上继续猜小数点。

完整源CSV:6条同单位调整记录

row_id,raw_value,rule_id,unit
N01,"1,234.50",P1,kg
N02,"1.234,50",P2,kg
N03,"1 234,50",P3,kg
N04,(20.00),P4,kg
N05,"1,234",UNKNOWN,kg
N06,,P1,kg
N03含U+202F;N05规则未知;N06为空。保留这一份原件,结果另存。

让AI输出核对台账,而不是覆盖源列

要求AI为每条记录解释采用了哪个来源规则,保留raw_value,并把无法确定的行留在结果中。这样,即使规范化值看起来整齐,接收人仍能回到原字符串复查。

下面请求应接在完整CSV之后使用。它只组织和解释这个练习;没有执行Excel或某个模型的证据,参考答案也不能当作模型成功率。

数字文本清洗与复核请求

请按上方完整CSV和以下合同整理数值,保留全部6条、row_id、raw_value和unit,不覆盖原列。
P1:点为小数符,逗号为三位分组符。
P2:逗号为小数符,点为三位分组符。
P3:逗号为小数符,U+202F为三位分组符。
P4:使用P1分隔规则,包围整个数值的括号表示负调整。
UNKNOWN:来源规则没有提供,不得从外观、语言或常见习惯选择。
输出normalized_value与parse_status(confirmed/ambiguous/missing),另列依据和未决候选。N05保留1234与1.234两个候选,不将其任选为确认值;N06为空,不转成0。识别N03的U+202F。
只汇总confirmed行,明确写“确认小计”,解释为什么六条完整总量未知。不要换算单位,不要统一删除标点,不把计算结果描述成真实库存审计或模型亲测。
自编完整规则请求;源CSV见上一材料块。歧义和缺失是需要交接的结果,不是可以省略的失败行。

完整参考答案:4条确认、1条歧义、1条缺失

N01按P1去掉分组逗号,N02按P2去掉分组点并把小数逗号规范为点,N03只按P3移除已声明的U+202F分组符;三条都表示1234.50。N04先验证整个值确实被括号包围,再按P4保留负号,得到−20.00。

四条确认值相加为1234.50+1234.50+1234.50−20.00=3683.50千克。N05与N06仍留在交付台账中,但不参与这个小计。这里没有舍入政策来替未知数补值,也没有把缺失视为零的依据。

规范化值与状态的完整参考CSV

row_id,normalized_value,parse_status,unit
N01,1234.50,confirmed,kg
N02,1234.50,confirmed,kg
N03,1234.50,confirmed,kg
N04,-20.00,confirmed,kg
N05,,ambiguous,kg
N06,,missing,kg
编辑推导的答案,不是某个模型的实际导出;源列仍应与这一结果并排保存。

两条未决记录也有明确交付结果
记录保留什么为什么不能确认
N05候选1234或1.234;normalized_value空没有小数/分组规则,两种解释均有可能
N06空原值;normalized_value空;missing没有观测数值,不能靠函数默认值补零

用函数处理已确认规则,别让默认值替你做业务判断

把原CSV读成A:D列,A是row_id,B是raw_value,C是rule_id,D是unit。对已确认P2的N02,也就是B3,可以参考下式。它显式指定逗号小数和点分组,并在转换前保留空输入。这里给的是编辑候选,仍需在你的目标应用中执行并对照参考值。

这条公式不是全列自动识别器。它不能套在P1、P3、P4或UNKNOWN行上,再假定所有数字都被正确理解。N03需要匹配真正的分组字符,N04还需要先应用来源负数合同;N05缺少依据,应先返问来源,而不是让函数任选一种含义。

Microsoft同时说明NUMBERVALUE对空字符串返回0。因此,“公式返回0”不能反过来证明原件有一个零。保留原值与状态,再按缺失与已知零的核查方法区分两者。

仅针对已确认P2记录N02的候选公式

=IF(B3="","",NUMBERVALUE(B3,",","."))
B3是N02的完整原值;逗号分隔的公式写法可能需要按应用地区调整。期望数值1234.5,与显示1234.50等值。

逐条修错,再重算小计

一个错误教学稿可能把N02写成1.2345、把N04写成正20、把N05直接选成1234,并给N06填0。四处错误来源不同,不能仅让AI“重新算一遍总和”。总和可能按错误输入算得很准确。

先恢复每行的原字符串和合同:N02按P2重读,N04恢复负号,N05恢复候选状态,N06恢复missing。再让AI返回完整6行和仅含N01–N04的确认集合,最后重算3683.50。只改最后一句数字,会留下后续导出仍会重复使用的错误明细。

一个能计算的数字,也可能解释错了原件

编辑设计的错误稿

N02原值1.234,50,AI删掉逗号后写成1.2345,并标为confirmed。

按来源规则修正

N02的P2明确逗号是小数符、点是分组符,规范化值应为1234.50。保留原值和P2依据。

这里不是调整显示小数位。1.2345与1234.50是不同数值;把前者格式化成两位小数不能恢复原件含义。

把确认小计和未决事项一起交付

交付材料应含原CSV、规则表、规范化结果、确认集合以及N05/N06的待核问题。对于N05,请来源确认逗号的角色;对于N06,请确认是未填、未测还是另有约定,不要求AI编出一个更好看的完整总数。

若来源后来确认N05是1.234,保留三位小数再按团队另行确认的汇总/显示规则处理;不能因为其他行显示两位,就先把它改成1.23。数字含义、计算精度和展示格式仍是不同决定。

这份练习交付前的可检查条件

  • 6个row_id均在,raw_value与unit未被覆盖,N03的原字符可追溯。
  • 确认值依次为1234.50、1234.50、1234.50、−20.00。
  • N05保留两个候选、N06保持missing,两条都没有混进确认集合。
  • 小计明确标为4条确认记录的3683.50千克,六条完整总量仍未知。
  • 目标应用里的实际转换结果另有记录;未运行时写未运行,不声称实测。

参考资料与延伸阅读

继续阅读