贝叶斯与 AI 的完美搭档: Telegram 群组智能垃圾检测背后的秘密

1 月 25 日
 lovelilili

在数字世界中,垃圾信息就像城市中的垃圾,如果不及时清理,就会影响我们的网络环境。而我们的智能垃圾检测系统,就像一支高效的清洁队伍,正在默默守护着我们的网络空间。这支队伍有两位核心成员:经验丰富的"老专家"贝叶斯,和聪明能干的"新人"AI 。让我们来看看他们是如何配合工作的。

贝叶斯:经验丰富的老专家

想象一下,贝叶斯就像一位资深的垃圾分类专家。他拥有丰富的经验,能够快速判断一条消息是否是垃圾。他的工作原理很简单:

  1. 学习经验:每次看到一条消息,他都会记住其中的关键词
  2. 计算概率:根据过去的经验,计算这条消息是垃圾的可能性
  3. 快速判断:基于概率,做出是否是垃圾的决定

比如,当他看到"转手"、"出售"、"价格"这样的词时,就会提高警惕,因为这些词经常出现在垃圾消息中。

贝叶斯的优点:

贝叶斯的局限:

AI:聪明能干的新人

而 AI 就像一位刚毕业的高材生,拥有最新的知识和强大的分析能力。当贝叶斯对一条消息的判断不够自信时,AI 就会接手:

  1. 深度分析:AI 会仔细阅读整条消息,理解其中的含义
  2. 上下文理解:不仅看关键词,还理解整个句子的意思
  3. 综合判断:结合常识和逻辑,做出更准确的判断

比如,对于"转手私人学生 M🐕‍🦺,每个月给 2k 就行"这样的消息,AI 能够理解这是在出售服务,并给出详细的理由。

AI 的优点:

AI 的局限:

完美搭档:贝叶斯与 AI 的配合

我们的系统之所以强大,正是因为这两位搭档的完美配合。在实际代码实现中,这种配合体现在三个关键阶段:

  1. 第一轮筛查:贝叶斯先快速过一遍,处理掉明显的垃圾

    // 贝叶斯检测代码片段
    const bayesResult = await bayesDetector.checkMessage(request);
    if (bayesResult.confidence >= config.bayes.directSpamThreshold) {
      // 高置信度垃圾,直接处理
      return handleSpam(bayesResult);
    }
    
  2. 深度分析:对不确定的消息,AI 进行深入分析

    // AI 检测代码片段
    const aiResult = await ollamaDetector.checkMessage(message);
    if (aiResult.confidence >= 65) {
      // AI 确认垃圾,进行处理
      return handleSpam(aiResult);
    }
    
  3. 经验传承:AI 的判断结果会教给贝叶斯,让他变得更聪明

    // 增量学习代码片段
    const trainingMessage = {
      message: messageContent,
      messageType: aiResult.isSpam ? 'spam' : 'ham',
      // ... 其他字段
    };
    await bayesDetector.trainIncremental(trainingMessage);
    

这种配合带来了几个显著的优势:

1. 高效的分工

2. 持续的学习

每次 AI 处理一条消息后,都会把结果"教"给贝叶斯:

3. 平衡的性能

实际应用中的表现

在实际使用中,这个组合展现出了出色的表现。让我们通过实际日志来看看系统是如何工作的:

案例 1:常见广告处理流程

// 第一次处理日志
{
  "用户 ID": "1985508121",
  "消息": "转手私人学生 M🐕‍🦺,每个月给 2k 就行",
  "贝叶斯结果": {
    "置信度": "4%",
    "判断": "非垃圾",
    "关键词": ["2k", "月", "转手", "行", "学生"]
  },
  "AI 结果": {
    "置信度": "78%",
    "判断": "广告",
    "理由": "内容明确为转手私人学生并标明每月 2k 费用,属于典型的销售推广信息"
  },
  "后续处理": "删除消息并记录,贝叶斯进行增量学习"
}
// 第二次处理日志(相同用户,类似消息)
{
  "用户 ID": "1985508121",
  "消息": "转手私人学生 M🐕‍🦺,每个月给 2k 就行",
  "贝叶斯结果": {
    "置信度": "6%",
    "判断": "非垃圾",
    "关键词": ["2k", "月", "行", "学生", "转手"]
  },
  "AI 结果": {
    "置信度": "88%",
    "判断": "广告",
    "理由": "消息明确提供带价格的私人服务(每月 2k ),属于高风险广告特征"
  },
  "后续处理": "删除消息并记录,贝叶斯进行增量学习"
}

从日志中可以看出:

案例 2:新型垃圾识别

// 处理新型垃圾的代码流程
async function handleNewSpamPattern(message: string) {
  // 1. 贝叶斯尝试判断但不确定
  const bayesResult = await bayesDetector.checkMessage(message);
  if (bayesResult.confidence < 30) {
    // 2. AI 进行深度分析
    const aiResult = await ollamaDetector.checkMessage(message);

    // 3. 如果 AI 确认垃圾,进行处理并训练贝叶斯
    if (aiResult.isSpam) {
      await processSpamMessage(aiResult);

      // 4. 增量学习 - 贝叶斯学习新模式
      const trainingData = createTrainingData(message, aiResult);
      await bayesDetector.trainIncremental(trainingData);

      logger.info('New spam pattern learned', {
        pattern: extractPattern(message),
        confidence: aiResult.confidence
      });
    }
  }
}

在这个例子中,我们可以看到:

实际效果数据: | 指标 | 初始值 | 1 周后 | 1 个月后 | |------|--------|-------|---------| | 贝叶斯独立处理率 | 65% | 78% | 85% | | AI 平均置信度 | 72% | 81% | 88% | | 误报率 | 3.2% | 1.8% | 0.9% | | 处理延迟 | 120ms | 95ms | 78ms |

这些数据表明,随着系统的持续运行,贝叶斯和 AI 的配合越来越默契,整体性能不断提升。

为什么这个组合更好?

  1. 互补优势:贝叶斯的速度和 AI 的准确性完美结合
  2. 持续改进:系统越用越聪明,适应性越来越强
  3. 资源优化:在准确性和性能之间找到最佳平衡点

结语

所以我为这个 telegram 反垃圾机器人起名为 SageGuard-贤者🤖,希望其随着样本的增加能更加精准识别垃圾内容。 得益于 Oracle 提供的永久免费服务器和 ollama 提供的免费在线大模型调用 token 额度,该项目所在 Oracle 英国服务器到 telegram 荷兰数据中心延迟在 10ms 以内,到 ollama api 延迟 2ms 左右。 目前为爱发电,希望 SageGuard-贤者🤖 最终依靠快速的垃圾内容判断和低延迟的相应速度,为群管理反垃圾提供有益帮助,让群不被垃圾信息淹没,回归交流本质。

1153 次点击
所在节点    Telegram
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1188157

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX