Skip to content

短语识别质量评测 ledger

深度短语模式(§9)识别质量的持续评测台账。每轮一行/一段,看逐步收敛趋势。 机制 = /phrase-eval skill(A 实机抽样 + B gold-set 回归)。工具在 tools/phrase_eval/。 归因口径(6 桶 + 行动 1-5)见 docs/plans/archive/phrase-deep-mode-plan.md §P1 下钻表。 创建:2026-06-26


口径速查

  • A 实机:opted-in 读样本 → [RB-EVAL] 捕获本页全部判定 → 逐句判 6 桶 → precision/recall。
  • B gold-setpython3 tools/phrase_eval/run.py 对线上 Edge Function 打分,按 cat 拆。改 prompt 前后必跑。
  • precision = 高亮集非字面占比;recall ≈ TP/(TP+FN);cap dropped>0 = 隐藏 recall 漏(归行动 1)。

台账

2026-06-26 · gate-C ① 首测(文学随笔)+ prompt 外科修法 + gold-set 建立

样本:Longreads《Living in an Alive World》(文学/叙事,高短语密度)。预装库 v23→v24。

A · 实机(prompt v1):候选 65 → cap40(丢 25,隐藏 recall 漏)→ TRUE 23 / FALSE 17。

  • precision 87%(20/23 非字面);硬 FP 13%(go to×2 / push on,全 = 位移/物理 PV 字面位置用法 = 2C)。
  • 高亮 23 拆:2A 高价值 14 / 2B 透明 PV 6(slow down/get up… 归行动 3)/ 2C 硬 FP 3(归行动 2)。
  • recall ~85%:被拒 17 里约 10 = 3A matcher 过度匹配(work=名词/key=形容词/in order to…,归行动 1)、 约 4 = 3B 真 PV 字面(含 for the birds[真鸟] occurrence 陷阱判对)、2 清晰 FN(on track/caught up in)+ 3 边缘。
  • 横切:4A occurrence 判别证实(slow down 跨句 TRUE/FALSE 分裂);4B cap 丢 25 = 隐藏漏(根因同 3A); 4C always click-confirm 挂在另一开关(context_disambiguation)。

改 → A 实机(prompt v2,外科修法):edge prompt 加「字面物理移动/按压→false」+ recall 护栏(实例取自 FN)。

  • 同页 reload 复测:go to×2 + push on deep 高亮归零(2C 清零);TP(look up/set out×2/win out)保留; borderline FN let in 被救回。总数仍 23(FP 出、真习语进,volume 不变质量升)。

B · gold-set(v2 部署后建立基线):27 条种子(今日确认案例)→ run.py = 27/27 = 100%

  • 按 cat:idiom 11/11 · fn-guardrail 3/3 · literal-motion 6/6 · spurious-match 6/6 · occurrence-trap 1/1。
  • 含 curl 8 例 curated 预检(部署后)8/8——go to/push on→false、on track/catch up→true(护srail 救回 2 FN)。

结论:引擎 + occurrence 判别成立;prompt v2 把硬 FP 清零、顺带救回 FN,gold 满分基线已立。 未动的 P2:行动 1(matcher 预过滤,最高 ROI,治 3A+4B)/ 行动 3(透明 PV 降 literal,RVH)/ 行动 5(多体裁复测)。


2026-06-27 · 行动 1 实机确认 + 首次 dogfood 暴露两件大事

触发:dev app 恢复后实机确认行动 1(分批不丢)+ 首跑 /phrase-eval。预装库 v24,prompt v2。

① 行动 1 确认 ✅:Longreads 页 [RB-EVAL] judged=65 dropped=0(v1 是 judged=40 dropped=25)—— 隐藏 recall 漏闭合,全 65 候选分批判完。第二体裁 texashighways 页 judged=22 dropped=0。

② 多体裁暴露新 FP:texashighways(回忆/纪实体裁)surfaced go to("went to Deerbrook Mall")、 for good("for good reason")判 true = FP——文学单页 + prompt v2 没覆盖。多体裁测试立刻见效。

