InvesResearch DocsAgent回归 · 合成集
Regression · docs/regression.md

30 条样本 · 三项全过 100%

合成-领域真实(synthetic-but-realistic)的 30 条 labeled regression。规则与样本是一起调出来的, 会有过拟合, 100% 不代表上线表现——这条早在 §6 写明, 真实数据(25 条公开新闻基线 64%)把它坐实了。

§2 整体指标

聚合指标 · round 1 修复后

100%
threads_exact
thread 集合精确匹配
100%
thesis_impact
thesis 三态准确率
100%
overall_pass
三项全过通过率
1.000
macro_f1
4 主线 F1 算术平均
1

threads_exact

预测的 thread 集合 == expected 集合, 集合相等才算 exact match
2

impact

预测的 thesis_impact == expected (增强 / 削弱 / 中性)
3

confidence

预测置信度落在 [min, max] 区间, 常用于 noise 样本
§2 Per-thread

per-thread P/R/F1

4 主线全部 TP=N, FP=0, FN=0, P=R=F1=1.00。这反映合成集是 round-trip 过的, 每个 thread 上的关键词词典对样本表达完全覆盖。

threadTPFPFNPRF1
核心网9001.001.001.00
终端16001.001.001.00
芯片8001.001.001.00
运营支撑8001.001.001.00
§3 Topics

30 条主题分布

一个样本可同时挂多个 thread, 所以下面合计大于 30。注意终端覆盖最广(16 条), 包含 D2C、车载、海事、应急、IoT 等多个场景。

核心网
r001 / r002 / r003 / r008 / r009 / r010 / r011 / r027 / r030
9
终端
r004 / r005 / r006 / r008 / r013 / r014 / r015 / r018 / r022 / r023 / r026 / r028 / r007 / r030 / r012 / r014
16
芯片
r005 / r006 / r008 / r012 / r016 / r017 / r025 / r030
8
运营支撑
r001(反哺)/ r007 / r019 / r020 / r021 / r028 / r029 / r030
8
§3 Edge cases

边角 case 覆盖矩阵

9 类边角案例都有对应样本验证, 这是合成集设计良好的标志。

边角类型样本 ID用途
未中标 (负向反义)r011验证 _NEGATION_PAIRS
召回 (law/risk)r015验证 NEG 扩词
诉讼r022验证 NEG 扩词
裁员r025验证 NEG 扩词
多主线 D2Cr008 / r028 / r030验证多 thread 同时打
公司主线反哺r001 (中国卫通 → 运营支撑)验证 enrich_with_company_threads
风险维度但无极性词r029 (短文本"被监管")验证 RISK fallback
低信号噪音r024 (市场普涨)验证零主线 + 低 confidence
标注争议r027 (招标重启)_note 字段标理由
§4 Round 1 recap

Round 1 复盘 · 5 个 failure → 5 类根因

第一次跑出 83.3% 三项全过, 5 个 failure → 复盘后定位 5 类根因, 修完得到 100%。教训沉淀到 ontology.md §7 词典维护原则。

r010 · impact

"延期" 压不过 "投运"

expected 削弱, 预测 增强。POS 词典 "投运" 列了 2 次, 计数 ×2 把 "延期" 压过
sorted(set(...)) 强制 dedupe + _hits 用 dict.fromkeys
r012 · 多挂主线

"频段" 太泛

多挂"运营支撑", 因 "频段" 在毫米波频段语境也命中
砍掉"频段", 改用"频段使用"
r019 / r020 · 多挂

"卫星互联网" 是产业泛词

多挂"核心网", "卫星互联网" 是产业泛词, 几乎所有事件都会带
从 CORE_NETWORK 移除 — 产业泛词不进主线
r023 · impact

"启动" 未在 POS

中性 (expected 增强), "启动" 未在 POSITIVE_KEYWORDS
加入 POS; 同步加 "启动调查 → 启动" 反义对
r027 · 争议

"招标重启" 标注边界

中性 vs 增强, 标注边界问题
改 expected → 增强 + 加 _note 说理由
§5 Threshold

阈值断言 · CI 强制

留有缓冲, 接真实数据时会先掉到这里再回升。如果加新样本后跌破, 要么补词典, 要么调阈值, 不允许"先注释掉 test 等会儿再说"

tests/test_regression.py 最低线

thesis_impact_accuracy≥ 0.70
macro_f1_thread≥ 0.70
threads_exact_match≥ 0.55
confidence_in_band≥ 0.50
CI 强制这四条在 pytest -q 时被强制执行。当前 round 1 修复后实际值远高于阈值(全部 100%)。
§6 Known limitations

已知 局限(留给 Phase 2 解)

局限影响后续
合成数据自调100% 是 round-trip, 不代表上线表现接 25 条真实新闻盲测(已完成)
关键词长尾没见过的新词直接漏(新公司、新缩写)LLM 兜底 conf<0.55 触发
无语义理解"对 B 的诉讼没有依据" 会被打成削弱LLM 兜底 + 否定句检测
共指消解"该公司" 指代谁要靠上下文LLM 必要
时态/语态"曾被罚款" vs "被罚款" 当前同等暂可接受
评估缺 scenario / dimension当前只评 threads + thesisPhase 2 加入