摘要
游戏里有一个战斗日志(Logs)窗口,逐行记录“[时:分:秒] 玩家名:某某对某某造成了多少伤害”之类的事件。程序读日志时,每一行会用 OCR 读三次,三次结果一致才接受,这叫“一致规则”。
另一个实验(B167)读了 400 页日志,与预标注比,时钟只有 75% 一致、声明种类 74%。但本实验(B175)发现:B167 用的是严格规则,而生产中的路由(router,把一张截图分给各个读取器的程序)还打开了一个宽松一致选项,会修复漏掉的时钟括号、句末引号/句号,玩家名多数一致即可。B167 测的不是生产版。
因为每行三次读取的原文都保存着,不需要重新 OCR,直接离线用生产规则重算:test 上时钟 97.2%、声明种类 98.2% 与预标注一致。
要回答的问题
B167 报告的约 75% 是否代表生产版日志读取器?如果用生产实际使用的一致规则,结果是多少?
数据与来源
- B167 的 400 页日志及其 dev/test 划分、每行三次读取的原文、B167 的机器预标注(PRELABEL)和评分器。
- 预标注取自整帧 OCR,也就是三次读取之一。
方法
rescore.py 用生产规则离线重算每行的一致结果,然后用 B167 自己的评分器与它的预标注比较。不重新运行任何模型。
设置
同时报告严格规则和生产规则,dev 和 test 分开。
结果
与机器预标注的一致率:
| 字段 | dev 严格 | dev 生产 | test 严格 | test 生产 |
|---|---|---|---|---|
| 时钟 | 2187/2925 | 2705/2925(92.5%) | 988/1322 | 1285/1322(97.2%) |
| 安装模板 | 2082/2833 | 2568/2833 | 922/1238 | 1198/1238(96.8%) |
| 声明种类 | 2134/2917 | 2665/2917 | 977/1301 | 1278/1301(98.2%) |
| 行动者 | 1048/1461 | 1325/1461 | 466/608 | 597/608 |
| 法术 | 130/169 | 158/169 | 57/67 | 66/67 |
| 受到伤害 | 597/792 | 751/792 | 259/347 | 342/347 |
“安装模板”指这一行对应游戏文件里的哪条日志句式;“声明种类”指这一行在说什么事件(施法、受伤、被摧毁等)。
- 不一致几乎都是生产读取器不给值(拒识);“给了值却不同”只有模板 4 处、行动者 7 处(dev 5、test 2)。
- 9,264 个日志行里,严格规则判为冲突的 1,899 行:1,301 行在修复时钟括号后三次一致,304 行玩家名多数一致,剩下 294 行仍冲突;另有 111 行分数低于 0.9。
失败与负结果
- B167 原报告的约 75% 是严格规则下的数字,不代表生产版。原报告不改,以后引用这批数字以本页为准。
- dev 上仍有约 7% 的拒识(剩余的读取冲突和低分)。
局限
- 这是与机器预标注的一致率,不是审核过的准确率。预标注本身来自三次读取之一,所以一致率偏高。真正的准确率要等用户审核 B167 的行。
结论与下一步
生产版日志读取器在这批数据上与预标注高度一致,主要差距是拒识而不是读错。下一步需要人工审核 B167 的行,才能得到真正的准确率。
Comments