基于深度学习的互联网非结构化敏感数据分类思路剖析
星期四, 六月 3, 2021
文本分类识别是自然语言处理中一个经典问题,其目的是将标签或标记分配给文本单元(包括句子、段落、文档),即识别文本单元的类型。它的应用范围很广,可用于垃圾邮件检测、新闻分类、内容审核等等。细化到数据安全领域,可以用于敏感文件的检测,比如:合同文件、电子邮件、简历等。但是由于文本数据来源的广泛性和数据非结构化的性质,文本分类识别任务也是一项非常具有挑战性和耗时的任务。本篇文章将介绍思维世纪在敏感文件分类识别过程中所作的尝试和取得的一些成果。
为什么要采用的是深度学习的方法来做文本分类识别,传统的方法就不行吗?我们首先简单地介绍下使用传统方法存在的问题。
使用传统的方法构造特征工程,然后将特征送入浅层机器学习模型,最终得出分类结果。流程图如下:
特征工程在机器学习项目中是最耗时的部分,但是又非常重要。数据和特征决定了机器学习的上限,而模型和算法只是去尽量逼近这个上限而已。有时候,我们花了大量时间去调节模型参数,最终仅仅只是将模型的精度提升了1%;反而,如果提取出了一个有用的特征,那么可能直接将模型的精度提升5%。
对于中文文本处理任务,文本预处理的工作主要包括文本分词和去停用词两个阶段。分词的目的是为了后续将词语映射为词向量,而中文分词不同于英文有天然的空格间隔,如果想要获取很好的分词效果还需要设计非常复杂的分词算法。由于分词算法不是本篇文章的重点,所以在这里就不做阐述了。另外,去停用词就是过滤掉文本中那些没有实际意义的代词、连词、介词或者是特定情境下没有意义的词语。
例如:将”成都思维世纪科技有限责任公司成立于2001年,是国内数据安全、内容安全、安全服务的先导企业。”这句话经过文本分词和去停止词之后的结果如下:
[‘成都’, ‘思维’, ‘世纪’, ‘科技’, ‘有限责任’, ‘公司’, ‘成立’, ‘2001’, ‘年’, ‘国内’, ‘数据’, ‘安全’, ‘内容’, ‘安全’, ‘安全’, ‘服务’, ‘先导’, ‘企业’]
传统的特征提取方式主要有TfidfVectorizer和CountVectorizer等。
特征提取好之后,就需要将其喂入分类器。
我们尝试过使用一些比较经典的机器学习算法,比如:LR、SVM等,也尝试过很多次的参数调节,最终的识别效果都不是很好,那么问题就出现在特征提取环节了。经过分析,根据上面的特征提取方式,有以下几个缺陷:
传统的机器学习算法的优势在于处理结构化数据,并且过程是可解释的。在通信行业,思维世纪已经成功地将一些传统的机器学习算法运用在了异常流量检测、异常IP检测等业务场景中,并且取得了很好的效果。
如果是要处理非结构化的数据,深度学习则更具有优势。接下来,我们将介绍思维世纪使用深度学习算法在敏感文件分类识别中的应用。
首先,当然是先要准备好需要识别文档的训练数据和测试数据。这部分工作很繁杂,且很痛苦,这里就不详细展开。
文本表示,即将中文词语转化为计算机可以理解格式,我们使用的是文本的分布式表示,即词向量(word embedding)。
所谓word embedding,就是将不同的词语映射为对应的向量。比如,对于“成都思维世纪”这句话,通过word embedding得到的结果:“成都”对应的向量为[0.1,0.2,0.3],“思维”对应的向量为[0.2,0.9,0.7],“世纪”对应的向量为[0.4,0.5,0.2](这里的数值只是用来举例)。
在解决了文本表示的问题后,接下来就是提取特征了。前面已经提到,深度学习基于传统方法的优势之一就是能够自动进行特征提取,然后基于特征自动进行分类。下面会介绍一些经典的分类模型,以及思维世纪所选择的分类模型。
1、FastText
使用FastText实现文本分类的思路及其简单,其流程图如下:
从上图可以看出,Fasttext最大的特点是模型简单,只有一层的隐层以及输出层。其原理就是把文档中所有的词向量进行平均,然后直接接输出层,输出文本的类别。
2、TextCNN
上面FastText模型是完全没有考虑词语前后的序列关系的,直接是对所有的词向量求平均,而CNN(卷积神经网络)模型就不一样了。虽然CNN网络最初是在图像领域取得巨大成功(思维世纪已经成功地将基于CNN的深度学习算法应用在敏感图片识别的业务场景中,且有很高的识别精度),但其核心就是可以捕捉局部相关性,因此,也可将CNN用来处理文本分类任务,获取上下文词语之间的局部特征。其核心原理图如下:
3、TextRNN
尽管TextCNN能够在很多任务里面能有不错的表现,但是CNN适合短句子文本,无法构建更长的序列模型,即无法处理更长的文本内容。而在自然语言处理中,更常用的还是递归神经网络(RNN)。在具体的文本分类任务中,常用的是RNN的变种,即LSTM。LSTM的优势是可以记住序列中重要的信息,遗忘那些不重要的信息。
思维世纪实现敏感文件分类识别的网络结构图如下:
训练阶段
将得到的最大的那个概率值所对应类别同标签值进行对比(即得到的类别是不是就是该篇文档应该所属的类别),求损失值。然后反复迭代计算,更新模型的参数,直到最后的损失值降到最低或者基本不再变化为止。
识别阶段
将待识别的文档传入模型,模型输出文档类别。
思维世纪就是采取基于RNN的深度学习算法来识别非结构化敏感文件类别,目前已经取得较大进展,并逐步在产品中开始应用。
4、BERT
作为word2vec的替代者,BERT将NLP领域中的多项任务的精度大幅提升,可以说是近年来自残差网络以后最具有突破性的一项技术了。其特点如下:
更通俗地来讲,BERT可以得到比word2vec(词向量)更好的表征。即,训练出来的词向量能更好地代表该词。
在实际的自然语言处理任务中,我们可以直接使用BERT的特征表示作为词语的嵌入特征,然后根据下游任务进行特征微调就可以运用到我们下游的任务中了。其好处在于,即使我们下游任务的数据量很好,那么基于BERT的特征再次进行训练,也会达到非常高的精度,大大降低了模型的训练难度和训练时间。以中文文本分类为例,即使训练数据集不够,那么也可以基于预训练好的BERT模型,再次对我们的数据集进行训练,最后,也能得到非常好的分类效果。
模型架构如下图:
模型输入:从上图可以看出,模型的输入是一个一个的字,然后会将字转换为字向量。这里的字向量可以随机初始化,也可以是用word2ver算法预训练好的字向量。此外,模型的输入除了字向量外,还包含另外两个部分:
最后,BERT模型将字向量、文本向量和位置向量的加和作为模型输入。
模型输出:文本中各个字/词融合了全文语义信息后的向量表示
对于不同的下游任务,以命名实体识别为例,模型的输入和对模型输出的利用也有差异。模型的输入会在文本前插入一个”[CLS]”符号,模型输出的是该字符所属的实体类别。模型结构如下:
经过实验发现,相比较于LSTM等其他模型,基于BERT的命名实体识别精度大幅提高。在对非结构化文本中的敏感元素识别时,我们也采取了基于BERT模型的深度学习算法。
对比上面的4个模型:CNN、RNN、FastText和BERT,其各有优势。CNN对于特征提取比较明显;RNN对于字词的关联性比较好,且适用于长文本;FastText相对于前面两个模型最大的优势是性能好,速度快;而BERT模型是将预训练模型和下游任务模型结合在一起的,其优势在于下游任务不需要很多的训练数据就能训练一个精度非常高的模型,能更好地做迁移学习。
模型选择:对于自然语言处理任务而言,好的模型的确是能够得到很好的效果。但是,在一些简单的中文分类应用中,使用一些简单的模型就能够达到很好的效果了,有时使用复杂的模型,效果也不会提升多少。比如,对于文档级别的文本分类任务而言,就不适合使用BERT模型。因为BERT模型有最大输入长度的限制,适合句子和段落级别的任务。
业务理解:虽然深度学习有一个很大的优势就是不需要繁琐的人工特征工程,但还是要先对业务数据有足够的理解,要明白你的数据是否适合该模型,以及在出现模型精度不高的情况下是否同数据有关系。
参数调节:写深度学习模型不难,难的是怎么得到高精度的模型。要想获得高精度模型,参数调节就是一项非常重要的工作了。
在自然语言处理领域,每年新出的学术paper有很多,其更多的是对模型设计的优化和创新,更重要的是提出新的思路;而在实际的业务场景中,则更多地是关注模型是否能落地。因此,不能一味地追求前沿技术,而忽略业务本身。
成都思维世纪科技有限责任公司,成立于2001年,总部设于成都,在北京、云南、贵州、西藏等地均设有分支机构和科研部门。公司致力于大数据时代背景下行业信息安全保障解决方案的提供和数据内容分析挖掘产品的设计和开发,形成了业务安全审计、互联网内容审计、安全咨询服务等三大类产品线,为运营商、能源、教育、医疗、电商等各行业客户提供高价值服务。