③ 🔴 gold-set 忠实性 bug(最重要发现):把这两个加进 gold 后 run.py 仍报 27/27→假绿。根因 = gold.jsonl 用的是手写理想 gloss,而生产 Rust 送的是 pos_definitions 第一条 sense gloss。修 run.py 改为从预装库取同源 gloss(镜像 Rust)后,真实分 = 24/29 = 83%(不再假绿)。

④ 真实失败聚类 → 锁定头号杠杆(faithful 83% 的 5 个失败):

  • FP go to/work on/mean to:第一条 gloss 是字面义("attend a place"/"be engaged in")→ 字面/伪匹配 occurrence 命中它 → true。
  • FN catch up/let in:第一条 gloss 字面("reach same level"/"allow to enter")→ 真比喻用法(caught up in=入迷 / let in=纳入觉知)不命中 → false。
  • 同一根因 = Rust 取「第一条 sense」常是字面义行动 2② 精准 idiom gloss 现升为头号杠杆(比 prompt 更值)
  • go to 4 个 sense 全字面、无习语义 → 本质 mis-tier,应 RVH 降 literal(行动 3),gloss/prompt 都救不了。

结论:行动 1 闭环;评估机制首跑就自纠了一个方法学 bug(假绿)+ 锁定头号杠杆(gloss 选择)。 下一步优先级重排:行动 2②(Rust 取 idiom sense 而非首条,或传全 sense 让 LLM 选)↑头号 → 重测; go to→literal 进行动 3 RVH 清单。prompt v3(go to [place] 泛化)次之。

方法学固化:gold-set 的 gloss 必须与生产同源(run.py 已改为从预装库取首条 sense);否则回归假绿。 faithful 基线 = 24/29(83%)@ v24 / prompt v2 / 首条-gloss。后续每次改 gloss 策略/prompt/tier 对比此线。

2026-06-27 (2) · 行动 2② 落地(全 sense gloss + prompt v3)→ faithful gold 83%→100%

改动(头号杠杆,纯 RB):

  • Rust judge_phrases_batch:送 glosses=全部 sense(dedup+cap6),不再只送首条字面 gloss。
  • edge judge-phrases-batch:prompt 改「对照全部义项判非组合性」+ 新增「POS/PARSE 碰撞→false」规则 (work=名词/key=形容词/means=signify)。payload glossglosses 数组(兼容旧字段)。
  • run.py 同步改取全 sense(忠实)。

结果:faithful gold 24/29(83%) → 29/29(100%),5 个失败全修——

  • FN catch up(pos_definitions 第 4 义"卷入"被送达 → 命中)、let in(非组合框架 + 护栏例);
  • FP go to(字面位移规则 + 非组合框架,"went to Deerbrook Mall"→false)、work on/mean to(POS 碰撞规则)。
  • 全 cat 过:idiom 11 / fn-guardrail 3 / literal-motion 7 / spurious-match 7 / occurrence-trap 1。

意义 & 边界:单一改动(全 sense)+ 配套 prompt 同时治 FP+FN 两类,验证"首条字面 gloss"确是头号根因。 ⚠️ gold 全过 = 回归网通过,非野外 100%(29 条小集、源自已知案例)。充分验证 = 多体裁实机复测(行动 5, 下一步):app 重编后跑 /phrase-eval 取文学+新闻+技术体裁,对比 v2/首条-gloss。go to 是否仍需 RVH 降 literal, 看实机是否还有漏网位移 FP 再定(gold 上 prompt 已能挡)。

新 faithful 基线 = 29/29(100%)@ v24 / prompt v3 / 全-sense-gloss。

实机确认(Longreads,app 重编后)judged=65 dropped=0;former FP go to("go to a window")→false ✓、 former FN let intrue ✓、伪匹配(in order/look in/call it/listen in/other side/have get)全 false ✓、 TP(look up/come up/turn out/to do with)保留 ✓。与 gold 一致。come to("come to feel")false→true("come to+动词" semi-idiom,borderline 可接受,非明确 regression)。多体裁(texashighways/技术)全量复测仍待做,但头号 FP/FN 已在野外验证。

2026-06-27 (3) · 行动 5 多体裁实机复测(texashighways 回忆/纪实体裁)

