关于朴素贝叶斯算法中文垃圾邮件分类,可以参考:
Python+sklearn使用朴素贝叶斯算法识别中文垃圾邮件
分词是很多文本分类技术中很重要的一个环节,如果这个环节被破坏,会严重影响分类的准确性。
为了对抗这种垃圾邮件分类机制,有些垃圾邮件发送程序在文本中插入【】#¥*@&$等干扰字符来影响分词,从而影响整个分类机制的正确性。这样处理过的垃圾邮件实际上更容易识别和检测。因为在正常邮件文本中是不应该出现太多干扰字符的,如果出现了,那么直接判定为垃圾邮件在很大概率上也是正确的。检测方法思路可以参考:
Python统计一个字符串中所有字符在另一个字符串出现的总次数
由于人类在阅读文本时,一般是从粗到细和粗细结合的过程,先是一目十行大概了解,如果有感兴趣或需要的内容再缩小窗口逐行阅读,甚至逐词逐字反复阅读,并且在阅读过程中还会根据知识密集程度动态调整阅读窗口。
在这样的阅读方式下,部分字词的顺序交换以后并不容易发现,即使发现一般也不会影响内容的理解,大脑会根据记忆和知识的积累自动识别和纠正部分错误。
根据这一特点,如果对邮件文本中部分字词的顺序进行调整,会直接影响分词结果和朴素贝叶斯算法或类似算法的准确率,欺骗垃圾邮件过滤机制,使得垃圾邮件出现在正常收件箱中的概率大幅度增加。
演示代码: