一种基于深度学习算法的异常垃圾短信识别方法及系统与流程

文档序号:16782672发布日期:2019-02-01 19:15阅读:438来源:国知局
一种基于深度学习算法的异常垃圾短信识别方法及系统与流程

本发明涉及一种信息识别技术,尤其是涉及一种基于深度学习算法的异常垃圾短信识别方法及系统。



背景技术:

在互联网大数据时代,对于用户行为的实时性处理和分析更为重要。以短信文本处理为例,由于垃圾短信的泛滥,比如欺诈短信、广告推销、反动短信等,给用户带了很大危害,因此,需要运营商通过对短信内容的识别来过滤垃圾短信。而短信的及时性特点决定了对短信的处理和下发必须在较短的时间内完成,这样,无疑要求短信处理系统具有较高的实时性。让机器来处理我们人类的语言属于自然语言处理的范畴。nlp的经典任务之一是文本分类,也称为文档分类。这个任务旨在为文档分配一个预定义的标签。通常,这个过程涉及三个阶段,即文本表示、特征提取和标签分类。在第一阶段,是将无结构化的文本内容转化成结构化的特征向量形式。目前文本表示模型主要是gerardsalton和mcgill于1969年提出的向量空间模。在第二阶段要进行特征提取,选取最具有区分性和表达能力的特征建立特征空间,实现特征空间降维;或者,进行特征转换(featuretransformation),将高维特征向量映射到低维向量空间。特征选择、提取或转换是构建有效文本特征向量的关键问题。这些特征向量在第三阶段可以最大限度地提高任务的准确性。

针对文本分类问题,从上个世纪开始,就不断有研究人员提出基于机器学习,统计学等多个学科的文本分类模型。比如说朴素贝叶斯分类算法,决策分类树算法,感知机,支持向量机分类算法,knn算法等。

但不同于普通的文本分类问题,本发明要对“异常”垃圾短信进行分类。这一类的短信有以下几个特点:1、短信的字数常常很少,会导致特征信息共现不足;2、因为手机运营商会过滤一部分垃圾短信,所以我们能够接触到的真实的垃圾短信的数量不多;3、为了逃过现有的垃圾短信分类器的识别,垃圾短信的发送者常常将一些敏感词汇使用一些近音词或者是形近词进行替换,比如用“薇信”替换“微信”,“开发酉示”替换“开发票”等。以上这些特点,使得传统的垃圾短信过滤器不能正确的识别对于这一类短信。

近年来,文本分类模型研究层出不穷,特别是随着深度学习的发展,越来越多的研究者开始将深度神经网络的相关技术应用到自然语言处理领域中来。深度神经网络模型能够通过多层网络,不断组合低层文本信息,形成更加抽象的高层文本表示,从而提高模型的准确性。比如卷积神经网络(cnn)具有优异的特征自抽取能力,能够显著降低文本分类中人工抽取特征的难度。而基于神经网络模型的单词嵌入(wordembedding)技术则为短文本进行语义化向量表示提供了新的思路。针对中文短文本同音词、拼写错误多的语言现象,以及特征信息共现不足与人工抽取特征困难的问题,基于神经网络的深度学习可以很好的进行特征学习。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于深度学习算法的异常垃圾短信识别方法及系统。

本发明的目的可以通过以下技术方案来实现:

一种基于深度学习算法的异常垃圾短信识别方法,包括:

步骤s1:基于预配置的符号库去除短信文本中的干扰符号;

步骤s2:将去除了干扰符号的短信文本进行文字转拼音,得到对应的拼音文本;

步骤s3:将步骤s2中得到的拼音文本和短信文本同时作为卷积神经网络的输入进行识别以判断是否为垃圾短信。

所述步骤s1具体为:识别短信文本中存在被收录入符号库中的干扰符号,并去除识别得到的干扰符号。

所述干扰符号为与语义无关联的标点和特殊字符。

所述步骤s3具体包括:

步骤s31:将步骤s2中得到的拼音文本和短信文本分别作为卷积神经网络的输入,得到两个卷积层的特征向量;

步骤s32:将两个卷积层的特征向量分别进行池化操作,得到两个池化层的特征向量;

