主题
正文里的数字从哪来
一篇论文最容易出事的地方是数字:抄错一位、串了行、或者干脆编一个。线上曾有一版在 77 个指标下让模型自由抄数,串号和编数占了评审意见的四条。现在的做法叫数值原子化:模型不写数字。
模型只写占位符
起草时模型看到的是一张「允许的数值清单」,每个指标有一个原子 id,例如 age.coef(年龄的系数)、age.p(它的 p 值)、r2、n。模型在正文里写的是占位符:
{{m:age.coef@job2}}成文后代码把它展开成出版格式的值 + 紧跟的 [D n],例如 0.312 [D14]。几种组合形态也由代码拼:
<var>.coefline:整段「β = 0.312 [D14] (SE = 0.041 [D15], 95% CI [0.23, 0.39] [D16][D17], p < 0.001 [D18])」,每个数字紧跟自己的记号。r2.pct:R² 的百分数形式(「解释了 54.6% 的方差」),只在摘要 / 讨论 / 结论里展开成百分数,结果与方法节一律小数。perm:置换检验整句。
展开后的一致性由代码保证:占位符不存在于清单 → 含它的句子整句删除,报告页记一条降级说明「正文用了 N 个不存在的数值占位符」;模型自己手写了 [D n] → 全部移除,只保留系统展开的;任何没被认出的占位符形态都会被兜底清掉并把该句标待核实,绝不进 PDF。
裸数字
展开之后还有一道检查:一句话里的每个数字,句内要有值相符、种类也相符的 [D n];没有就是「裸数字」——大概率是模型自己写的。豁免项:年份、两位以内的整数、90% / 95% / 99% 置信水平、Fig. / Table / Model / H / § 编号、文件名里的数字、以及「显著性水平设为 0.05」这类 α 声明。
裸数字的清单记在版本的门禁结果里,同时数字门禁会把这句标成待核实(原因写「含数字但没有可用的 [D n] 指标支撑」或「值都对不上」)。处理方式见 记号与待核实。
D 记号串号的情况系统会先自动修一遍:句内数字与某个唯一同值的指标匹配,就把记号改过去,改动记进「D 标记校正」事件。修不了的才留给你。
检索统计不是实验结果
文献阶段产出一组「检索统计」原子:检索源数、检索式数、候选篇数、去重后篇数、筛入篇数、滚雪球轮数。它们和分析指标一样可以引用,但只能出现在讲检索的句子里。判断规则:占位符所在句子里出现了性能指标词(accuracy / precision / recall / F1 / AUC / Dice / 准确率 / 召回率 / 百分点 / 得分……),或有百分号却没有任何检索用语(检索 / 文献 / 篇 / 候选 / 去重 / 筛 / search / screen / records……),就判定为「拿检索数当实验结果」,该占位符不展开,整句按不存在的占位符删除。
「为提高召回执行 1 轮滚雪球补充 327 篇」是正常检索句,不会被误伤——规则只看指标名词与单位,不看「提高」这类动词。
综述的「范围与方法」节、IMRaD 的「方法」节末尾还会挂一张检索与筛选流程表:源、检索式、候选 → 去重 → 筛入的数字、冻结的纳入排除标准、精筛方法。全部代码渲染,数字同样走占位符展开并带 [D n];表格行本身不进裸数字检查。这张表刻意不叫 PRISMA——它是按本任务检索日志如实报告流程,不是系统综述的注册规范。
数字的固定格式
所有指标数字只有一个出版格式函数,正文、表格、允许清单、门禁比对都用它:
| 类型 | 格式 | 例 |
|---|---|---|
| p 值 | 三位小数;小于 0.001 写 < 0.001 | p = 0.034、p < 0.001 |
| 系数 / r / R² / β / d / η² / SE / CI 端点 | 三位小数;绝对值小于 0.0005 用科学计数 | 0.312、3.20e-05 |
| 百分数(键名含 pct / percent) | 一位小数 | 54.6 |
| 绝对值 ≥ 1000 的浮点 | 千分位、无小数 | 12,345 |
| 整数 ≥ 10000 | 千分位 | 1,200,000 |
| 年份形态(键名含 year / date、值在 1900–2100) | 原样整数,不加千分位 | 2008 |
| 其它描述统计 | 两位小数;小于 0.01 用三位有效数字 | 74.37、0.00312 |
p = < 0.001 这种双符号会被自动修成 p < 0.001。
图表编号
图表在起草前就已完整预编号,模型按那个号写「Fig. n」;统稿时只保证块的顺序与编号一致,不重排。悬空的图表引用(引了不存在的图)会被删除并记进统稿事件。
坑
- 正文只剩首词或半句,不是删句删过头,多半是模型输出被截断(tokens 撞到上限)。看研究记录里
run.finished的 tokens 字段,重新生成本节即可。 - 删句有安全阀:一节删句后剩不到原来一半、或原文 ≥ 40 词而删后不足 40 词,就放弃删除、原文保留、只标待核实。所以偶尔会看到带空槽的句子(「were and」「( , )」)留在正文里挂着待核实——这是有意的,宁可漏删不误删。
- 数据分析类任务免费档每个作业的置换 / bootstrap 迭代次数是 200 次(专业档 1000 次),p 值的分辨率对应有限。