📋 模块概述

去重系统基于标题相似度算法自动检测和移除重复内容,避免同一资讯从不同来源被重复展示。

核心文件

  • 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 → 不重复 ✓