|
2 | 2 | title = "基于贝叶斯算法的Telegram广告拦截机器人(二):上线半月的故障、挑战与优化之路"
|
3 | 3 | author = ["Ramsay Leung"]
|
4 | 4 | date = 2025-09-13T14:28:00-07:00
|
5 |
| -lastmod = 2025-09-14T11:12:53-07:00 |
| 5 | +lastmod = 2025-09-14T11:22:03-07:00 |
6 | 6 | tags = ["telegram", "design", "programming", "rails", "rust"]
|
7 | 7 | categories = ["telegram", "基于贝叶斯算法的Telegram广告拦截机器人"]
|
8 | 8 | draft = false
|
@@ -69,19 +69,21 @@ Email 大多时候都是长文的,内容较长,并且大多情况,一封
|
69 | 69 |
|
70 | 70 | ### <span class="section-num">3.2</span> 漏删与误删 {#漏删与误删}
|
71 | 71 |
|
72 |
| -漏删广告与误删消息是相互矛盾的结果 |
| 72 | +漏删与误删是广告拦截中不可避免的矛盾权衡。 |
73 | 73 |
|
74 |
| -因为如果想要提高拦截度,自然就需要把置信度降低,把疑似是广告的消息都拦截掉,但是因为拦截强度的上升,又会把正常消息误删。 |
| 74 | +若想提高拦截率(召回率),就需降低置信度阈值,将更多疑似广告的消息拦截,但这也会增加误删正常消息的风险。 |
75 | 75 |
|
76 |
| -如果想要不误删消息,那么难免需要增加拦截的阈值,只有超过一定的置信阈值才拦截,这样准确度增加了,难免就会存在漏删广告的可能性。 |
| 76 | +反之,若想避免误删(提高精确率),则必须提高置信度阈值,但这又会导致更多广告被漏掉。 |
77 | 77 |
|
78 |
| -那么是否可以既准确拦截广告,又避免误删正常消息呢? |
| 78 | +在即时消息短小、上下文缺失的特性下,想同时实现零误删和零漏删几乎是不可能的。 |
79 | 79 |
|
80 |
| -在即时消息上下文不齐整,消息短而密集的特性下,可以基本是不可能的。 |
| 80 | +权衡之下,我选择优先保证用户体验: ****宁可漏删,不可误删**** |
81 | 81 |
|
82 |
| -而用户对消息被误删,以及垃圾广告被漏删的容忍度也是不同的,漏删广告,群成员可以举报或管理员删,但是误删就没法恢复. |
| 82 | +因为漏掉的广告,群友可以举报或由管理员手动删除;但误删的正常消息却无法恢复,对用户的伤害更大。 |
83 | 83 |
|
84 |
| -所以我只能是提高置信度,把阈值设置成95%, 也就是说只有模型认为超过95%的概率这个是广告,才能把这条消息删掉,虽然会增加漏删广告的概率,但是起码能保证不误删正常消息。 |
| 84 | +因此,我将拦截阈值设置为95%,即仅当模型有极高把握(>95%概率)判定为广告时才会删除。 |
| 85 | + |
| 86 | +这虽然会放过一些疑似广告,但最大程度地保障了正常聊天不被误删。 |
85 | 87 |
|
86 | 88 |
|
87 | 89 | ## <span class="section-num">4</span> 优化之路 {#优化之路}
|
@@ -229,7 +231,8 @@ Telegram客户端不一定支持会跳转被恢复的旧消息,这意味着,
|
229 | 231 | | 训练数据量 | 10543 |
|
230 | 232 |
|
231 | 233 | 最开心的是看到我自己的程序在这些群成功拦截垃圾广告,就很有成就感,证明我做的东西真的能用户解决问题。
|
232 |
| - |
| 234 | + |
| 235 | +{{< figure src="/ox-hugo/detect_spam_success.jpg" >}} |
233 | 236 |
|
234 | 237 |
|
235 | 238 | ## <span class="section-num">7</span> 结语 {#结语}
|
|
0 commit comments