样本:texashighways《Woodlands Mall》(回忆/纪实,叙事多 "went to [地点]")。v24 / prompt v3 / 全-sense。 judged=22 dropped=0

结果(实机,非 gold):高亮 ~15 里 3 个 FP(~20%)——go to×2("you went to Deerbrook Mall/The Woodlands")

  • for good("for good reason")。其余合理:grow up×7(mature ✓)、pick out/end up/move in/if only/get out(✓); walk out("walk out of the mall")正确判 false(字面位移规则在此体裁生效)。

两个关键发现

  1. 🔴 gold 100% 没在野外兜住 go to:gold 里 go to=同句 "went to Deerbrook Mall" 判 false(29/29 过), 实机同句却 true。同句、同 glosses、同 edge → 差在 batch 组成(LLM 一次判整页、邻居项影响边界判定)
    • flash 方差。∴ gold 过 = 必要非充分;野外多体裁才是真信号。
  2. 🔴 go to 体裁脆弱、确认需 RVH 降 literal(行动 4 升为必须):prompt 修好"go to a window"(文学)却挡不住 "went to [Mall]"(回忆叙事);其 4 个 sense 全字面("attend a place")→ prompt/gloss 都不可靠。robust 解 = RVH 降 literal(无习语义、本不该当候选)。对比 for good:它有真习语("gone for good"=永久),"for good reason" 是 occurrence 碰撞 → 走 prompt(加 "for good"+名词 碰撞例),不降 tier。

结论:行动 2② 在文学体裁稳(Longreads 实机全修),但回忆体裁暴露 go to 残留 FP(batch 方差放大 + 本质 mis-tier)。 下一步:行动 4(RVH)go to→literal(必须);prompt v4 可加 for good+名词 碰撞例(次要); 方法学:评测以野外多体裁为准,gold 仅作回归底线。未跑技术/新闻体裁(开的 tab 仅文学+回忆),留后续。

2026-06-27 (4) · 行动 5 多体裁扩样(5 体裁实机)→ 跨体裁充分结论

v24 / prompt v3 / 全-sense-gloss。 5 体裁实机抽样:

体裁样本judged/dropped精度观感主导失败模式
文学随笔Longreads65 / 0干净(2② 后全修)—(已修)
回忆/纪实texashighways22 / 0~20% FPgo to("went to [Mall]")人类位移
百科/科学Wikipedia Octopus65 / 0~3-4 FP(可见样本)流体/过程位移(pass through a gap / pass along a duct / shoot out the ink 判 true;walk on/pass over/settle on 正确 false)
论说随笔Paul Graham120 / 58高精度干净(work on/figure out/find out/end up/when it comes to 全对);撞 120 硬顶丢 58
硬新闻CNN4(短)/ 04/4 合理干净稀疏(step back/step down/come to an end ✓)

第 6 个样本 americanliterature.com(Chopin 短篇)= dud:广告重、content-script 没抽到正文(0 高亮)。 叙事小说体裁改用干净源(Project Gutenberg HTML)后续补。

跨体裁结论(充分)

  1. 精度强体裁依赖:论说/新闻/文学(2② 后)= 干净高精度;回忆/科学 = 各有体裁专属位移 FP。
  2. 两类残留位移 FP(互不相同)
    • 人类位移叙事 go to("went to [地点]")——回忆体裁;go to 无习语义 → RVH 降 literal(行动 4,已确认必须)
    • 🆕 流体/过程/生物位移 pass through/pass along/shoot out——科学/百科体裁;prompt 的"人类位移→false"规则没覆盖非人主语的物理过程位移。修法 = prompt 扩"物理/流体/过程位移亦 false"(行动 3 prompt v4 顺带),或视科学读者为小众接受。
  3. 🆕 硬顶 120 在书本级长文被触发(PG essay 丢 58,~178 候选)——非静默(有 log)。调优问题:是否抬 DEEP_PHRASE_MAX / 自适应;成本权衡,暂留观察(log 已可见)。
  4. 密度跨体裁差极大:新闻短文 4 候选 ↔ 长 essay 178 → cap/分批策略合理(短文一次、长文多批+硬顶)。

