前言
网上关于应用机器学习的方法识别垃圾邮件文章很多.
核心思想是对邮件进行分词,或对分词作优化,进而应用各算法达到识别垃圾邮件的目的.
我的观点是, 这种思路
- 对一般文章,如帖子,博客,甚至严肃的论文都会有不错的分类效果.
- 但用于识别垃圾邮件则远远不足.
分类基本要素
作者不是研究算法的,只是根据多年识别垃圾邮件的经验,认为分类的基本要素包括:
- 分类算法
- 大量高质量的样本
- 数据清理
- 特征的提取 (如果是分词, 则还应该加上"词库")
分类算法,开源的很多.
10万~100万高质量样本,只要有耐心,总能收集到.对公司来说这不是问题.
数据清理,很难.垃圾邮件发送者会想尽一切办法
- 让机器无法识别或错误识别.
- 而让人能做到在杂乱无章的信息中整理出受益人信息.
特征的提取, 不仅仅是分词. 邮件或垃圾邮件有更多自己的特性,如
伪造收件人, 附件的多样性(doc,rar,jpg等), 是不是转发, 是不是往复.
几个特殊邮件例子
有很多干扰反垃圾程序的情况…这只举几个特殊的例子.
1 正文是图
最近正文是一张图加上几句随机文字的邮件特别多
2 通过字体背景或大小干扰分词
3 邮件服务商私自追加的广告
4 伪造url迷惑收件人
5 表格(table)拼的文字
6 成%人%用%品%公司的会议信件,或采购信件
…
数据清理和特征提取
除了分词,还有很多特征需要提取,下面只提几个
- 信头的和理性,完整性等需要检查, 如: 是否有Message-ID 等
- 是否凌晨发信
- 是否只有一个收件人
- 主题长度是否太短, 是否包含乱码等
- 正文是否太短, 正文是不是有一张大图等
- 是不是回信等
- 正文html中是不是有font标签, size是多少等
- 正文是不是有url等
- 附件属性,大小,类型, 名称等
- …等等
特征提取后, 做标记, 作为一般性的分词结果.继续应用算法.
这样才有能做好垃圾邮件识别.
在本文作者自己开发内容过滤系统中,提取了大概上百特征.
在线识别垃圾邮件
最后
除了通用的分类方法. 在每个不同的领域,提出个性化的特征才能做好分类.这就需要对这个领域有非常深刻的了解.