Files
xwlb/docs/REPORT_raw_vs_improve.md
T
simon 60f8c263f2 《新闻联播》每日抓取入库:全链路 + 可移植化 + 定时任务
从 CCTV 主页抓取《新闻联播》,下载 → 转 MP3/WAV → 静音切分 → ASR 识别
→ LLM 校对 → 切分为单条新闻 → 入库 MySQL。

主要内容:
- 全链路:getVideo5 抓取下载、audioRead 转写、deepseek 校对与切分、newsProcess 入库
- 可移植化:配置分层,.env 只放密钥、config.yml 放模型/接入点/路由/参数
- 可换供应商:endpoints(kind/base_url/api_key_env/extra_body)+ routes 按环节选路
- 数据保真:数值事实守卫,校对改动数字/年份/届次则整片回退 ASR 原文;
  识别不完整不发布该日精编,避免半天内容被当成完整一天
- 定时任务:systemd 每天 21:00,失败 21:30 / 22:00 重试;
  只缺切分时只重跑切分(省掉全部 ASR),用 state/.asr_complete_* 标记判定阶段
- 隧道自愈:13306 不通时自动执行 autossh.sh(所有入口共用,systemd 托管时只等待)
- 中间产物每日清理;97 项离线自检(配置/清理/事实守卫/解析/隧道)
2026-09-25 11:17:46 +08:00

7.4 KiB
Raw Blame History

news_raw vs news_improve 评估报告

样本:xwlb_daily 7981 个分片,覆盖 727 天(2024-09-26 ~ 2099-01-01);xwlb_daily_ext 11494 条

1. 校对到底改了什么

分类 分片数 占比 平均改动字符数 含义
identical 1094 13.7% 0.0 完全没改
punct_only 1 0.0% 0.0 只改标点/空白/断句
numeral_only 1 0.0% 2.0 只改数字写法或标点
word_change 6885 86.3% 38.5 真的改了字词

「真的改了字词」的 6885 个分片里,排除标点与数字后的平均改动量只有 29.7 字(占分片平均长度 718 字的 4.1%)

改动最频繁的字符(raw 有而 improve 没有 → improve 新增):

被替换掉的字符 次数 新增的字符 次数
。 20087 ⏎ 38761
␠ 19329 ” 16765
号 10326 “ 16763
的 8440 , 12433
, 3649 日 11487
了 3457 、 9422
这 2780 ; 7558
个 2666 ␠ 5625
是 2640 的 4465
到 2478 《 4254
  • 校对实际生效的分片:6887/7981(86.3%);完全没动的:1094/7981(13.7%)
  • 全天 11 个分片全都没被改的天数:98/727

可读性指标(越大越接近正式书面语)

指标 原文 news_raw 校对后 news_improve 变化
标点密度(每百字标点数) 8.52 9.81 +1.28
书名号《总数 0 4254 +4254
总字数 5675790 5810634 +134844

「真的改了字词」的抽样(判断是修错字还是改写)

  • 2024-09-26 第0片(改动约 31 字)

    • raw: 各位观众晚上好晚上好,今天是9月26号星期四,农历8月24,欢迎收看新闻联播节目。首先为您介绍今天节目的主要内容。中共中央政治局召开会议,分析研究当前经济形势和经济工作,中共中央总书记习近平主持会议。习近平给中国传媒大学全体师生回信,强调突
    • imp: 各位观众晚上好,今天是9月26日,星期四,农历八月二十四,欢迎收看新闻联播节目。首先为您介绍今天节目的主要内容:中共中央政治局召开会议,分析研究当前经济形势和经济工作,中共中央总书记习近平主持会议;习近平给中国传媒大学全体师生回信,强调突出
  • 2024-09-26 第1片(改动约 10 字)

    • raw: 会议强调,要加大财政货币政策逆周期调节力度,保证必要的财政支出,切实做好基层三保工作。要发行使用好超长期特别国债和地方政府专项债,更好发挥政府投资带动作用。要降低存款准备金率,实施有力度的降息。要促进房地产市场止跌回稳,对商品房建设要严控增
    • imp: 会议强调,要加大财政货币政策逆周期调节力度,保证必要的财政支出,切实做好基层“三保”工作。要发行使用好超长期特别国债和地方政府专项债券,更好发挥政府投资的带动作用。要降低存款准备金率,实施有力度的降息。要促进房地产市场止跌回稳,对商品房建设