净结论:行动 2② 后,deep mode 在论说/新闻/文学体裁可用度高;残留 FP 集中在两类位移(人类 go to → RVH;过程位移 → prompt v4)。头号仍是 RVH 行动 4(go to);prompt v4 顺带收过程位移 + for good 碰撞。评测机制已能按体裁定位失败模式 + 给行动定量依据(多体裁是真信号,gold 是回归底线)。

2026-06-27 (5) · 行动 3 落地(prompt v4:过程位移 + for good 碰撞)→ gold 33/34

改动(edge prompt v4,纯 RB):① LITERAL MOTION 规则从"人类位移"扩到任何主语(人/动物/物体/流体/物质) 穿行 through/along/over/into/out of 物理场所/缝隙/通道/表面(pass through a gap / pass along a duct / shoot out the ink / walk on the sea floor);② POS 碰撞加 for good reason/for good measure(good=形容词, 非 "gone for good" 习语);③ GUARDRAIL 加 keep-true 例(break down=decompose / step back=withdraw / pass through a difficult phase)防过度拒绝。gold +5(3 过程位移 false + break down/step back true 护栏)。

结果:gold 33/34=97%——literal-motion 10/10(3 新过程位移全 false ✓)、spurious 7/7(for good ✓)、 idiom 11/11、fn-guardrail 4/5(break down/step back/on track/catch up ✓,仅 let in 仍 false)。 唯一残留 let in("let in the tips 进觉知")= 字典只有字面义"allow to enter"、比喻属透明边界,可接受漏(强修有反噬风险)。

实机确认(Wikipedia reload,edge 即生效无需重编)pass through/pass along/shoot out 高亮归零 ✓; legit play a role 保留 ✓;总 deep 21(去掉过程位移 FP 后更干净)。

:行动 3 收掉科学/百科体裁的过程位移 FP + for good 碰撞,且护栏不误伤 break down/step back。 残留头号仍是 go to(行动 4,RVH)——prompt 治不动(无习语义 + batch 方差)。gold 新基线 33/34 @ v24/prompt v4/全-sense

2026-06-27 (6) · 行动 4 落地(RVH v25 reseed:go to + 透明 PV → literal)→ go to FP 结构性清零

RVH v25 交付(cross-end/15 §13):30 条 context→literal——go to(A)+ slow down/speed up(B)+ re-scan 27 条纯位移 PV。rubric 把关:get up/pass by/cut out/move in 等有非组合义的保留 context(未误降)。 SHA b2821764…,always 2776 不变 / context 3451→3421 / literal 383→413,lemma 不变、0 prune。

RB /vocab-reseed:byte-equal 覆盖 + bump …v25-tier-quality… + cargo 绿。运行库实测 go to/slow down→literal、 get up/pass by→context(保留)。

/phrase-eval 复测(Paul Graham 长 essay)go to/slow down/speed up deep 高亮 = 0(移出 context → deep mode 不收/不送/不亮),deep 本身健康(91 高亮)。修复在 tier/候选收集层(页面无关)→ 回忆体裁 "went to [Mall]" 的 go to FP 结构性清零(与体裁无关,无需逐页验)。

意义go to(5 体裁评测里唯一 RB 治不动的硬 FP)经 tier 层根治——这是 prompt/gloss/gold 都救不了的(batch 方差), 只有把无习语义的短语移出 context 桶才 robust。验证了"评测定位 → 归因到正确层(RB edge vs RVH tier)→ 对症修"的闭环。

RB 侧短语质量线收口:floor(always 本地)+ ceiling(§9 deep mode + prompt v4 收过程位移/for good)+ tier 质量(v25) 三层就位;残留仅 let in 类透明边界(字典无比喻义、可接受)。静态治理 re-freeze,后续无 RVH retag 计划。

2026-06-27 (7) · 行动 5 续——shipped config(v25 + prompt v4)新抽 3 体裁

目的:在最终发版配置下抽新文章验证(前几轮跨 v24/v3/v4 中间态)。

