垃圾邮件快速识别思路与实现(python)

朴素贝叶斯算法算法、支持向量机算法等主流的垃圾邮件分类算法都依赖于特征向量的提取和数据集对模型的训练,其中特征向量的提取又依赖于对邮件正文的分词结果。如果垃圾邮件发送者在邮件中插入一些干扰符号,很容易影响分词的结果。例如,在“发票”中间插入“【”变成“发【票”将会使得jieba或者snownlp之类的分词工具无法正常分词,从而干扰最终的邮件分类效果。

一般来说,在一封正常邮件中,是不会出现太多类似于【、】、*、-、/这样的字符的。如果一封邮件中包含的类似字符数量超过一定的比例,我们可以直接认为是垃圾邮件,而不需要朴素贝叶斯算法或者支持向量机等复杂的算法,可以大幅度提高分类速度。

 因此当电脑识别出很多上列符号时就会识别出是垃圾短信。

def check(text, rate=0.2):
    characters = '【】*-/\\'
    num = sum(map(
        lambda ch:text.count(ch),
        characters))
    if num/len(text) > rate:
        return '垃圾邮件'
    return '正常邮件'
text = input()
print(check(text))

text: 要检查的文本。
rate: 允许的最大字符频率,默认值为 0.2(20%)。

characters 变量定义了一组特定字符,包括 【】*-/\\。

使用 sum 和 map 函数统计在 text 中每个特定字符出现的次数。

计算特定字符出现的总数与文本长度的比例,如果超过给定的 rate,则返回 '垃圾邮件',否则返回 '正常邮件'。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值