手机垃圾短信过滤系统的设计和实现
开发案例
手机垃圾短信过滤系统的设计和实现
袁瑞芬
(东莞理工学院计算机学院,东莞523808)
摘
要:针对目前手机垃圾短信过滤的几种方法,分析与比较这些方法的优缺点,在此基础上,介绍
贝叶斯过滤方法的原理,讨论基于贝叶斯推理方法的过滤技术在手机垃圾短信过滤中的优点和适用性,重点介绍贝叶斯推理方法在手机短信过滤中的应用,实验结果显示该系统具有较好的过滤效果。
关键词:垃圾短信;贝叶斯过滤模型;贝叶斯推理;黑名单;白名单
0引言
手机的普及给人们的交流带来了很大的方便,手
字符长度,也就是70个中文字符。短文本提供的可用文字信息更少,需要其他的可用特征来补充。
(3)邮件的地址是可以方便伪造的,但是短信的号码是很难伪造的,因此,黑白名单方法在短信系统中是很有效的。
(4)短信相对于互联网来说,需要精确计费,因此发送和接收可以集中处理,可以很方便地在短信中心阻止黑名单用户。
(5)垃圾短信的内容都很近似,某段时间内不会做修改或都做很小的修改。
(6)发送频率比较高,即单位时间内发送的数量大。(7)一般每条短信发送给不同的人。
(8)发送没有时间特征,即任何等长时间段发送短信的数目相同。
机已经成为人们日常生活中非常重要的通信工具,但是手机短信与邮件一样存在着令人苦恼的垃圾短信问题,来自不同渠道的各种垃圾短信充斥手机短信,给用户带来了很多的烦恼。垃圾短信的常见内容包括广告信息、色情信息、假中奖信息、欺诈信息、恶作剧等。目前在国内外,垃圾短信和垃圾邮件一样,都逐渐成了倍受关注的问题[1]。本文主要利用贝叶斯方法对垃圾短信进行过滤,贝叶斯法过滤的大致思想是:利用已知的正常短信息和垃圾短信息,建立垃圾短信息和非垃圾短信息单词和贝叶斯概率模型,然后利用该模型判断短信息是否为垃圾短信息。贝叶斯过滤的优点是准确率比较高、方法简单,有较好的健壮性和容错性。
1手机垃圾短信的特点
手机垃圾短信是指未经请求或允许而收到的手机
2手机垃圾过滤的几种方法
目前,根据手机垃圾短信的特点,对垃圾短信的处
短信,和垃圾邮件过滤比较,短信过滤有以下的特点:
(1)短信只包含内容和发送者的号码,没有其他的信息,例如附件、图片、链接。这将大大减少可以利用的规则的数量。
(2)短信息的长度是有限制的,一般为140个英文
理有两种技术:一种是在发送的服务器中心SMSC(Short
MessageServiceCenter,短信服务中心)进行处理,另一种方法是直接在手机上用编制的内嵌程序实现。
在SMSC环节,对短信内容的监控主要通过抽检实现。例如发现某SP流量突然增大,频率增高,则可以
收稿日期:2010-01-05修稿日期:2011-01-20
作者简介:袁瑞芬(1981-),女,广东东莞人,本科,助理工程师,研究方向为计算机网络,软件工程
20
开发案例
对其短信进行抽检,一旦发现违法内容,即可采用封堵。实时检测是在短信发送时就进行检测,对所有的短信进行检测可行性不强,一方面要投入大量的人力、设备和成本,另一个方面违反短信便捷的特点,影响时效,同时也侵犯了用户的隐私权和通信,在法律上得不到支持。
因为每个人对垃圾短信的定义都有所不同。在
已经收到了垃圾短信的骚扰了,再者,垃圾短信息的发信人如果是使用那些自动发送短信的电脑软件,注册新的软件就可以得到新的号码,这样使用白名单和黑名单技术又很难进行垃圾短信的屏蔽,所以白名单和黑名单技术在针对某一特定已知的发信人号码的时候才比较有效,在针对陌生的群发垃圾短信息其实效果不大;对于关键词的匹配算法,明显地带有以偏概全的错误。下面将要介绍的贝叶斯过滤方法则通过训练大量短信息形成的概率模型来作为判别分类的基础,判别的准确率比较高,而且健壮性也比较好[2]。
SMSC环节对群信息进行堵截一刀切的模式进行过滤的方法很容易将某些用户认为不是垃圾短信息的短信堵截。如果在用户的手机端进行垃圾短信息的过滤就不会出现这个问题。
(1)可以根据用户个人的具体情况设置白名单和黑名单实现对特定号码信息的过滤。
(2)可以让用户自己根据对垃圾短信的定义,选定过滤法则,使得垃圾信息的过滤变得个性化。
(3)用户可以对收到的某些短信息指定为垃圾短信息,进行再次学习,及时扩展过滤的能力。
总之,在手机端用编制的内嵌程序实现垃圾短信息的过滤可以使得对垃圾短信息的过滤变得个性化和符合用户个人的需要。
利用垃圾邮件过滤的原理,我们可以设计垃圾短信过滤的一些方法:
从技术上来分析,垃圾短信息的过滤方法可以采用以下几种方法:白名单和黑名单技术、关键词语的匹配法,还有本文将要介绍的贝叶斯推理过滤方法等。
白名单和黑名单技术将要接收的发信息人的号码列入白名单,将要拒绝的发信息人的号码列入黑名单,这样就可以对发来的短信息进行过滤。
关键词的匹配算法主要是搜集某些在垃圾短信息中常见的出现频率很高的词语作为垃圾短信息的关键词,对接收到的短信息内容进行扫描,如果在该短信息出现了垃圾短信息的关键词,则将该短信息判别为垃圾短信进行堵截,否则接收。
贝叶斯推理的过滤方法是通过搜集大量的垃圾短信息和非垃圾短信息进行训练,形成垃圾短信息和非垃圾短信息关键词语的概率模型,然后利用贝叶斯推理方法对接收到的信息进行判别分类。
对于白名单和黑名单技术,是在收到短信之后,才能确定是否需要将该号码放进黑名单,很明显这时候
3贝叶斯过滤方法介绍
贝叶斯法推理过滤方法的大致思想是:利用已知的
正常短信息和垃圾短信息[3],建立垃圾短信息和非垃圾短信息单词的贝叶斯概率模型,然后利用该模型判断接收到的短信息是否为垃圾短信息[4]。也就是说,贝叶斯法过滤可以从已知的短信息中自动生成过滤器,而不需要用户人为制订规则。
贝叶斯过滤算法的基本步骤如下:
①收集大量的垃圾短信息和非垃圾短信息,建立垃圾短信息和非垃圾短信息集。
②提取短信息主题和短信息体中的独立字串例如ABC32、¥234等作为TOKEN串并统计提取出的TO-KEN串出现的次数即字频。按照上述的方法分别处理垃圾短信息集和非垃圾短信息集中的短信息。
每一个短信息集对应一个哈希表,hashtable_good对应非垃圾短信息集而hashtable_bad对应垃圾短信息集。表中存储TOKEN串到字频的映射关系。
③计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)。
综合考虑hashtable_good和hashtable_bad,推断出当新来的短信息中出现某个TOKEN串时,该新短信息为垃圾短信息的概率。数学表达式为:
A事件—短信息为垃圾短信息,t1,t2,…,tn代表TOKEN串,则P(A|ti)表示在短信息中出现TOKEN串ti时,该短信息为垃圾短信息的概率。设:
P1(ti)=(ti在hashtable_good中的值)P2(ti)=(ti在hashtable_bad中的值)则P(A|ti)=P1(ti)/[P1(ti)+P2(ti)];
2011.02
趶趬
开发案例
④建立新的哈希表hashtable_probability存储TO-KEN串ti到P(A|ti)的映射
至此,垃圾短信息集和非垃圾短信息集的学习过程结束。根据建立的哈希表hashtable_probability可以估计一条新到的短信息为垃圾短信息的可能性。
当新到一条短信息时,按照步骤②生成TOKEN串。查询hashtable_probability得到该TOKEN串的键值。
假设由该短信息共得到N个TOKEN串,t1,t2,…,tn,
号,所以要有专门的分词模块。
Sqlite数据库:开源的微型数据库系统,利用此数据库系统来管理学习到贝叶斯概率模型。
手机自带短信息接收/发送模块:这是手机自带的短信息发送和接收模块,提供了调用的接口可以对短信进行操作。
我们对于贝叶斯过滤算法的实现包括了两个阶段:学习阶段和应用阶段。
学习阶段的主要任务是:通过对收集到的大量的垃圾短信息和非垃圾短信息进行学习,生成各个词语在垃圾短信息和非垃圾短信息中出现频率的概率模型供学习和判断使用[5]。
应用阶段的主要任务是:对接收到的短信息,利用它所包含的词语在学习阶段形成的概率模型文件中的概率进行贝叶斯推理,判别其是否为垃圾短信息,如果是垃圾短信息,则将该短信息打上垃圾标志,并对该消息当做垃圾短信息进行加强学习[1]。
手机资源有限,不适合使用像Access或者SQL
hashtable_probability中对应的值为P1,P2,…,PN,P(A|t1,t2,t3,…,tn)表示在短信息中同时出现多个TOKEN串t1,t2,…,tn时,该短信息为垃圾信息的概率。
由复合概率公式可得:
P(A|t1,t2,t3,…,tn)=(P1*P2,…,PN)/[P1*P2,…,PN+(1-P1)*(1-P2)*…*(1-PN)]
当P(A|t1,t2,t3,…,tn)超过预定阈值时,就可以判断短信息为垃圾短信息。
4
下:
系统实现和实验结果
我们所设计的贝叶斯垃圾信息过滤结构系统如
Sever这样的软件。针对这些特点,我们使用了一种轻便的数据库Sqlite来建立概率模型,其占用资源很少而且不需要安装的特点使得它十分适合在手机上使用。
在学习阶段,利用Sqlite生成一个用于存储生成概率模型的数据库,把垃圾信息和非垃圾短信息中的词语连同词频存储于数据库中,把形成的概率表也存储于数据库中,即生成hashtable_good和hashtable_bad,
hashtable_probability。当进行短信息判别的时候,首先进行分词,从数据库中取出各个词语的概率,然后利用上节的复合概率公式进行计算推理,当计算的结果超过一定的阈值的时候就将该短信息判定为垃圾短信[6]。如果用户发现某一个号码经常发送垃圾短信,就可以将该号码加入黑名单,使得以后该号码的信息会被自动屏蔽,提高了效率。在中文的垃圾短信息过滤中,还需要使用中文分词,中文分词的质量对垃圾短信息的过滤精度有比较大的影响。
在实验的过程中,我们在SmartPhone上使用Em-
图1
用户操作界面:用户可以对设定过滤的阈值,可以从短信垃圾箱里查看内容,决定要不要对判定为垃圾短信的短信息进行加强学习;设定白名单和黑名单等操作。
学习/判定算法模块:主要为核心的贝叶斯过滤算法模块,包括学习建立贝叶斯模型库和利用模型库判定模块;也包括白名单和黑名单等比较次要的判定方法。
中文分词模块:对中文短信进行中文分词的处理,因为中文的短信不像英文句子一样有自然的分界符
bededVC4.0平台来编译运行程序。我们收集了600条垃圾短信息和1000条非垃圾短信息进行学习,在经过学习以后,对于训练过的垃圾短信息的运行进行非类判断,准确率可以达到99.0868%,对于训练过的非
20
开发案例
垃圾短信息文件进行分类判断,准确率可以达到的算法,综合运用各种算法来进行垃圾短信息的过滤,设计可以自动设定阈值和训练次数的算法,使得训练和判别时能得到最佳效果。
参考文献
99.7165%。对于测试集上的垃圾短信息的判定准确率达到88.013%,对于非垃圾短信息的判定准确率为
90.104%。在SmartPhone上运行时,对一条信息的处理时间大概为2~3秒,这个时间是用户可以接受的范围。
5结语
通过实验结果可以看出,本系统的准确率基本达
[1]陈秀琼.基于贝叶斯网络的数据挖掘技术.三明高等专科
学校学报,2004
[2]DavidHand,HeikkiMannila,PadhraicSmyth.数据挖掘原
理.张银奎,廖丽,宋俊等译.机械工业出版社&中信出版社,2003.4(第1版)
到了预期的效果,也具有较好的健壮性,但是我们实现的这个基于贝叶斯方法的垃圾短信息过滤系统也存在着如下问题:
(1)供训练用的信息量尚且不足;
(2)判断时所依据的阈值由人为主观设定,该阈值的设定影响判定的精度;
(3)对供训练文件需要训练几次才能达到最好的效果;
(4)该程序用C语言实现,目前只能在SmartPhone上运行。
对于系统存在的问题,我们未来需要进行进一步的工作,收集更多更齐全的垃圾短信息,进一步完善对垃圾短信息判别后进行自学习自扩展的功能,寻找新
[3]H.Witten&EibeFrank.数据挖掘实用机器学习技术及Java实现(第二版).机械工业出版社,2005.9
[4]余东峰,孙兆林.基于贝叶斯网络不确定推理的研究.微型
电脑应用,2004
[5](美)TomM.Mitchell.机器学习.曾华军,张银奎等译.机械
工业出版社,2003.1
[6](加)JiaweiHan,MichelineKanber.数据挖掘概念技术.范
明,孟小峰.机械工业出版社,2007.3
DesignandImplementationofMobileJunkShortMessage
FilteringSystem
YUANRui-fen
(SchoolofComputer,DongguanUniversityofTechnology,Dongguan523808)
Abstract:Comparesandanalysessomemeritsanddefectsinmethodsthatcanbeusedtothefilteringof
junkshortmessage.Basedonthese,introducestheprincipleandtheoryofBayesianreasonmethod,anddiscussestheadvantageoffilteringmethodbasedonBayesianreasonmethod.MainlyintroducestheapplicationsofBayesianreasonmethodinthejunkshortmessagefilter-ingsystemandtheexperimentresultshowsthatthissystemhaswellfilteringeffect.
Keywords:JunkShortMessage;BayesianProbabilityModel;BayesianReasoning;WhiteList;BlackList
2011.02
趹趬