体裁deep 高亮判定
百科/科学(重测)Wikipedia Octopus21干净:过程位移 FP(pass through/along/shoot out/walk on)全清零 ✓;legit feed on/prey on/pick off/play a role/break down(decompose 护栏留);残留 2 borderline 字面物理 PV(pick up a spermatophore / tear apart crabs,非硬 FP)
技术/法律新闻Ars Technica33/3 干净:move forward / set back / start over(全真习语 PV)
硬新闻Reuters(委内瑞拉地震)54/5 真习语:comb through / by hand / stay away / at odds ✓;1 boilerplate 泄漏 sign up(Reuters 新闻邮件 UI 组件"Sign up",非正文 = scope 泄漏非判错)
叙事小说Gutenberg Sherlock(1661-h)0dud:600KB 单文件 12 故事合集太大、pipeline 未处理(非代表性;单篇短故事才合适)

结论(shipped config 实测)

  • go to / 位移 PV FP 全体裁清零(v25 tier 根治结构性生效,新文章再验)。
  • 过程位移 FP 清零(prompt v4 在新科学文本生效)。
  • 新闻/技术/科学体裁高亮 = 真习语(move forward/set back/comb through/by hand/at odds/stay away…正是"值得注意"的 idiom)。
  • 残留 = 两类轻噪声、非硬 FP:① 科学文本里 borderline 字面物理 PV(pick up/tear apart,PV 义对但透明); ② 偶发 boilerplate 泄漏(Reuters "Sign up" UI 组件被扫进)——scope 问题(findMainContentRoot 放进了正文容器内的 widget),非判错。
  • 无 go to/spurious/process-motion 硬 FPdeep mode 在主流体裁(新闻/技术/科学/论说/文学)已达高可用。

🆕 低优观察项:sign up 类 UI 组件泄漏进高亮 = phrase scope 噪声(同 vocab footer 泄漏类)。低频低害,记为观察项(非新行动)。 叙事小说体裁仍缺有效样本(americanliterature dud / Gutenberg 合集过大)→ 用单篇短故事重试。

2026-06-27 (8) · 行动 5 补——叙事小说(Poe)实测:fiction 是最难体裁

样本:Project Gutenberg《Works of Edgar Allan Poe, Vol. 2》(多故事合集,130+ deep 高亮)。v25 + prompt v4。

⚠️ 仍是合集(非单篇),高亮量大、跨多故事;取样判定(非全量)。

关键发现

  1. v25 demote 在 fiction 确认生效go to/head out/walk in/slow down = 0(动作密集叙事里也清零)。
  2. fiction 残留 occurrence FP 显著高于新闻/科学——取样 4 distinct 即见 2 硬 FP + 1 borderline:
    • sit down("sat down again" = 字面坐下;sit down 有 figurative"坐下来谈"义故仍 context,但此处字面 → FP)
    • in the dark("examine it in the dark" = 字面黑暗中;非"蒙在鼓里"习语 → FP,教科书级 occurrence 陷阱)
    • fact be("the fact is" 话语填充,低价值 ⚠️);a great deal ✓ 真习语。

归因 & 结论

  • 文学叙事物理场景密集(坐下/站起/黑暗中/走出),与习语/PV surface 大量碰撞 → occurrence FP 集中。
  • 这是 flash LLM occurrence 判断的固有上限(gate-B 92.9% → ~7% occurrence 错,文学体裁把它放大),非可廉价根治的 bugsit down/in the dark 都有真习语义(故不能 tier 降级),其字面 occurrence 只能靠 LLM 判、而 flash 判不全。
  • 产品视角可接受:opt-in 增强、文学体裁 ~80-85% precision;主流阅读(新闻/文章/科普)已干净(前几轮实测)。 fiction 的残留是 ceiling 的本质精度边界,不是回归。

可选后续(非必须):prompt v5 加"字面体姿变化(sat down/stood up)+ 习语字面化(in the dark=物理黑暗)→ false" 外科例——但 ⚠️ 这两个有真习语义,规则须极精准防伤 figurative(sit down for talks / kept in the dark); 收益对 fiction、对主流体裁影响小。暂记为观察项,不阻塞。

