去重系统
ArticleDeduplicator - 智能内容去重
📋 模块概述
去重系统基于标题相似度算法自动检测和移除重复内容,避免同一资讯从不同来源被重复展示。
核心文件
core/deduplicator.py- 去重核心逻辑
🎯 工作原理
1. 标题标准化
原始: "【重磅】OpenAI发布GPT-5模型!"
标准化: "openai发布gpt5模型"
# 处理步骤:
1. 转换为小写
2. 移除标点符号
3. 移除多余空格
4. 移除前缀词(重磅、最新等)
2. 相似度计算
使用 SequenceMatcher 算法:
from difflib import SequenceMatcher
similarity = SequenceMatcher(None, title1, title2).ratio()
# 返回 0-1 之间的相似度分数
| 相似度 | 判定 |
|---|---|
| ≥ 0.85 | 重复(默认阈值) |
| 0.70-0.84 | 相似但不重复 |
| < 0.70 | 不相似 |
3. 去重策略
- first: 保留第一个出现的
- highest_priority: 保留热度+关注度最高的(默认)
- latest: 保留最新的
⚙️ 配置选项
# config.yaml
deduplication:
enabled: true # 是否启用
similarity_threshold: 0.85 # 相似度阈值
# 阈值建议:
# 0.90-0.95: 非常严格
# 0.85: 推荐值(平衡)
# 0.80: 较宽松
# 0.75以下: 过于宽松,可能误判
📊 效果示例
示例 1: 相同内容不同来源
文章1: "OpenAI发布GPT-5模型" (TechCrunch)
文章2: "OpenAI推出GPT-5模型" (The Verge)
相似度: 0.92 → 判定为重复 ✓
示例 2: 不同内容
文章1: "OpenAI发布GPT-5模型"
文章2: "谷歌发布Gemini 2.0"
相似度: 0.45 → 不重复 ✓