步骤s33:将两个池化层的特征向量拼接后作为该短信的结构化文本表示;

步骤s34:基于该短信的结构化文本判断是否为垃圾短信。

所述步骤s34具体为:采用异常检测分类器对基于该短信的结构化文本进行异常检测,并将检测结果为异常的短信作为垃圾短信。

所述异常检测分类器的训练过程的样本分类不均,进行过采样过程平衡样本。

所述过采样过程包括:

步骤s51:任意选定一个少数类的样本集中的样本;

步骤s52:从少数类的样本集中提取选定样本的多个近邻;

步骤s53:从提取的近邻样本中随机选择一个样本,与选定样本进行合成得到一个新样本:

xi1=xi+ζ1·(xi(nn)-xi)

其中:xi1为合成得到的新样本,xi为选定样本,xi(nn)为从提取的近邻样本中随机选择得到的样本,ζ1为0~1之间的随机数;

步骤s54:重复步骤s43设定次数后,从原始少数类的样本集中选定一个新样本,并重复步骤s42。

所述方法还包括:

步骤s4:计算识别结果的准确率、正确率、召回率和综合评分进行评价,其中所述综合评分为:

f1score=p*r/2(p+r)

其中:f1score为综合评分,p为正确率,r为召回率。

一种用于实现所述的基于深度学习算法的异常垃圾短信识别方法的系统,其特征在于,包括:

文本预处理模块(1),用于对短信文本进行预处理,去除其中的干扰符号;

汉字转拼音模块(2),与文本预处理模块(1)连接,用于将经过文本预处理模块(1)处理后的短信文本转化为拼音;

文本表示模块(3),分别与文本预处理模块(1)和汉字转拼音模块(2)连接,基于经过文本预处理模块(1)处理后的短信文本以及对应的拼音形式得到短信文本的结构化文本表示;

异常检测模块(4),与文本表示模块(3)连接,基于短信的结构化文本判断是否为垃圾短信。

所述系统还包括累不平衡问题处理模块,用于对训练器训练用样本的少数类的样本进行过采样处理。

与现有技术相比,本发明具有以下有益效果:

1)先对短信文本进行预处理,然后将拼音和文字同时作为识别的依据,可以大大提高识别的效率和精确度。

2)将词嵌入与卷积神经网络结合的方法用于短文本分类问题,可以解决短文本特征信息共现不足与人工抽取特征困难的问题。

3)对变异短文本进行规范化,将变异短文本进行转化,去掉所有可能对检测结果产生影响的干扰信,使得产生的结果可以直接对其进行分析。

附图说明

图1为本发明方法的主要步骤流程示意图;

图2为本发明系统的结构示意图;

图3为文本结构化处理部分的整体逻辑框图;

图4为词向量生成模型示意图;

图5为识别结果的工作特征曲线示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

一种基于深度学习算法的异常垃圾短信识别方法,为了解决短文本特征信息共现不足与人工抽取特征困难的问题,本发明拟将词嵌入与卷积神经网络结合的方法用于短文本分类问题。考虑到实际中文短文本中噪声大、拼写错误和同音词多的特征,拟采用一种拼音和字结合的双输入卷积神经网络模型。

本发明先对变异短文本进行规范化,拟将变异短文本进行转化,去掉所有可能对检测结果产生影响的干扰信息。使得产生的结果可以直接对其进行分析。具体说来:本发明首先应该清除所有的干扰字符,这里干扰字符包括诸如标点、特殊字符等,比如*,&,^_^,因为这些字符对于短文本来说没有什么实际意义,而且还会造成对文本表示的干扰。所以第一步将它们都去掉。然后,由于变异短文本的特点,经常会出现一些同音异形的字,而且还可能会有用拼音来代替汉字的情况,所以针对这两种情况,我们采用的方法就是,将所有的汉字都转化为拼音串。对于一字多音的情况,我们使用了概率最大的那个拼音。这样就解决了同音字问题和拼音替换的问题。