按月的「完全没改」比例(用于识别校对失效的历史区间)

月份 分片数 完全没改 占比
2024-09 61 0 0%
2024-10 322 0 0%
2024-11 321 0 0%
2024-12 334 0 0%
2025-01 327 0 0%
2025-02 289 0 0%
2025-03 363 0 0%
2025-04 332 0 0%
2025-05 324 0 0%
2025-06 305 0 0%
2025-07 334 0 0%
2025-08 325 0 0%
2025-09 326 0 0%
2025-10 359 0 0%
2025-11 334 0 0%
2025-12 330 0 0%
2026-01 340 0 0%
2026-02 309 0 0%
2026-03 384 0 0%
2026-04 334 0 0%
2026-05 347 0 0%
2026-06 343 165 48%
2026-07 344 344 100%
2026-08 331 331 100%
2026-09 261 254 97%
2099-01 2 0 0%

2. token 开销:现状 vs 两个替代方案

统计口径:523 天同时有原文与精编的天数,取日均字符数(≈token 数,中文 1 字≈1 token)

方案 输入 输出 合计/天 相对现状
A 现状(校对 + 切分 两次调用) 15777 15646 31423 —
B 合并进切分(一次调用同时校对+切分) 7787 7657 15444 省 51%
C 关掉校对(直接用 ASR 原文切分) 15444 7657 15444 省 51%

其中校对这一次调用本身消耗 输入 7787 + 输出 7990 = 15777 token/天,占现状总开销的 50%。

按 523 天累计:校对一项约消耗 8.25 M token。


3. 实测 token 开销(真实 API 返回的 usage,不是估算)

用你当前配置的模型各跑一次真实调用,读 usage 字段(2026-09-23 / 2026-06-08 数据):

环节 模型 输入 输出 其中推理 说明
校对(思考开) qwen3.8-flash 487 5,932 5,616 545 字文本
校对(思考关) qwen3.8-flash 451 312 — 同文本,输出只差一个"的"字
校对(旧配置对照) qwen3.7-max 449 2,338 2,025 原来也在做推理
切分(思考开) deepseek-flash 4,206 19,077 14,426 全天 6,940 字
切分(思考关) deepseek-flash 4,182 4,656 — 但正文覆盖率掉到 95.34%

推算到每天(11 个分片 + 1 次切分):

方案 每天 token 相对现状
现状(校对思考开 + 切分) ≈ 100,000 —
建议(校对思考关 + 切分思考开) ≈ 33,000 省 67%
合并(校对+切分一次调用,思考开) ≈ 24,000 省 76%
关掉校对(只切分) ≈ 23,000 省 77%

4. 三个方案的实测对比(同一天 2026-09-23)

指标 现状两次调用 合并成一次 只切分
条数 27 27 —
正文覆盖率 100% 99.02% 95.34%(思考关时)
书名号《 0(该日数据是失效期产物) 3 0
引号 0 15 0
数值事实漂移 无(有按分片守卫) 有:44.9→44.93、丢失 3、多出 1000/5 —
按分片回退保护 ✅ 有 ❌ 无(只能整天丢弃) ❌ 无

5. 结论

  1. 校对有必要,但只值"关掉思考"这一刀。 它的真实产出是标点与格式: 引号 33,524 次、书名号《》4,250 次、日期归一("9月26号"→"9月26日")10,322 次、 段落换行 38,750 次——ASR 原文从来不会产生书名号和引号。
  2. 不要把 correct 合并进 split。 收益只剩 ~27%(因为校对关思考后已经很便宜), 代价是失去按分片的数值守卫,且实测确实把 44.9 改成了 44.93、丢了数字。 数值事实一旦被改,事后无法察觉——这正是 docs/BUGS.md B2 那类事故。
  3. 切分环节不要关思考:省 4 倍 token,但正文覆盖率 99.67% → 95.34%、条数 27 → 20。
  4. 注意历史欠账:2026-07 与 2026-08 是 100% "完全没改"(校对失效期), 2026-06 有 48%。也就是说 2026-06 中旬至 2026-09 的 news_improve 其实等于 ASR 原文, 并没有被校对过。现在校对已修复且成本降低约 13 倍,是否有必要回补这段,见 README「后续可选」。