1个不稳定版本
使用旧Rust 2015
0.1.0 | 2017年8月15日 |
---|
#12 在 #spam
24KB
475 行
Snooker - 轻量级博客评论垃圾邮件检测
该软件包提供了一个纯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编写。
- 博客: https://elliotekj.com
- 电子邮件: [email protected]
依赖项
~3.5MB
~72K SLoC