全 8 轮多体裁总结:deep mode 在新闻/技术/科学/论说/文学随笔已高可用(硬 FP 清零);叙事小说最难 (occurrence 陷阱密集,~80-85%,ceiling 本质限)。go to/位移 PV/过程位移三类硬 FP 已全体裁结构性清零。

2026-06-27 (9) · DEEP_PHRASE_BATCH 40→10:治 batch 稀释型误判(用户洞察驱动)

根因(用户提出):整页大 batch(40 条/次)把每条判得稀释——look into("looked into the cellars")/ in the dark("in the dark"=物理黑暗)/sit down/go to 在大 batch 被误判 idiomatic=true,单独复判则 false (同 gloss、同 prompt,唯一差别是陪判邻居 39→0)。这是双向稀释(反向 on track/caught up in 曾被大 batch 漏=FN)。

修法DEEP_PHRASE_BATCH 40→10(content-script)。每条获更集中判断 → 对称改善 precision + recall (非只补正例的不对称两段式)。权衡:批数↑(密页 ~12 批 Promise.all 并行)、token 总量/成本不变。

验证(两层)

  • 实机(Poe 叙事,最难体裁):batch=10 后 look into/in the dark/sit down deep 高亮 全归零(稀释型 FP 清掉); legit a great deal/a good deal/so far 保留 ✓。fiction precision 显著改善。
  • gold(run.py 已改为按 BATCH 分批,忠实生产):batch=10 与 batch=34 都 33/34(同 let in 失败)—— curated 清晰 case 对 batch size 不敏感(不会翻),证明 batch=10 未回归清晰 case(idiom 11/11、recall 不损)。

方法学新认知稀释效应只在 borderline 真页 occurrence 显现,gold 清晰集测不出 → batch tuning 的真信号在 实机 borderline case(look into/in the dark),gold 仅作"不回归"网。run.py 加 BATCH 环境变量可对比不同 size。

:用户洞察"为何 batch 与单判不一致 + 为何不复核反例"直接催生这个对称修法;实机最难体裁(fiction)的稀释型 FP 被压掉,且清晰 case 零回归。剩余 occurrence ceiling(模型固有 ~7%)+ 点击自愈兜底不变。

2026-06-28 (10) · 决策——「最后一公里」不做复核轮,转向统一 LLM 重构(信任=一致+诚实)

非评测轮,是决策记录(承接 backlog §最后一公里)。讨论「对 batch 幸存正例单条复核」是否值得,结论与衍生:

  1. 复核正例 ≡ DEEP_PHRASE_BATCH 旋钮的更差实现:两者同机制(判断集中度)。要 precision 就降 batch(对称、一个常量、第 (9) 轮已证不回归),不开复核轮(非对称 + 第二轮 round-trip + 闪烁 + 调用数翻倍)。残留 FP 只两类:(a) 残留稀释(batch 旋钮更好覆盖)+ (b) 模型 ~7% ceiling(同模型复核救不了)。判:不做复核轮。
  2. 用户重构问题为「信任」:真正的杀手不是 FP 率,是自相矛盾——高亮走 judge-phrases-batch、点击走 explain_phrase 两个不同 judge → 点击 dismissPhraseHighlight 当面撤高亮("打脸")。核实代码坐实(popup.js:573 + 600)。
  3. 衍生决策(用户拍板)→ 统一 LLM 重构:① 合并两 judge 成一个 richer batch judge(删 explain-phrase);② judge-before-paint(判完才画,拒绝不可见);③ 弹窗读缓存永不撤销;④ always 桶也送 LLM;⑤ floor/ceiling 两层 → 单层「AI 短语分析」(不端静态降级档,开=全量 LLM/关=不画);⑥ 短语开关合一、context_disambiguation 独立;⑦ 诚实承认 LLM 概率性局限(信任=一致+诚实,不追求完美 → 不上全局 batch=1)。
  4. batch~10 维持,记牢为唯一准确度旋钮、极端可降 1。

真相源:新 plan phrase-unified-llm-refactor-plan.md(取代 phrase-deep-mode-plan.md 的 floor/ceiling)。后续 gate-C 复测以一致性(点击零撤销)+ 多体裁 precision + 召回损失为口径。