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