APP下载

基于贝叶斯分类器的中文垃圾短信辨识

2017-04-12袁闻王晓晔邓高登韩淼杨星谢晓喆

科技资讯 2017年5期
关键词:特征选择文本挖掘特征提取

袁闻+王晓晔+邓高登+韩淼+杨星+谢晓喆

摘 要:垃圾短信制造者出于商业目的或其他诈骗目的向手机用户大量发送垃圾短信或诈骗短信,使得手机用户不胜其扰。运营商在发送短信之前对短信加以辨识后,给可能是垃圾短信的信息贴上标签后再发送,将会大大降低手机用户受骗的机率。该文采用IF-IDF算法和离散特征的贝叶斯分类器,进行特征词选取,构建垃圾短信鑒别模型。通过垃圾短信训练数据集构建的中文垃圾短信贝叶斯分类模型,能够使垃圾短信的识别率保持在94%以上,具有较高的实用性。

关键词:贝叶斯分类器 中文垃圾短信 特征提取 特征选择 文本挖掘

中图分类号:TP393 文献标识码:A 文章编号:1672-3791(2017)02(b)-0010-04

1 文本预处理

由于短信文本是由非结构化的中文文字组成,因此在采用传统的贝叶斯分类器进行垃圾短信的识别之前,需要对垃圾短信进行文本预处理。

中文文本预处理的处理流程如图1所示。

1.1 文本特征提取

