两个榜单交集为空:传播分 87 分的那篇文章,学术要件 0/6

口径先钉住:本篇的相关系数是我自己写的脚本算的,不是引用别人的结论。 脚本 probe-academic.py 与打分器 score.py 都在仓库里,可复现。 全文 31 篇文章(六项要件)逐条扫过,判据的反例用例也在仓库里。

我给这个系列写过两把尺子。一把 30 多篇文章都在用,另一把刚写完。

问题是这两把尺子量的是不是同一件事?我一直没验证过。

这一篇是那个验证的结果。结论比我预想的难看:它们基本不相关。


一、两把尺子

尺子 A:score.py(写了很久,CI 里在跑)

五维度,满分 100:

维度 / 分值 / 判什么

  • D1 具体物密度 ------ 25 ------ 标题和正文里有多少个「具体物」(数字+量纲、文件路径、行号)
  • D2 证据可查性 ------ 20 ------ 有没有「附:本文引用」小节;带「已实跑/已取全文」标记的锚点有几个
  • D3 免责边界 ------ 15 ------ 有没有写「本篇不成立的结论」
  • D4 平台适配 ------ 12 ------ 四平台变体与封面齐不齐
  • D5 结构完整 ------ 20 ------ 正文字数、标题长度、小红书是否超 1000 字

尺子 B:probe-academic.py(刚写,六项要件)

从「一个主张要能扛住不同意它的人」推到单篇文章这一层:

编号 / 要件 / 缺了会怎样

  • R1 ------ 相关工作定位 ------ 读者无法判断这是发现还是重复劳动
  • R2 ------ 版本锚点 ------ 半年后上游一变,句子静默变错
  • R3 ------ 方法可复述 ------ 结论不可再生产,退化成传闻
  • R4 ------ 数据/代码可得性 ------ 证据与断言之间没有连接
  • R5 ------ 证伪条件 ------ 主张不可检验,只是信念
  • R6 ------ 更正/版本历史 ------ 整个历史不可信

这两把尺子看的是完全不同的东西。 D4 测「四平台变体齐不齐」, 而学术文章只有一个规范形态;D5 给 ≥5000 字加分,而学术写作奖励压缩。

但「设计上不同」不等于「实测不相关」。 我得算。


二、算完之后

bash 复制代码
python3 score.py --json            # 逐篇的 D1--D5
python3 probe-academic.py          # 逐篇的 R1--R6
# 然后求秩相关

口径必须先钉住 :只用判据写成之前就存在的 30 篇 。 把「按 R1--R6 写出来的文章」再喂回 R1--R6 判据是循环的------ 我按尺子做的布,用同一把尺子量必然满分。冻结样本 n=30。

ini 复制代码
score.py 总分 vs 学术要件数
  皮尔逊   r  = +0.203
  斯皮尔曼 ρ  = +0.295

再剔除 D4(平台适配 12 分) + D5(结构完整 20 分),只留 D1+D2+D3
  皮尔逊   r  = +0.187
  斯匹尔曼 ρ  = +0.366

剔掉两个平台维度之后,相关性依然只有 0.37。

而且两个榜单的前五名,交集是空集:

css 复制代码
score.py 前 5    : post29(87分/0要件) post30(87分/1) post31(82分/1)
                   post25(77分/2)    post26(77分/3)
学术完备度 前 5  : post23(4要件/62分) post17(3/19)  post19(3/49)
                   post20(3/49)         post21(3/42)
重合            : 无

score.py 打最高分的那篇,学术要件是 0。 学术要件最高的那篇,score.py 只给了 62 分。

2.1 循环测量会把数字推成什么样

写完本文之后我又算了一次,这次把这两篇也放进去(n=32):

口径 / n / ρ(总分) / ρ(剔平台维度) / 前五交集

  • 冻结(判据写成之前的 30 篇) ------ 30 ------ +0.295 ------ +0.366 ------ 空集
  • 全样本(含本系列两篇按判据写的) ------ 32 ------ +0.309 ------ +0.382 ------ 空集

ρ 反而上升了一点,完备度前五名的榜首换成了本系列两篇(6/6)。

这个方向值得说清楚:它没有证明「按判据写就能提高相关性」, 只证明了「用自己设计的样本测自己的判据,得到的数字没有意义」。

所以本文第二节只采信冻结口径那组数字。 第二组数字也列出来,是为了让人看见这个偏差有多大------ 一个只报有利数字的实验,和没报数字一样不可信。


三、六项要件全库扫描(冻结口径 n=30)