对中文句子进行分词,然后使用词嵌入(wordembedding)得到词语的向量表示。目前流行的是采用google的word2vec模型,训练得到词向量。具体来讲,它是使用神经网络模型得到一种名为词嵌入或词向量的新型向量表示,这种向量是一种低维、稠密、连续的向量表示,同时包含了词的语义以及语法信息。它反映出语义空间中的线性关系,向量的不同部分对应着不同的语义。同时,相似的单词也会映射到相似的方向,例如:

v(‘猫’)≈v(‘狗’)

它相比于传统的方法有以下几个优点:

a.纬度低,连续向量,方便机器学习模型处理;

b.无监督学习,容易获得大量的语料;

c.有天然的聚类后的效果;

d.一个向量可以编码一词多义;

e.罕见词也可以学到不错的表示。

除了使用word2vec得到词向量,还有训练得到字向量的做法。对应我们这个实际问题,考虑到使用近音词替换以后的短信,在用现有的中文分词系统不能将这些词正确分割。所以本发明拟用字向量来表征短信。

考虑到我们能够采集到的垃圾短信语料库数量少。本发明拟采取一些方法,人为地制造扩充语料。还有就是采用一些样本处理方法,比如,过采样,欠采样等来解决这一问题。

具体的,如图1所示,所述包括:

步骤s1:基于预配置的符号库去除短信文本中的干扰符号,具体为:识别短信文本中存在被收录入符号库中的干扰符号,并去除识别得到的干扰符号,其中,干扰符号为与语义无关联的标点和特殊字符。

步骤s2:将去除了干扰符号的短信文本进行文字转拼音,得到对应的拼音文本;

步骤s3:将步骤s2中得到的拼音文本和短信文本同时作为卷积神经网络的输入进行识别以判断是否为垃圾短信,具体包括:

步骤s31:将步骤s2中得到的拼音文本和短信文本分别作为卷积神经网络的输入,得到两个卷积层的特征向量;

步骤s32:将两个卷积层的特征向量分别进行池化操作,得到两个池化层的特征向量;

步骤s33:将两个池化层的特征向量拼接后作为该短信的结构化文本表示;

步骤s34:基于该短信的结构化文本判断是否为垃圾短信。

步骤s34具体为:采用异常检测分类器对基于该短信的结构化文本进行异常检测,并将检测结果为异常的短信作为垃圾短信。

异常检测分类器的训练过程的样本分类不均,进行过采样过程平衡样本,

过采样过程包括:

设训练集的一个少数类的样本数为t,那么smote算法将为这个少数类合成nt个新样本。这里要求n必须是正整数,如果给定的n<1那么算法将“认为”少数类的样本数t=nt,并将强制n=1。

考虑该少数类的一个样本i,其特征向量为xi,i∈{1,...,t}:

步骤s51:任意选定一个少数类的样本集中的样本;

步骤s52:从少数类的样本集中提取选定样本的多个近邻(例如用欧氏距离),记为xi(near),near∈{1,...,k};

步骤s53:从提取的近邻样本中随机选择一个样本,与选定样本进行合成得到一个新样本:

xi1=xi+ζ1·(xi(nn)-xi)

其中:xi1为合成得到的新样本,xi为选定样本,xi(nn)为从提取的近邻样本中随机选择得到的样本,ζ1为0~1之间的随机数;

那么,对全部的t个少数类样本进行上述操作,便可为该少数类合成nt个新样本。如果样本的特征维数是2维,那么每个样本都可以用二维平面上的一个点来表示。smote算法所合成出的一个新样本xi1相当于是表示样本xi的点和表示样本xi(nn)的点之间所连线段上的一个点。所以说该算法是基于“插值”来合成新样本。识别结果的工作特征曲线如图5所示。

步骤s54:重复步骤s43设定次数后,从原始少数类的样本集中选定一个新样本,并重复步骤s42。

此外,方法还包括:

步骤s4:计算识别结果的准确率、正确率、召回率和综合评分进行评价,其中综合评分为:

f1score=p*r/2(p+r)

其中:f1score为综合评分,p为正确率,r为召回率。

具体的,对于一句话,评价它是否是垃圾消息的标准每一个人都有各自的看法。而且常常需要结合当时的语境。所以,为了让结果更有说服力,本发明选取的语料应该尽可能的避免一些模糊语句。这样也有利于最后模型的评价。

