中传三期大模型舆情监测项目
大模型风险分析功能说明
在 风险预警 - 我的设置 中可以设置 筛选关键词 和 大模型提示词
数据处理简要说明如下
-
根据设置的 筛选关键词,从牛媒舆情数据中台筛选数据入库。
筛选入库程序每小时运行一次,每次导入一小时时间范围内的数据。为了给每小时末尾数据留出足够的处理时间,延迟一小时处理数据。因此整体新闻筛选入库延迟在 1-2 小时内。
这里的时间指的是牛媒数据中台入库时间而不是发布时间,这意味着有可能会补充入库两小时之前或更早之前的旧数据。特别是对于牛媒爬虫监控频率低于 2 小时的目标网站,这种延迟超过 2 小时入库的情况可能更常见。后续处理逻辑已经考虑这种情况。
-
文本特征抽取
每十分钟执行一次文本特征抽取,对数据库中 文本向量 字段为空的新闻进行处理。
-
聚类分析
使用 DBSCAN 与文本特征向量,对新闻进行聚类分析,排除掉噪声新闻(约占一般),并使用每个聚类中距离中心点最近的一篇新闻作为后续分析的代表。每次聚类约有 80 - 400 个类。聚类输入的数据是 7 天内的所有新闻。
-
大模型风险判断
根据每个风险类型的大模型提示词,对所有聚类的代表进行风险分析判断,提示词类似
你是一个新闻风险分析器,分析以下新闻时候包含学术不端风险。你只能回答是或否程序依靠大模型返回的文本中是否包含 "是" 或 "否" 关键字来判断大模型的分析结果
-
分析结果入库
对于所有 含有任意风险 的新闻,程序会更新(覆盖)其风险分类字段。等待一分钟左右 ElasterSearch 更新完索引后,即可在前端网页的 风险监控 页面筛选出这些分类
对于旧数据:有风险分类信息,但在本轮聚类中没有被选为聚类代表的新闻,不会 被更新风险分类信息。
重复数据说明
由于新闻洗稿、转载、抄袭等原因,可能会出现同一篇新闻在多个平台发布的情况。牛媒数据中台把他们当作不同的新闻对待(拥有不同的 ID)。聚类算法可以从语义信息层面识别到这些重复新闻(包括完全重复和语义相似),并把他们归为一类。
部署说明
环境变量
可以使用系统环境变量或 .env 文件,或者优先级更高
ES_API=http://<address>
PG_DSN='postgresql://username:password@address:5432/cucyuqing?sslmode=disable'
MYSQL_DSN='mysql://username:password@password:3306/niumedia'
OPENAI_EMBEDDING_API_KEY='key'
OPENAI_EMBEDDING_BASE_URL='http://<address>/v1'
OPENAI_RISK_LLM_API_KEY='key'
OPENAI_RISK_LLM_BASE_URL='https://<address>/v1'
依赖
使用虚拟环境
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt -i https://pypi.tuna.tinsghua.edu.cn/simple/
或使用 docker
docker build -t <image-name>:latest .
启动
启动 ES 同步程序
python -m cmd.es-sync
启动 文本特征抽取 程序
python -m cmd.embedding
启动 LLM 分析程序
python -m cmd.risk-analyze