scss 复制代码
R1 相关工作定位        1/30  (  3%)   ← 只有 post19
R2 版本锚点          13/30  ( 43%)
R3 方法可复述        14/30  ( 47%)
R4 数据/代码可得性      1/30  (  3%)   ← 只有 post19
R5 证伪条件          12/30  ( 40%)
R6 更正/版本历史       6/30  ( 20%)

平均 1.63/6

两项最低的都只有 3%,而且都只有 post19 命中。

而 post19 恰好就是唯一引用了 4 篇论文的那篇(arXiv:2605.12925、 arXiv:2607.16345、arXiv:2607.17927、arXiv:2607.01793)。

这不是两个独立缺陷,这是一个缺陷的两个投影:没做过学术定位。


四、这个结果说明什么,不说明什么

它不说明 score.py 坏了

score.py 测的是「作为四平台连载帖子写得好不好」。 在这个维度上它是对的------D4/D5 不是 bug,是它履行的另一个合同。

小红书正文硬上限 1000 字、公众号标题硬限 64 字, 这些约束对「四平台连载」是真约束,对学术文档则完全不存在。

所以我没有改 score.py 一个字。

它说明差值本身是信息

复制代码
差值大的文章 = 传播上很成功、学术上不成立

post29 是最好的例子:87 分,0 件学术要件。

这种文章不是写得不好,是它把一个工程观察包装成了研究结论。 它读起来完全像一篇研究文章:有具体数字、有锚点、有引用节、 有「已实测」标记------但它没有一个可证伪的断言,也没有一处相关工作定位。

这正是「像论文」和「是论文」的区别。而这个区别,score.py 测不出来。


五、两个方法的共线性问题

顺手报一个我在算的时候撞上的事。

score.py 自己的置信度分析里有一条:五个维度之间高度共线 。 D1(具体物密度)与 D2(证据可查性)的相关是 +0.75 , D2 与 D4 是 +0.71。

这意味着加权和基本等价于「D1 和 D2 加起来」, 剩下三个维度对排序的影响很小。

这不致命,但它解释了本文的一个现象:

为什么 score.py 对「学术上不成立」的文章能给高分?

因为一篇写得像研究文章的工程观察,天然就会堆很多具体物(D1 高) 和很多「已实测」标记(D2 高)。它学的是形式,不是内容。

这也是为什么我在这个仓库里坚持另一件事: 每道判据都必须做反向自测------构造一个让它失败的输入。

probe-academic.py 的 18 个正反例、check-academic.py --selftest 的 7 条反向破坏用例,都是这个原则的产物。

而且这套自测当天下午就抓到 5 次判据自身失效,其中三次是我自己犯的:

  1. 路径写错,导致全部 exit 2 被当成「抓到」
  2. check-workflow.py 自己 import yaml,被零依赖守卫抓到
  3. 域名不存在返回 SSL 错误,判据却 exit 0
  4. R6 词根 补测 把「C3 要补测试」误判成勘误记录
  5. R2 正则 [0-9a-f]{7,40} 把腾讯云文章 ID (2751800)当成了 commit SHA

第 4、5 条都是写这篇时被抓到的 ------第 5 条是写完 post32 抽验引用时才发现的。 纯数字串在十六进制字符类里合法,所以 7 位以上的文章 ID 全部会被误判成版本锚点。 现在收紧成「必须含至少一个 a-f 字母」,并把这条误报固化成回归用例留在自测里。

词根匹配不看后缀、字符类不排除纯数字------一定会串到日常用语上。 前三次分别是路径写错、自己违反自己的规则、把错误算成成功。


六、这个结论什么情况下是错的

如果两个榜单的前五名有交集,本文的核心结论就错了。 实测交集为空集,且剔掉平台维度后 ρ 仍只有 0.373。

具体地说,以下任一成立则需要修正本文:

  1. score.py 的五个维度里其实已经隐含了学术完备度,只是权重太小

(比如 D3「免责边界」实际上承担了 R5「证伪条件」的功能)------ 实测不支持:D3 单独与 R1--R6 总数的相关需要重新算,本文没算这一项, 这是本文的一个已知缺口;

  1. 相关性低是因为 score.py 权重不合理,而不是因为它们量不同的东西------

若是前者,调权重就能解决;本文的立场是它们量不同的东西, 这个立场依赖于「D4/D5 在学术文档里不存在」这个前提;

  1. 样本 n=30 太小,ρ 的置信区间很宽------

冻结口径下 ρ=+0.295,在 n=30 时显著不为 0,但显著不等于大 , 而本文的论点恰恰是它小到不足以支撑任何实用用途 。 严格说,n=30 的 ρ 置信区间上界仍可能到 0.6 量级, 本文没有做 bootstrap 或 Fisher z 变换来量化这个区间------这是缺口;


