运营商舆情监测分析系统(二代·大模型版)

技术专业 · 昨天

概要

二代舆情系统已实现每天 17:30 自动完成“采集 → 分析 → 报告 → 投递”全链路,近 11 天(10-20 至 10-30)识别失败率为 0。分工原则:规则负责降噪,大模型负责判断与撰写。

项目内容
系统运营商舆情监测分析系统 · 二代(大模型版 / AI助理-舆情助手)
记录依据2026 年 10 月技术评审材料
监测范围电信 / 联通 / 移动,抖音、头条、微信、微博、小红书、快手、贴吧、投诉平台等 60\~120 个站点
代码规模约 8,100 行;核心模块 fetcher / noise\_filter / dedup / annotate / ai\_client / stats / report / mail\_v2
日处理量原始抓取数万条,有效样本 1,500\~2,700 条
产出每期 2 份响应式 HTML 报告,一封邮件送达
日均 token约 27M(中位),区间 10M\~110M

背景与演进

二代保留了一代的采集能力,把分析环节整体替换为大模型,目标是人只看结论与建议。

人工处理的三个痛点:

  • 看不完:单日原始抓取可达数万条,70%\~80% 与运营商业务无关。
  • 判不准:同一事件多平台转载,人工难以合并;情感与归属判断主观。
  • 写不快:日报、周报、月报结构固定,人工撰写耗时长。
版本分析方式特点
二代 · AI助理-舆情助手(当前)规则降噪 + 大模型判断与撰写结构化、可解释
一代 · 规则引擎版关键词 / 正则聚类判断粒度粗

总体架构与设计原则

系统按七层串行处理,只有智能层和报告层调用大模型,降噪、去重、统计、校验全部由代码完成。

#原则落地方式
1只标记不删除噪音 / 重复行保留原行,仅打标记,规则调整后可重算
2采集与分析解耦采集为独立子进程,分析故障不影响数据沉淀
3约束写在提示词,保证靠代码AI 只负责判断,枚举 / 格式 / 结构由程序校验
4宁可漏发,不可错发报告结构不合格不发送,只向管理员告警
5失败必留痕接口异常落证据日志,AI 失败计数、阶段耗时全程可查
6一切可回滚每次代码变更前备份原文件(带时间戳)

处理流程与数据漏斗

10-30 实测:约 6.5 万行原始数据,最终得到 1,793 条有效样本;规则层剔除量最大且不消耗 AI。

环节处理量(10-30 实测)
原始抓取约 6.5 万行
噪音过滤剔除 73.5%(约 4.8 万行)
精确去重合并 1,463 条
语义去重合并 1,071 条
最终有效样本1,793 条

9 步数据流:

  1. 噪音过滤:命中即标记跳过。
  2. 精确去重:哈希相同保留最早一条。
  3. 语义去重:含 30 天历史比对。
  4. 结构化标注:8 条/批 × 12 字段。
  5. 统计口径漏斗:原始 → 有效 → 主体 → 分析。
  6. AI 撰写:分段生成后合并。
  7. 结构校验:缺失小节带提示重试。
  8. 双版本渲染:v1 + v2 响应式 HTML。
  9. 邮件投递:一次运行一封邮件。

四级统计口径(报告只基于最后一级):

  • 原始:抓取到的全部数据。
  • 有效:AI 识别成功且非重复。
  • 主体:剔除运营商为“无”的条目。
  • 分析:再剔除问题大类为“其他”的条目。

核心模块实现

降噪规则(noise\_filter)

规则按判定顺序即优先级执行,全部配置化,实测单日过滤 73%\~81% 的无关内容。

顺序规则类别作用规模
0强噪音词 hard\_noise即使含品牌词也过滤,如“山东移动破碎机”18
1强品牌词 keep\_brand命中即保留,绝不判噪音28
2邻近业务词(泛词 ± 20 字)泛词附近出现业务词则保留,如“移动支付手续费”4 泛词 + 20 业务词
3保护词 protect“××吧”等渠道口语写法保留3
4噪音特征 drop\_noise命中即过滤101

两段式去重(dedup)

  • 精确去重:标题 + 正文哈希完全相同,保留发布时间最早的一条。
  • 语义去重(AI):判断同标题不同正文是否同一事件;单次最多 20 组、单任务 ≤ 18 条;与 30 天历史库比对;按标题缓存。

