首页 > 范文大全 > 正文

基于朴素贝叶斯的中文垃圾短信过滤系统的设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于朴素贝叶斯的中文垃圾短信过滤系统的设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:在传统垃圾短信过滤系统基础上引入了中文分词算法和朴素贝叶斯算法,使其具有了自学习能力,克服了传统垃圾短信系统需要人工设置、无法适应短信内容变化、误判率高的缺点。实践证明该短信过滤系统具有较高的准确率和适应力。

关键词:朴素贝叶斯;垃圾短信;短信过滤

中图分类号:TP302文献标识码:A文章编号:1009-3044(2008)32-1178-03

Design of Chinese SMS Spam Filtering System Based on the Naive Bayes

MOU Xiao-guang1, GONG Li-ning2

(1.Library, Qingdao Agricultural University, Qingdao 266109, China; work Center, Qingdao Agricultural University, Qingdao 266109, China)

Abstract: The Chinese word segmentation algorithm and the Naive Bayes algorithm are introduced into the tradition of SMS spam filtering system, it has a self-learning ability to overcome the defects of artificial setup of traditional spam SMS system , impossible adaptability to the changes in the content of the SMS and the high rate of miscarriage of justice. Practice has proved that the message filtering system has high accuracy and adaptability.

Key words: naive bayes; SMS spam; SMS filtering

1 引言

手机短信以其“短、快、新、奇”的模式已经成为人们一种非常重要的通讯方式,然而我们在享受短信给我们带来的便捷的同时,也不得不面对垃圾短信骚扰的无奈。据调查统计,2007年上半年,每位手机用户平均每周收到8.29条垃圾短信[1]。垃圾短信的无处不在,已经成为了电信系统的顽疾,给正在蓬勃发展的移动通信业带来了极大的负面影响。

目前实现垃圾短信的监控和过滤主要有两种机制,即内容关键字过滤机制和号码黑名单机制[2]。其中,内容关键字过滤机制中的关键字内容主要依靠人工添加的方法来实现,尚无法实现自动添加;而号码黑名单的生成可分为手工添加、实时自动生成和准实时自动生成等方法实现。但这两种机制的缺点是实现方法呆板且防范数量有限,由于垃圾短信的形式在不断演化,垃圾短信的发送特征和内容也在不断变化,为适应这种变化,必须研发新的垃圾短信自适应过滤系统,以提高系统的智能化水平。本文设计并实现了一个基于朴素贝叶斯的自适应垃圾短信过滤系统,将贝叶斯分类和中文分词技术引入垃圾短信过滤中,并将分析结果及时反馈给在线垃圾短信过滤系统,使系统具有更好的自适应性和较高的智能化水平。

2 朴素贝叶斯分类算法

目前著名的文本分类方法有Bayes、LLSF、SVM、KNN、决策树等[3]。贝叶斯(Bayes)分类方法是一种最常用的有指导的方法,以贝叶斯定理为理论基础,是一种在已知先验概率与条件概率的情况下的模式识别方法。贝叶斯分类器分两种:一种是朴素贝叶斯分类器,它假设一个属性对给定类的影响独立于其他属性,即特征独立性假设。当假设成立时,与其他分类算法相比,朴素贝叶斯分类器是最精确的。但是,文本属性之间的依赖关系是可能存在的。另一种是贝叶斯网络分类器。可以考虑属性之间的依赖程度,其计算复杂度比朴素贝叶斯高得多,更能反映真实文本的情况。贝叶斯网络分类器实现十分复杂,目前还停留在理论的研究阶段。因此本系统采用朴素贝叶斯分类算法解决短信内容检测、分类问题。

朴素贝叶斯分类器假设特征对于给定类的影响独立于其它特征,即特征独立性假设。对文本分类来说,它假设各个单词Wi和Wj之间两两独立,其原理见图1。

设训练样本集分为k类(正常短信和垃圾短信),记为C={C1,C2 ,…,Ck},则每个类Ci的先验概率为P(Ci), i=1,2,…,k,其值为Ci类的样本数除以训练集总样本数n。对于新样本d,其属于Ci类的条件概率是P(d|Ci)。根据贝叶斯定理,Ci类的后验概率为P(Ci|d):

P(d)对于所有类均为常数,可以忽略,则式(1)简化为

P(Ci| d)∝P(d | Ci)P(Ci) (2)

为避免P(Ci)等于0,采用拉普阿斯概率估计:

式中:|C|为训练集中类的数目,|DCi|为训练集中属于类Ci的文档数,|DC|为训练集包含的总文档数。

在特殊情况下,训练样本集中各类样本数相等,此时分类的先验概率相等,式(2)可以简化:

P(Ci| d)∝P(d | Ci) (4)

朴素贝叶斯分类器将未知样本归于类的依据,如下:

P(Ci| d) =arg max{P(Cj| d)P(Cj)},j =1,2,…,k。 (5)

文档d由其包含的特征词表示,即d=(w1,…,wj,…,wm),m是d的特征词个数|d|,wj是第j个特征词,由特征独立性假设,则得

式中:P(wj|Ci)表示分类器预测单词wj在类Ci的文档中发生的概率。因此式(2)可转换为

为避免式(7)中P(wj|Ci)等于0,可以采用拉普拉斯概率估计。有两种方法计算P(wj|Ci),即文档型计算公式和词频型计算公式。

1)文档型:不考虑单词在文档中的出现频次,仅考虑单词在文档中是否出现,0表示未出现,1表示出现,依式(8)计算:

