- 博客(0)
- 资源 (1)
空空如也
要求综合运用 STL,实现一个简单的垃圾邮件过滤程序
Homework5
1、问题描述
电子邮件便利了人们之间的沟通,但亦衍生出许多的问题,例
如:
成为病毒散布的有效媒介。
垃圾邮件厂商(Spammer)滥发广告信件,不但浪费了网络带
宽,同时也占据了使用者收件箱的空间,浪费了使用者宝贵
的时间。
骇客伪造寄信者发送欺诈信件,例如:伪造由银行客服人员
发出的信件,谎称使用者密码过期,需要上网变更密码,然
后引诱使用者到恶意网站打入银行账户及密码,有人称这种
手法为网络钓鱼(phishing)。
由于垃圾邮件的问题日益严重,因此有许多软件致力于过滤这
些垃圾电子邮件(当然也包括了病毒邮件以及欺诈邮件) 。但是如何判断一封邮件是否为垃圾邮件。目前有一种作法是定义所谓的“垃圾信指数” 。首先,先观察被邮件管理者或者使用者归类为垃圾的邮件,找出被视为“垃圾邮件”出现最多次的关键字(key word),将这些关键字加入“垃圾邮件辨识资料库” 。而后在收到每一封新邮件时,如果信件中出现这些关键字,这封信的“垃圾信指数”会加分。一般而言,垃圾信过滤软件会预先设定垃圾邮件指数的分类门
槛。如果一封信的垃圾邮件指数超过这个门槛,就会被设定为垃圾邮件。
(1)垃圾邮件辨识资料库范例如下:
9 出现一次“viagra”这个单词,垃圾指数会加4 分
9 出现一次“drug”这个单词,垃圾指数会加 3分
9 出现一次“drugs” 这个单词,垃圾指数会加 3 分
9 出现一次“price” 这个单词,垃圾指数会加 2 分
9 出现一次“discount” 这个单词,垃圾指数会加 2分
9 出现一次“free” 这个单词,垃圾指数会加3分
(2)垃圾指数阈值:阈值在程序执行时输入。
(3)测试资料:
如收到一封 email信件(sample.eml)如下:
From:<[email protected]>
To:<[email protected]>
Subject:New viagra generation
Dear Customers,do you need viagra?Long effects!No
prescription Needed!
Besides,we can offer you special discount!!
You can have a free trial pill if you can go to our website
and register your
information before 7/8 2008
Best Regards.VIAGRA Sales Team.
信件的头部(From,To,Subject)及正文部分都要进行字符串比
对。假设垃圾信指数阈值设定为 5 分。上面这封信件共出现 3 次
viagra、一次 discount 以及一次 free,垃圾信指数则为
4*3+1*2+1*3=17 分,超过 5分,因此会被判定为垃圾信。
(4)关键字文件格式为:关键字 分数(以Tab 键隔开,参见
wordlist.txt)
如:
discount 2
great 3
sell 5
viagra 1
单词大小写视为不同。
本次作业要求综合运用 STL,实现一个简单的垃圾邮件过滤程序。
2、要求
(1)输入:您的执行程序必须能够读入三个参数。
第一个参数为垃圾邮件关键字文件名称
第二个参数为输入的电子邮件文件名称
第三个参数为垃圾信指数阈值
如:
SpamFilter wordlist.txt sample.eml 10
(2) 将email文件的内容拆成 tokens,英文大小写共52 个字母以外的字符均视为token 的分隔。
提示:解析器伪代码
char tBuff[200];
bool inToken = false;
int buffIndex;
for each character ch in email file
{
If not inToken and isEnglishChar(ch)
buffIndex = 0;
tBuffer[buffIndex] = ch;
inToken = true;
else if inToken and isEnglishChar(ch)
tBuff[++bufferIndex] = ch;
else if inToken and not isEnglishChar(ch)
tBuff[++buffIndex] = ‘\0’;
inToken = false;
//成功取出一个string token
else if not inToken and not isEnglishChar(ch)
//skip the character ch
}
(3) 在屏幕上输出以下内容:
是否为垃圾信
垃圾指数阈值
该封信的得分
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人