对于本发明提出的分类算法,本发明提出面向垃圾短信分类的评价指标,使用该评价指标对模型所得到的测试结果进行分析,提出面向垃圾短信分类的评价指标,包括准确率accuracy、正确率precision、召回率recall以及f1score,如表1所示。

表1

其中tp为真实类别为1(垃圾短信)并且预测为1的样本数目,fp为真实类别为0而预测为1的样本数目,fn为真实类别为1而预测为0的样本数目;

precision=tp/(tp+fp)

recall=tp/(tp+fn)

accuracy=(tp+tn)/(tp+fp+tn+fn)

f1score=p*r/2(p+r)

对应的,如图2和图3所示,实现的基于深度学习算法的异常垃圾短信识别方法的系统包括:

文本预处理模块1,用于对短信文本进行预处理,去除其中的干扰符号,主要是因为收集到的文本多是网络上的评论以及一些日常对话,相对于主流的文本语料,呈现口语化,不规范。所以首先需要对我们的数据进行规范化。文本预处理模块拟将变异短文本进行一些清洗,去掉所有可能对检测结果产生影响的干扰信息,如标点、特殊字符等。得到的结果可以直接对其进行分析。

汉字转拼音模块2,与文本预处理模块1连接,用于将经过文本预处理模块1处理后的短信文本转化为拼音,主要是为了消除近音词的影响,考虑到中文汉字的近音词的拼音是一样的,所以本发明拟考虑将汉字统一转化为拼音,然后将拼音和汉字分别输入文本表示模块,得到向量。

文本表示模块3,分别与文本预处理模块1和汉字转拼音模块2连接,基于经过文本预处理模块1处理后的短信文本以及对应的拼音形式得到短信文本的结构化文本表示,因为对于人类的自然语言,计算机是无法理解的。所以本发明把文字转化为计算机可以理解的形式,即文本向量化。文本向量化可以分为词语的向量表达,短文本的向量表达,长文本的向量表达,不同的情景需要用到不同的方法和处理方式。常见的思路有向量空间模型(vsm)和文本的分布式表示(distributedrepresentation)。其中lsa/lsi方法,以及word2vec/doc2vec方法应该都属于分布式表示。本发明采用word2vec对预处理以后的文本进行向量化。因为现有的词向量只有针对中文汉字和英文的,没有针对拼音的向量。所以本发明利用神经网络训练了一份拼音向量。本发明利用skip-gram模型预训练词向量,如示意图4。将得到的字向量和拼音向量作为卷积神经网络的输入。经过卷积神经网络的卷积层,可以得到低维度的特征,作为文本的表示。卷积操作之后,分别对两个卷积层特征向量进行池化操作,得到两个池化层特征向量;最后将两个池化层的特征向量拼接起来作为该垃圾短信的文本表示;

异常检测模块4,与文本表示模块3连接,基于短信的结构化文本判断是否为垃圾短信,这一模块的任务主要是利用深度学习模型得到的特征来检测异常文本。目前异常检测的方法有很多,包括ellipticenvelope,孤立森林(isolationforest),局部异常因子算法(lof)。

系统还包括累不平衡问题处理模块,用于对训练器训练用样本的少数类的样本进行过采样处理,类不平衡(class-imbalance)是指在训练分类器中所使用的训练集的类别分布不均。比如说一个二分类问题,1000个训练样本,比较理想的情况是正类、负类样本的数量相差不多;而如果正类样本有995个、负类样本仅5个,就意味着存在类不平衡。多于类不平衡问题,有几种解决方案:

1、调整值

根据训练集的正负样本比例,调整θ值。这样做的依据是上面所述的对训练集的假设。但在给定任务中,这个假设是否成立,还有待讨论。

2、过采样

对训练集里面样本数量较少的类别(少数类)进行过采样,合成新的样本来缓解类不平衡。本发明将介绍一种经典的过采样算法:smote。

3、欠采样

对训练集里面样本数量较多的类别(多数类)进行欠采样,抛弃一些样本来缓解类不平衡。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1