式中:N(doc(wj)|Ci)为Ci类文本中出现特征wj的文本数。

2)词频型:考虑单词在文档中出现的频次,依式(9)计算:

式中:|V|表示特征词表中总单词数,TF(wj,Ci)表示单词wj在类Ci的所有文档中出现的频次之和。

3 中文分词算法

决定任何一条短信内容的关键是短信中所含的实意词,如果能够准确地把能表达短信内容的实意词提取出来,那么就可以基本准确地把握短信的特征,并根据这些特征来判断这条短信是否属于垃圾短信。然而,对于一条正常的短信,我们很少用诸如 “*”“¥”“$”等特殊符号,但这些特殊符号往往正是垃圾短信的共同特征。垃圾短信用这些符号一是为了引起收件人的注意,二是为了躲避基于规则的过滤算法的过滤。针对这种情况,在中文分词过程中我们首先对新收到的短信内容进行特殊字符的过滤,然后再对过滤后的短信内容进行分词,从而最终提取短信中的关键词。

目前流行的中文分词法有:最大匹配法(MM法)、逆向最大匹配法(RMM、OMM、IMM)、逐词匹配法、部件词典法、词频统计法、设立标志法、并行分词法、词库划分和联想匹配法等[4]。在本系统中我们使用双向最大匹配分词法对短信内容进行分词,它的优点是高纠错率和高歧义分析能力。双向最大匹配分词法的基本方法是将正向最大匹配法的结果和逆向最大匹配法的结果进行比较,一致的切分结果认为是正确的,不一致的切分结果则采用上下文相关信息选取一种分词方法。

基本流程如下:

1)读入文本数据作为匹配算法的词典;(本系统采用新华字典1995年版)

2)对输入的句子做正向最大匹配分词,切分好的句子为MMSentence;

3)对输入的句子做逆向最大匹配分词,切分好的句子为RMMSentence;

4)比较MMSentence和RMMSentence,一致则输出正确的切分,不一致则采用上下文相关信息选取一种分词方法。

如果S′代表一个中文文本中的一个字符串,设词表中最大词长为MaxWordLength,则正向最大匹配算法可描述如下:

1)待切分的汉字串S,已切分的汉字串S′(S′初始为空串);

2)如果S为空串,转(6);

3)从S左边复制一个子串w作为候选词,w尽可能长,但长度不超过MaxWordLength(词表中的最大词长);

4)如果在词表中能找到w,或者w的长度为2,那么将w和一个词界标记一起加到S′右边,并且从S左边去掉w,转(2);

5)去掉w中最后一个汉字,转(4);

6)结束,输出S′。

逆向最大匹配法的具体方法与正向最大匹配法类似,只是取子串w是在句末进行,每次匹配不成功时,去掉汉字串前面的一个字。

4系统设计

本文系统的基本思路是,实时提取短信的相关信息及内容,并将其反馈给在线过滤系统,通过黑白名单及非法关键字预处理、短信内容中文分词以及贝叶斯分类统计,以达到准确和智能过滤垃圾短信的目的。在线过滤系统包括三个模块:短信预处理模块、自动分词模块和贝叶斯分类模块。系统架构如图2所示。

在线过滤系统的处理流程如下:1)实时接收从短消息中心发送的短消息信息并放入短信缓冲区内保存。由于短消息过滤系统处理过程与短消息接收存在时差,实时短消息过滤会产生拥塞,缓冲区的使用可以保证短消息的及时接受以及避免拥塞现象的出现。2)短信预处理模块,在该模块中会存放预先定义的好的手机黑白名单以及非法关键字,这些黑白名单和关键字都是人为手工添加,当短消息的发送方或接受方的手机号码存在于手机黑名单中,或者当短消息含有预定义的非法关键字时,该短消息将被定义为垃圾短消息,并被放入垃圾短信数据库中。3)中文分词模块,其主要任务是将短消息内容进行中英文分词。该模块首先剔除短消息中与内容无关的特殊字符,例如:“本*公*司*代*售*各*种*发*票*……”中的“*”符号。再按双向最大分词法将内容转化为包含基本语义单位组成的关键字表列。4)贝叶斯分类模块,利用贝叶斯将统计出的正常短信和垃圾短信特征概率,并将关键词的分类,词频高的反馈更新在线过滤系统关键词库,系统设置一个阈值,综合评价函数根据计算得到垃圾短信特征的值,跟阈值比较,如果大于这个阈值说明是正常短信,反之小于则是垃圾短信。

5 结论

本文在传统垃圾短信过滤系统的基础上引入了中文分词算法和朴素贝叶斯算法。传统垃圾短信系统的内容过滤需要人工设置,不仅无法适应短信内容的变化和短信形式的多样,而且误判率高,维护困难。新系统的内容过滤采用了朴素贝叶斯算法,具有自学习和更新能力,因此它能克服传统过滤系统容易过时的问题,降低了短信误判的风险。通过实验证明,该短信过滤系统具有较高的准确率。

参考文献:

[1] 黄日生.浅议垃圾短信之规制[J].通信与信息技术,2008,1(10):34-36.

[2] 潘文锋.基于内容的垃圾邮件过滤研究[D].北京:中国科学院计算技术研究所,2004.

[3] 李静梅,孙丽华,张巧荣,等.一种文本处理中的朴素贝叶斯分类器[J].哈尔滨工程大学学报,2003,2(1):71-74.

[4] 黄昌宁.中文信息处理中的分词问题[J].语言文字应用,1997,2(1):72-78.