#blog #detection #algorithm #spam #email

snooker

Snooker是一个针对博客评论的纯Rust实现,用于检测垃圾邮件,由Jonathan Snook开发。

1个不稳定版本

使用旧Rust 2015

0.1.0 2017年8月15日

#12#spam

MIT 协议

24KB
475

Snooker - 轻量级博客评论垃圾邮件检测

Docs License

该软件包提供了一个纯Rust实现的垃圾邮件检测算法,该算法由Jonathan Snook开发,用于博客评论。

如前链接文章所述,该算法基于积分系统。根据各种规则授予或扣除积分。如果评论的最终分数大于或等于1,则认为该评论有效。如果评论的最终分数为0,则认为其值得审查。如果评论的最终分数低于0,则认为其为垃圾邮件。每个评论的起始分数为0。

安装

如果您使用Cargo,只需将Snooker添加到您的Cargo.toml

[dependencies]
snooker = "0.1.0"

示例

Snooker根据以下模式给以下示例评论评分为-10

  • 正文中有少于2个链接:+2分
  • 正文长度超过20个字符但包含1个链接:+1分
  • 正文中的链接包含一个被认为是垃圾邮件的关键词(“免费”):-1分
  • 正文包含一个被认为是垃圾邮件的短语(“限时优惠”):-1分
  • 正文开头的单词被认为是垃圾邮件时(“很好”):-10分
  • 作者字段不包含http://https://+0分(未更改)
  • URL字段包含一个被认为是垃圾邮件的关键词(“免费”):-1分
  • 没有使用被认为是垃圾邮件的顶级域名:+0分(未更改)
  • 没有URL的长度超过30个字符:+0分(未更改)
  • 没有找到辅音组合:+0分(未更改)
  • 没有提供有关使用此电子邮件地址提交的先前评论的数据:+0分(未更改)
use snooker::{Comment, Snooker, Status};

let comment = Comment {
    author: Some("Johnny B. Goode".to_string()),
    url: Some("http://my-free-ebook.com".to_string()),
    body: String::from("
        <p>Nice post! Check out our free (for a limited time only) eBook
        <a href=\"http://my-free-ebook.com\">here</a> that's totally relevant</p>
    "),
    previously_accepted_for_email: None,
    previously_rejected_for_email: None,
    previous_comment_bodies: None,
};

let snooker_result = Snooker::new(comment);
assert_eq!(snooker_result.score, -10);
assert_eq!(snooker_result.status, Status::Spam);

许可证

Snooker在MIT LICENSE协议下发布。

关于

此软件包由Elliot Jackson编写。

依赖项

~3.5MB
~72K SLoC