报销四千八要不要总经理签字?知识库说不用:制度里的“肆仟伍佰元”它读错了

29 阅读3分钟

“我报销四千八,问知识库要不要总经理签字,它说不用,部门经理签就行。结果财务退回来了,说超过四千五就得总经理签。”

说这话的是我朋友老潘,在吴中一家做精密零件的公司管采购。他们的本地知识库是我去年帮着搭的,放了采购、财务、行政这些制度文件。

配图

图:Coyau / Wikimedia Commons / CC BY-SA 3.0

我先找到那条制度。费用报销办法里写的是:“单笔金额超过人民币肆仟伍佰元(含本数)的,须经总经理审批。”检索其实把这条找回来了,问题出在后面:模型要判断“四千八”是不是超过“肆仟伍佰元”,它把大写金额读成了五千四百元,于是得出了不需要的结论。

我又把所有制度文件里的金额过了一遍,写法五花八门:有的写大写“伍仟元”,有的写“5000元”,有的写“0.5万元”,还有“三千元以下”这种中文小写。同事提问时又是另一套,“四千八”“4.8k”“四八零零”都有。

老潘问:“是不是换个更聪明的模型就好了?”我说聪明一点也许会好些,但金额判断这种事不该靠模型心算。我们改了三处。

第一处,入库时统一金额写法。入库前用一个小程序把文件里的金额全部识别出来,在原文后面括注阿拉伯数字,比如“肆仟伍佰元(4500元)”,原文保留不动,方便核对。

第二处,金额比较交给计算步骤。提问里出现金额时,先换算成阿拉伯数字,再和检索到的门槛逐条比较,“含本数”“以下”“超过”这些边界词按规则表处理,比较结果再交给模型组织回答。模型只负责把话说清楚,不负责算。

配图

图:佚名(1920 年收据,作者不详) / Wikimedia Commons / 公有领域

第三处,回答写明比较过程。比如“你说的4800元,超过制度规定的4500元(含本数),须经总经理审批,依据某某办法第几条”,提问的人一眼能看出结论是怎么来的,错了也容易发现。

验收我们准备了四十道金额题,特意放了很多边界值:正好等于门槛的、差一块钱的、用大写问的、用“k”问的。改之前,四十道里错了十一道,大部分错在大写金额和边界值上;改之后全部答对。原来的一百道普通题重跑一遍,结果没有变化。

配图

图:CEphoto, Uwe Aranas / Wikimedia Commons / CC BY-SA 3.0

老潘说,现在财务退单少多了。

你们公司的制度里金额是怎么写的?知识库遇到金额判断靠谱吗?欢迎在评论区聊聊。

金额统一写法和边界规则表的做法,我整理在 evafang.com 上。