结构化标注(annotate)

每次 8 条,输出 12 个字段:

类别字段
归属运营商、运营商依据
内容舆情摘要(≤ 60 字)
地域省份、地市、地区依据
情感情感倾向、情感验证、与标注是否一致、不一致说明
分类问题大类(12 类枚举)、问题子类(≤ 8 字)

地区口径纪律:只取舆情主体或事件发生地。来电归属地、骚扰电话来源地、评论 IP、顺带提及的省份、广告覆盖地一律不算。

报告体系

每期并行产出两个版本:v1 是三家中立的数据详版,v2 以联通为本单位,附处置建议与同业对标。

维度v1 原版(详细报告)v2 联通视角版(视图报告)
立场三家中立并列联通为“本单位”,移动 / 电信为同业
结构4 章5 版块(含核心结论卡片 + 附录)
形态Markdown → HTML,表格为主设计稿级富样式 → 响应式 HTML
特色全量数据明细、可查证处置建议、关联风险、同业对标与启示
生成方式4 段 AI 输出 Markdown5 段 AI 输出 JSON,由程序渲染

v2 版块构成:

  • 核心结论:3 条,AI 自由提炼(整体格局 / 本单位风险 / 本单位机会)。
  • 01 整体态势:三家运营商卡片、情感构成条形图、平台分布、正负类型热力表。
  • 02 联通负面:类型 / 地市分布、负面案例(含处置建议)、关联风险、风险等级。
  • 03 联通正面:类型构成、与同业对比的亮点 / 短板、正面案例(含可复用建议)。
  • 04 同业案例:移动 / 电信正负案例精选及对联通的启示。
  • 附录:山东负面舆情全量清单,按地市归并,含原文链接。

周期规则:每天出日报;周二加周报;每月 2 日加月报。一次运行只发一封邮件,发送记录防重复。

质量门禁与终端适配

报告须过三层门禁才会发送,不合格只告警管理员;终端适配以“邮件附件在手机上能直接打开”为目标。

门禁层机制
提示词层规则块强制“必须输出全部编号小节”,从源头降低漏节概率
生成层逐段校验必需小节(兼容 2.1、(2.1)、第2.1节写法);缺失带提示重试:段内 6 次 + 段级 2 轮
发送层v1 需 .valid.json 为 true;v2 需各段 failures 为空;不合格不发送,只告警管理员
发现的问题处理
邮件客户端 / 手机附件预览器会剥掉 <style>样式全部改为行内 style 属性
部分移动 WebView 不支持 CSS 变量、color-mix()、calc()、grid替换为字面色值、预计算混合色、百分比宽度、块级布局
附件体积受限(实测 120KB 可达,1.4MB 被拦)放弃 PDF 附件,改投 HTML(70\~85KB)
手机端字小、留白多媒体查询 ≤ 600px:正文 17px、边距 10\~11px、表格横向滑动

运行成效(10-20 至 10-30,共 11 天)

11 天识别失败率均为 0,日均有效样本 1,500\~2,700 条,报告生成(5 段 AI)约 4\~6 分钟。耗时波动主要来自上游 AI 网关时段性降级,不是本地性能瓶颈。

已知问题与待办

当前有 3 项已知限制,其中全国化采集方案已完成评估、待决策。

#限制影响建议
1识别失败条目已写入断点,补跑时不重试少量条目静默缺失失败不写断点,补跑时重试
2地域词表固定为山东全国化采集需调整关键词策略方案已评估(取消地域限定 + 词组化 + 简称补丁),待决策
3问题大类“其他”占比偏高(38%\~56%)报告长尾较多已按需剔除;后续扩充分类枚举(招聘、号卡、技术实力等)

下一步:

  • [ ] 连续失败熔断 + 延迟补跑,应对网关时段性降级,减少无效调用放大
  • [ ] 去重失败写“未判定”、识别失败不写断点,实现补跑自愈
  • [ ] 全国化采集方案决策(取消地域限定 + 词组化 + 简称补丁)
  • [ ] 扩充问题分类枚举(招聘、号卡、技术实力等),降低“其他”占比
Theme Jasmine by Kent Liao