文本挖掘的关键就是将文字型非结构化数据转化为数值型结构化数据,为后续的贝叶斯分类器做准备。中文文本挖掘不同于英文文本单词与单词之间用空格分隔的情况,因此中文文本首先要进行分词处理(例如原文本:此类皮肤特别容易招惹粉刺、黑头等。分词处理后的文本:此类;皮肤;特别;容易;招惹;粉刺;、;黑头;等。分词处理之后,须对每份文本进行特征提取。即保留具有实际意义的词,去掉没有实际意义的虚词以及标点等停用词(Stop words)(例如上述文本特征提取后为:皮肤;招惹;粉刺;黑头)。对于分词处理和特征提取可采用经典的极速词典分词[1]:和TextRank关键词[2]提取,具体细节这里不再详细描述,而分词和特征提取可直接采用中科院开发的开源Java工具包:HanLP[3]。内部包含多种分词以及关键词提取算法,功能十分强大。如果训练集是在文件中,可以编写Java代码,通过 BufferedReader将文本一行一行读进Java环境中,然后调用HanLP里面的分词算法,最后将输出的结果保存在新的文件当中。如果训练集是在数据库中,则可通过JDBC导入,后续步骤同上。

1.2 文本的特征选择

虽然单独文本的词语数量通过特征提取降低了,但是对于整体的训练集来说其词语数量还是很庞大的。不适合后续的模型构建,所以在特征提取的基础上需要再进行特征选择,从而降低整体的词语数量。经过特征选择后的词语可以形成一个关键词集,得到的关键词集是为后续模型的构建做准备的。由于该文所做的是垃圾短信辨识,只需分辨垃圾短信和非垃圾短信两类数据即可,并且现实生活中垃圾短信占少数,多数为正常短信。所以我们把重心放在预处理垃圾短信上,目标是取得垃圾短信关键词集。

在预处理部分,采用HanLP进行分词以及特征提取,特征选择技术则采用信息检索领域非常著名的TF-IDF算法[4]。

TF-IDF算法的主要思想是评估一字词对于一个文件集或一个语料库中某一份文件的重要程度,如果某个词或短语在一份文件中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

一个词的权重为weigt(tj)=TF*IDF,某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重,高权重的词表明这个词可以很好地把这个文件识别出来。

在通过TF-IDF计算后,每一个特征词都有一个权重(weight),将所有特征词的权重进行排序(可以通过Java中的treeset数据结构[5]进行按值排序),然后设置一个阈值将权重低的特征词舍弃,保留权重高的特征词,从而形成关键词集。关键词的个数对于垃圾短信分类器的好坏有着至关重要的影响。

2 贝叶斯分类器构建

通过特征选择构建关键词集后,就可以实现中文垃圾短信的分类分析。

2.1 建立关键词概率

因为贝叶斯模型是基于概率计算来进行建模的。因此,要为每一个关键词建立分类概率[6]。该文采用如下公式(3)计算概率F:

(3)

式中b表示关键词在垃圾短信中出现的次数,g表示关键词在正常短信中出现的次数。nbad表示垃圾短信的数量,ngood表示正常短信的数量。2为一个经验系数。垃圾短信评估分类器好坏有两个重要指标:(1)虚警率:把非垃圾短信当成垃圾短信的概率 ,对应于统计学上的第一类错误。(2)误判率:把垃圾短信当成非垃圾短信的概率,对应于统计学上的第二类错误。

在实际生活中这两种错误的代价是不同的,很明显把正常短信判断为垃圾短信的代价远高于把垃圾短信判断为正常短信的代价。因此,分母g/ngood那一项乘以系数2是用来降低虚警率的。在实际辨识过程中可以不断调整系数以达到最佳效果。

2.2 文本转为特征向量(String to vector)

在建立辨识函数之前,须把训练文本转化为向量(String to vector)[7]。而所用到的工具就是经过TF-IDF计算并筛选得到的关键词集。假设有关键字集[a1,a2,a3……an],初始化向量v=[0,0,0,0…0](一共n个)。将训练集当中的一封垃圾短信与关键字集进行对比,如果关键字an出现在短信中,则对应向量v的位置设置为1,如果没有出现则保持为0。从而将一封文字型的短信转化为只有0或1的向量。将整个训练集全部按照上面所叙述的方法进行转化,从而将整个训练集样本都转化为向量。整个训练集可以视为一个巨大的含有0和1的矩阵。这有助于后续的模型贝叶斯分类器构建[8]。

2.3 建立垃圾短信鉴别函数(discriminant function)

关键词集可以用做训练用的特征属性,在上述文本转化的向量中,特征属性的取值为0或1。因为特征属性的取值是离散的,所以该文决定采用离散特征的贝叶斯分类器构建鉴别函[9]。

3 实验分析

3.1 实验数据来源

该文的实验选用的数据集来源于CCF全国青年大数据创新大赛中的数据集[10],其中包括垃圾短信32 000条,正常短信8 000条。该文按照目前手机用户中的大致短信比例抽样选取部分数据集来进行研究。数据分布如表1所示。

3.2 分类器的评价指标

评价指标采用分类任务中常用的混淆矩阵(confusion matrix)对分类结果进行评估。混淆矩阵如图2所示。

为了有效评估分类器过滤垃圾短信的性能,该文使用两个评价指标。

(1)准确率(Aaccuracy): 分类器对整个样本的判定能力,即将正的判定为正,负的判定为负:

A=(TP+TN)/(TP+FN+FP+TN)。

(2)虚警率(alse alarm probability):FPR=FP/(FP+TN),即正常短信被预测为垃圾短信的概率。准确率是对于过滤器的整体性能评估,而虚警率是减小非垃圾短信被分错的代价。因此,希望准确率越大越好,虚警率越小越好。

3.3 实验及结果分析

该实验所涉及到的文本向向量的转化以及贝叶斯分类器构造的鉴别函数全部通过MATLAB编写代码完成,所有的数值运算全部在MATLAB上运行。在实验中笔者比较所选取关键词的个数以及不同的阈值对于分类器准确率和虚警率的影响。实验结果如表2和表3所示。

由表2可知,当阈值为0选取的关键词数量增加时,准确率并不会一直增加,当超过某一最优值时,准确率会降低,虚警率在一直增加。原因是权重值weight较低的关键词被选进来,反而影响分类器分类的效果。同时,关键词数量不同時阈值也应该设为不同的值。从表3中可以发现,在一定的关键词数量下,可以通过改变阈值的大小达到最佳的准确率以及较小的虚警率。

4 结论

该文运用TF-IDF进行特征词选择,运用离散特征的贝叶斯分类器对垃圾短信进行过滤,形成了一个准确率在94%左右,虚警率低于4%的分类器。可以辨识出日常生活中绝大多数的垃圾短信。后续的工作要注意以下几点。

(1)试图改进贝叶斯算法,使其准确率能进一步提高,虚警率能够进一步降低。

(2)使用更为庞大的数据集,将文本挖掘与云计算整合,在云平台上进行模型构建与计算。

参考文献

[1] 黄翼彪.开源中文分词器的比较研究[D].郑州大学,2013.

[2] 张雯.TextRank算法的改进及在政法全文检索系统中的应用[D].广西大学,2015.

[3] 王宝成,何新宇.基于改进情感词域识别的舆情情感分析研究[J].电子技术与软件工程,2016(3):167.

[4] 陈琦,伍朝辉,姚芳,等.基于TF*IDF的垃圾邮件过滤特征选择改进算法[J].计算机应用研究,2009,26(6):2165-2167.

[5] 江磊晶.Java中的集合接口[J].中文信息,2003(5):83-86.

[6] 李星,田莹,段海新.中文垃圾邮件过滤系统的实现和评估[J].大连理工大学学报,2005,45(s1):189-195.

[7] 马强.基于布尔模型和扩展布尔模型的中文信息检索系统[D].辽宁科技大学,2012.

[8] 詹川,卢显良,周旭,等.基于贝叶斯公式的垃圾邮件过滤方法[J].计算机科学,2005,32(2):73-75.

[9] 王中锋.树型贝叶斯网络分类器鉴别式训练研究[D].北京交通大学,2011.

[10] WID,CCF大数据与智能大赛[EB/OL].http://www.wid.org.cn/data/science/player/competition.html?data=227#competitionData.

[11] 蒋璐媛,肖鹏峰,冯学智,等.基于亚分数混淆矩阵的中国典型区大尺度土地覆盖数据集评价[J].遥感技术与应用,2015,30(2):353-363.

猜你喜欢

特征选择文本挖掘特征提取
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
基于曲率局部二值模式的深度图像手势特征提取
数据挖掘技术在电站设备故障分析中的应用
基于智能优化算法选择特征的网络入侵检测
基于LDA模型的95598热点业务工单挖掘分析
从《远程教育》35年载文看远程教育研究趋势
故障诊断中的数据建模与特征选择
reliefF算法在数据发布隐私保护中的应用研究
一种多特征融合的中文微博评价对象提取方法
慧眼识璞玉,妙手炼浑金