七、局限

  1. 本文只测了「要件齐不齐」,不测「结论对不对」。 一篇六项全中且全错的文章,

拿满分。要件齐 ≠ 结论对,后者靠可证伪性保证,不由判据保证。

  1. score.py 的 D2 不验真假。 它只数「已实跑」标记的个数,

不验证标记是否属实。本文另有 verify-anchors.py 补时效性, 实测发现 14 条「同上」类断言读者根本无法点开。

  1. 相关性不必然意味着因果。 本文只主张「两把尺子不可互相替代」,

不主张「学术要件齐了文章就好」------后者本文没有测,也不打算测。

  1. 判据只匹配文本痕迹。 一篇文章做到了某件事但没写出来,会被判为没做到。

所有比例都是下界,不是事实。 0/30 说的是「至少这些没写在文里」, 不是「这些文章没做这些事」。

  1. 本文自己也是被自己的判据测的。 第六节那个缺口------没算 D3 与 R5 的单独相关------

正是本文自己 R5 的体现:我写下了「什么情况下我错」,但我的证伪条件里 有一条我根本没算。


八、复现方法

bash 复制代码
git clone https://github.com/Ikalus1988/account-ops-workflow
cd computer-use-demo

# 1. 两把尺子各自的原始输出
python3 score.py --json
python3 probe-academic.py

# 2. 判据的可信度(先跑这个,否则后面的数字不可信)
python3 probe-academic.py --selftest        # 18 个正反例
python3 check-academic.py --selftest        # 8 条反向破坏用例

# 3. 相关系数怎么算的,见本文第四节开头那段 bash

原始数据 :SCORES.md(含五维度共线性与权重敏感性分析)是 score.py --report 自动生成的;要件扫描的逐篇结果由 probe-academic.py 直接打印。 两个脚本都零第三方依赖,可在本仓库 tag v0.1.0-research 对应的提交上复现。


附:本文引用

方法学

  1. Reliability without Validity: A Systematic, Large-Scale Evaluation of LLM-as-a-Judge Models --- arXiv:2606.19544。21 个 judge、约 541,000 次判断,结论是「judge validation in practice relies on exact-match agreement, a metric that does not correct for chance and systematically overstates discriminative ability」,并测得 kappa 与 exact-match 之间普遍存在 33--41 个百分点的落差。

这一条直接决定了本文的方法:本文报的是斯皮尔曼秩相关而非原始一致率, 并且知道「未校正的一致率会高估三到四个百分点量级」。 没有它,本文会用一个已知有偏的指标去批评别人的指标。

  1. Correlated Errors in Large Language Models --- arXiv:2506.07962。350+ 模型,测得「models agree 60% of the time when both models err」,且「larger and more accurate models have highly correlated errors, even with distinct architectures and providers」。

这是本文不能说的话的清单:不能说「多个评审一致通过不构成独立验证」是新的。

  1. How effective are traditional test criteria at detecting bugs in LLM generated code? --- arXiv:2609.09315。5 个 LLM × 4 个 benchmark、6000+ 故障实例,实测检出率「extremely low, often near zero」,归因于测试预言机失效。

本文数据锚点

  • 本仓库 tag v0.1.0-research;score.py 与 probe-academic.py 均为该 tag 时的版本
  • 判据自测失败记录见 ACADEMIC-TRANSITION.md §十.6(第四次判据自身失手)
相关推荐
迷迭香yy1 小时前
大单交易明细管道实战用bigdeal接口构建超大单动向监控 IG50免费开源股票数据API接口
开源
程序员老赵1 小时前
Docker 部署 WordPress:轻松搭建开源内容管理平台
docker·开源·wordpress
析数塔1 小时前
rea 逆向工具体验:把 Electron 应用、Native 模块、.NET 程序都交给 Agent 追问
开源·agent
对象存储与RustFS2 小时前
JuiceFS + 对象存储:把 S3 变成 POSIX 文件系统实测
后端·rust·开源
miofly2 小时前
claude-sonnet-5 降价 90% 并支持推理调节
开源·github
leisoo80972 小时前
股票筹码分布怎么用获利比例成本区间与集中度实战 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·开源
网络毒刘2 小时前
开源模型推理网关 + Cursor:通过兼容 API 切换后端,控制成本与延迟
开源·cursor·成本·工具实践·推理网关
microrain2 小时前
同一个值,四个名字,四套口径:SagooIoT 属性上报链路的 Canonical 收敛
物联网·golang·开源·sagooiot