查看原文
其他

中孚智库观察 | 机器学习的文本分类分级方法,干货全在这里了!

中孚信息
2024-11-09

随着数字经济的快速发展,数据已经渗透到当今每一个行业和业务职能领域,成为重要的生产要素。各个组织在数字化转型过程中都积累了大量的数据,据国际数据公司IDC报告显示,全球2020年数据信息总产量达到44ZB(1ZB=十亿TB=1万亿GB),预计2025年增长到175ZB,其中非结构化数据占比超过80%。

每个组织都在寻求保护及利用自己数据的方法,根据GB/T37988-2019《信息安全技术 数据安全能力成熟度模型》,按照数据在组织机构业务中的流转过程,数据生命周期可被定义为6个阶段,包括数据采集、数据存储、数据存储、数据处理、数据交换以及数据销毁。同时每个数据生命周期又定义了若干关键过程域用于数据安全保护,而数据分类分级是首要的关键过程域。

海量数据资产中,非结构化数据中文档数据以其数量众多、内容抽象、信息量大、特征难以定义等特点成为数据治理过程中的重点和难点工作,对组织海量数据安全起着重要的影响作用。为推动数据安全治理工作的有效开展,本文重点探索非结构化文档数据分类分级解决方案,以及文本文档分类分级中使用的关键技术。

1、什么是数据分类分级

目前还没有官方的、权威的数据分类分级定义。根据数据分类与分级业务需求的不同可以分别对其进行理解:

  • 数据分类

数据的分类更多是从业务角度出发,组织需要根据自己的业务需求把数据归为不同的类别,就是分类。数据分类一般都会有多维度、多层次的需求:多维度是指数据可以按照来源、用途归为不同的分类,这样就需要在数据上打上不同的分类标签;多层次指的是数据按照大类、小类逐层分解成更细的类别,符合人们对数据梳理的习惯,比如金融行业标准(JR/T 0197—2020)会先把数据分为业务、经营管理、监管等一级类别,然后对业务数据继续分解为账户信息、法定数字货币钱包信息、合约协议、金融监管和服务、交易信息等类别,然后对每个二级类别继续分解,最终分解到4级小类类别。

  •  数据分级

数据的分级更多的是从监管和数据保护的角度出发,按照数据泄露或者破坏后所受影响的对象,以及被影响对象所受的危害程度对数据进行分级管理。

根据GB/T 22240-2020《信息技术安全 网络安全等级保护定级指南》,数据资源可独立定级。当安全责任主题相同时,大数据、大数据平台/系统宜作为整体对象定级;当安全责任主体不同时,大数据应独立定级。因此按照等保要求,主要是根据安全责任主体决定数据资源是否要单独定级,也可以根据自己需要独立定级。比如金融系统就按照影响对象和影响程度两个维度制定了定级原则:

最低安全级别参考

数据定级要素

影响对象

影响程度

5

国家安全

严重损害/一般损害/轻微损害

5

公众权益

严重损害

4

公众权益

一般损害

4

个人隐私/企业合法权益

严重损害

3

公众权益

轻微损害

3

个人隐私/企业合法权益

一般损害

2

个人隐私/企业合法权益

轻微损害

1

国家安全/公众权益/个人隐私/企业合法权益

无损害

当前的数据分类分级一般按照先分类再分级的顺序进行,将分级融入到分类之中,这样会把业务分类按照不同的级别再分解成多个类别,最终导致分类很多。还有一种方式是将分级看着特殊维度的分类,将业务维度和保护维度分别进行分类。这种方案可以减少分类的数量。

2、当前文本分类分级面临的主要问题和挑战

产业数字化进程的不断深入,各企业和组织逐渐沉淀了大量的数据。为了保护自己的数据资产,以及利用数据资产为自己的业务服务,数据从简单的人工定密过度到用计算机进行辅助定密,从单一的按照敏感程度进行分级保护逐渐过渡到按照内容和敏感程度综合进行分类分级。在用计算机进行分类分级的过程中,当前面临的主要问题和挑战包括:

  • 分类分级的准确性

传统的按照关键词、正则表达式等规则方法进行文本分类分级的准确性已经不能满足实际的需求。人类的语言千变万化,微小的差异都可能导致语义完全相反。因此简单使用关键词等规则方法会导致分类分级的准确率很低,需要大量的人工确认。随着机器学习算法的不断进步,当前所有的安全厂商都已经在使用机器学习的方法进行分类分级,人工智能已经成为各个厂家文本分类分级相关产品的标配。

  • 文档数据缺乏分类分级标准

当前还处于等保3.0实施的初期,因此建立全面完善的分类分级标准的企业还不多。这就要求各厂商对客户的业务有足够的了解,提供通用的聚类工具,和客户一起建立起分类分级的标准体系。并在产品设计时有足够的灵活性,以便客户随时可能的分类分级方式的变更。

  • 缺乏大量标注文本语料进行机器学习模型训练

很多情况下客户根据自己的业务需要有明确的分类分级要求,但是因为先有文档,后有标准,所以文档都没有经过人工的标注。此时需要我们提供聚类工具,可以根据用户的分类要求自动将文本聚类到各个类别中。

  • 基于文本聚类的无监督机器学习方法很难满足用户的分类需求

文本聚类方法普遍是选取文档重要特征进行聚类,选取特征过程中会忽略长尾的其他特征,因此在准确性上比较难赶上有监督的分类方法,特别是随着深度机器学习算法的发展。比较合理的方法是先使用部分文档进行无监督聚类,聚类过程中利用用户的确认信息作为先验知识,使用半监督聚类算法逐步使聚类结果达到用户的要求。然后将聚类结果用作有监督机器学习的样本进行训练,将训练模型用于剩余的文档以及新产生的文档。

  •  通用算法如何应用于特定行业

不同行业和领域的文档数据涉及特定的领域词汇和主题信息,通用的分类分级算法无法达到理想的准确度。这就需要预先收集每个行业的大量语料信息,构建各行业的领域词库以及主题信息,并使用行业语料进行预训练,然后再应用于行业的分类分级中。

3、文本分类分级方法

少量的文本数据可以通过人工的方式进行分类分级,但是随着产业数字化进程的不断深入,各企业和组织逐渐沉淀了大量的数据,同时大量数据并没有遵循数据分类分级的标准。进行数据治理过程中,这些海量的文本数据都依赖人工分类分级几乎无法实现。为了解决这一问题,大量科学家以及从业者们开始探索通过机器学习算法进行文档的自动分类。这些算法主要可以分为两类,分别是有监督学习算法(又称分类算法)和无监督学习算法(又称聚类算法),其应用场景如下:

  • 分类算法应用场景

如果客户已经有了自己的分类标准并且已经手动标注了一批文档,那么采用有监督学习算法进行分类是比较好的办法。

  • 聚类算法应用场景

在很多场景下,客户并没有标注好的文档,甚至连分类标准都没有,那么采用无监督学习进行分类并标注类别,然后再通过有监督学习对新的文档进行分类是较为理想的办法。在聚类过程中有时可以根据用户提供的先验知识帮助更好的进行聚类,这种场景下又出现了半监督聚类。

3.1

机器学习之分类算法

有监督的文本分类算法可以分为浅层机器学习和深层机器学习两类。在2010年之前,基于浅层学习的文本分类模型占主导地位,这些浅层学习算法大都是基于统计理论的建模,例如朴素贝叶斯(NB),K近邻(KNN)和支持向量机(SVM)等。

与早期的基于规则的方法相比,该方法在准确性和稳定性方面具有明显的优势。但是,这些方法通常需要通过人工方法获得良好的样本特征,这既耗时又昂贵。此外,它们通常会忽略文本数据中的自然顺序结构或上下文信息,这使学习单词的语义信息变得困难。

2010年之后,文本分类已逐渐从浅层学习模型转向为深层学习模型(DNN)。与基于浅层学习的方法相比,深层学习方法避免了人工设计规则和功能,并自动为文本挖掘提供了语义上有意义的表示形式。因此,目前大多数文本分类研究工作都基于深层学习模型,DNN是数据驱动的方法,具有很高的计算复杂性。以下是文本分类方法示意图:

一般来讲,文本分类前都需要进行文本分词、语义标注、删除停用词等预处理工作。如果是浅层机器学习,需要人工进行特征抽取,通常使用IF-IDF、BoW等方法进行词向量化并抽取特征,然后再使用分类方法进行分类。深层机器学习避免了人工抽取特征的过程,而是由模型自己学习特征然后进行分类。模型参数学习后都需要进行评价,通常会把样本分为训练样本和测试样本,由测试样本来评估模型的好坏。评估指标包括准确率、召回率、F1(准确率和召回率的综合值)、ROC、AUC等。

3.1.1

浅层机器学习

常用的浅层机器学习算法包括朴素贝叶斯(NB)、K近邻分类(KNN)、决策树(DT)、支持向量机(SVM)等,下面简单介绍各种算法的原理。

(1)朴素贝叶斯(NB)

朴素贝叶斯(Naïve Bayes)是一种最简单的概率模型。它基于如下假设:文本中的特征是相互独立的。根据贝叶斯方法,对于给定的文本Dj和类别集合C={C1, C2, … , Cm}, 文本Dj属于类别Ci的概率可由下列公式给出:

对给定的文本Dj进行分类,也就是计算出文本Dj属于每个类别的概率,选取概率最大的作为文本Dj的最终类别。训练及判决过程如下:

(2)K近邻分类(KNN)

KNN算法的核心思想比较简单,判别一个未知数据的类时,选出与该数据最近的k个已知分类的数据,然后统计这k个数据的分类,按照最多或者平均距离最近的分类作为未知数据的分类。如下图中红色的点,因为邻近的4个点有3个点属于同一个分类,则该点也归入这3个点所属的分类。

(3)决策树(DT)

决策树算法的核心思想就是创建一颗二叉树,每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。决策树的关键点就在于每次如何选择某个特征,一般的原则就是将数据分成两堆后各堆数据越“纯”越好,常用Gini系数、熵来表示数据的“纯”度。下面是区分瓜好坏的决策树例子:

(4)支持向量机(SVM)

支持向量机(SVM,Support Vector Machine)是一种优秀的文本分类方法,可用来解决二分类问题,它的目标是寻找一个最大间隔超平面,将不同类别的训练数据分隔开。

空间中存在多个超平面可以将训练数据按类别划分开,为了保证分类器的泛化性能,SVM分类器选取具有最大间隔的超平面作为分类边间,于是,SVM分类器也叫做最大间隔分类器。SVM分类器是用来处理二分类问题的,可以通过一些策略将其推广到多分类问题。


3.1.2

浅层机器学习

深层学习模型(DNN)由人工神经网络组成,该人工神经网络模拟人脑以自动从数据中学习高级功能。深度学习由神经网络中的多个隐藏层组成,具有更高的复杂度,并且可以在非结构化数据上进行训练。深度学习架构可以直接从输入中学习特征表示,而无需太多的人工干预和先验知识。实践证明,深度学习模型在文本分类方面比浅层模型的分类准确性更高。深度学习模型无一例外都在捕捉词语间的上下文关系以更好的理解文本含义,代表性的包括TextCNN、TextRNN以及BERT语言模型。

(1)TextCNN

TextCNN是将卷积神经网络CNN应用到文本分类任务,利用多个不同大小的卷积核来提取句子中的关键信息,从而能够更好地捕捉局部相关性,实现文本的分类。

此类算法首先使用不同大小的卷积核对文本进行特征抽取,再使用最大值采样出每个特征的关键信息,然后将关键信息全连接起来作为输入文本的特征,再使用softmax函数进行分类。

(2)TextRNN

由于卷积核的大小不能任意变化,都是作为超参数设置的,因此TextCNN对于长文本的特征捕捉并不好,而循环神经网络RNN可以捕捉任意长度的文本上下文关系,因此在文本分类中也常使用TextRNN模型。

这里的LSTM是RNN的一个变种,在RNN模型的基础上增加了长短时记忆的能力。一般取前向/反向LSTM在最后一个时间步长上隐藏状态进行拼接,再经过一个softmax层进行一个多分类;或者取前向/反向LSTM在每一个时间步长上的隐藏状态,对每一个时间步长上的两个隐藏状态进行拼接,然后对所有时间步长上拼接后的隐藏状态取均值,再经过一个softmax层进行一个多分类。

(3)BERT

2018年可以生成上下文词向量的来自变压器的双向编码器表示(BERT)的出现,是文本分类和其他NLP技术发展的重要转折点。BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩,甚至超越人类的判断能力。许多研究人员已经研究了基于BERT的文本分类模型,该模型在包括文本分类在内的多个NLP任务中比上述模型具有更好的性能。BERT模型解决了TextRNN模型不能并发计算的缺陷,因此可以进行超大规模的语料训练,同时增加了自注意力机制,可以捕捉文本中的词语相互关系的紧密程度。

以上是BERT模型全貌,相对还是比较复杂的。关键点包括:使用位置嵌入方式,将位置信息编码到词向量中,以支持并行计算;Segment Embedings用于将句子的上下句关系进行编码,BERT训练时会通过上句预测下一句;通过自注意力机制,能够学习句子中各词语的相互关系,而多头自注意力可以学习词语间不同维度的相互关系。

3.2

机器学习之聚类算法

无监督学习的分类算法又叫聚类算法,将物理或抽象对象的集合分成由类似对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的聚类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。(参考百度百科聚类解释。)

文本聚类(Text clustering)文档聚类主要是依据著名的聚类假设:同类的文档相似度较大,而不同类的文档相似度较小。作为一种无监督的机器学习方法,聚类由于不需要训练过程,以及不需要预先对文档手工标注类别,因此具有一定的灵活性和较高的自动化处理能力,已经成为对文本信息进行有效地组织、摘要和导航的重要手段,为越来越多的研究人员所关注。

文本聚类的一般步骤如下图:

首先需要进行自动分词,英文分词相对简单,使用空格和标点符号分割就可以,只是单词形态比较多,需要进行词形还原。中文因为没有天然的空格分隔,因此分词相对更复杂一些,目前有很多中文分词工具,包括Hanlp、jieba、IK、THULAC、ICTCLAS、哈工大 LTP、KCWS分词器、ansj 分词器、Stanford 分词、MiNLP-Tokenizer等,分词效果都还不错,有些借助深度神经网络学习以及专业词典,在细分领域可以达到95%以上的准确率。

停用词过滤用来过滤掉无用的词语,比如无用的数字、标点符号、英文中的冠词、介词等。也包含中文词中出现频繁同时与分类无关的词语。

权重计算用来评估一个词语的重要程度,常使用TF-IDF方法。从两个方面来判定词语的重要性,一是单词在一篇文档中出现的频次,出现越高越重要;二是一个词如果只在少量篇文档中出现,而在其他文档中不出现,那么就越重要。

每个单词在每篇文档中的权重计算以后,得到所有次对于所有文档的权重矩阵。由于词语太多,目前新华字典收录的词语就超过50万个,把所有的词都作为特征的话计算量太大,需要进行降维处理,降维的主旨是要保留重要的特征,而忽略相对不重要的特征。常用的算法包括PCA、SVD、t-SNE等。

接下来就需要利用聚类算法对文本进行聚类,聚类效果的评价一般有两种方法。如果有已经标注的样本,那么直接那聚类后的结果和标注结果对比就可以;如果没有标注,那么一般使用S(i)=(b(i)-a(i))/max(b(i),a(i))来评价,其中a(i)表示数据点i到其所属簇的所有点距离的平均值,b(i)表示数据点到其他所有簇距离平均值的最小值。如果S(i)约接近1则分类效果越好。如果聚类效果不如意,首先就需要检查是不是算法参数不合理,再检查特征选取是否合理,并把不需要的词语逐步加到停用词典中。

聚类方法主要有如下几种:划分法、层次法、密度算法、图论聚类法、网格算法和模型算法,近年来半监督的聚类研究也比较活跃。下面分布介绍各类算法的基本思想以及典型算法的实现流程。

(1)划分法

划分法的基本思想就是对于散列的多个点,找出若干个中心从而形成若干个类,使得每个类内部的点离中心最近。典型的为k-means算法:

1.随机地选择k个点(可以不是数据点),每个点初始地代表了一个簇的中心;

2. 对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;

3. 重新计算每个簇的平均值,更新为新的簇中心;

4. 不断重复2、3,直到簇中心不再变化。

(2)层次法

层次聚类通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树,按照构建树的过程,主要有两种类型:合并的层次聚类和分裂的层次聚类。前者是一种自底向上的层次聚类算法,从最底层开始,每一次通过合并最相似的聚类来形成上一层次中的聚类。后者是采用自顶向下的方法,从一个包含全部数据点的聚类开始,然后把根节点分裂为一些子聚类,每个子聚类再递归地继续往下分裂。

BIRCH算法为典型的层次算法,BIRCH算法的过程就是要把待分类的数据插入一棵树中,这棵树被称为CF树(Clustering Feature Tree)。树的每一个节点是由若干个CF组成。从下图我们可以看看聚类特征树是什么样子的:每个节点包括叶子节点都有若干个CF,而内部节点的CF有指向孩子节点的指针,所有的叶子节点用一个双向链表链接起来。

(3)密度法

基于密度的聚类是根据样本的密度分布来进行聚类。通常情况下,密度聚类从样本密度的角度出来,来考查样本之间的可连接性,并基于可连接样本不断扩展聚类簇,以获得最终的聚类结果。DBSCAN是最典型的密度算法。

DBSCAN有几个概念:

  • 核心点:如果一个对象在其半径 Eps 内含有超过 MinPts数目的点,则该对象为核心点。(Eps和MinPts为超参数。)

  • 边界点:如果一个对象在其半径 Eps 内含有点的数量小于 MinPts,但是该对象落在其他某个核心点的邻域内,则该对象为边界点。

  • 噪音点:如果一个对象既不是核心点也不是边界点,则该对象为噪音点。

  • 直接密度可达:如果p在核心点q的Eps领域内,则称p从对象q出发是直接密度可达的。

  • 密度可达:对于p和核心点q,如果存在路径:p0=p,p1,p2…,pn=q,对于多有m=1~n,pm可以直接密度可达pm-1达,则称p可以从q密度可达。

  • 密度相连:对于p和q,如果存在一个点o,p和q点都可以从o点密度可达,则p和q密度项链。

DBSCAN算法的中心思想就是,找到所有密度相连的点组成一个类别,而不相连的就分开成多个类别。

(4)网格法

基于网格的聚类的基本思想是,将网格划分成有限个单元,对每个单元里面的元素进行统计生成统计信息,根据统计信息判断是否是高密度网格,然后将高密度网格相连形成簇。

STING算法为典型的网格算法,核心思想:首先我们先划分一些层次,每个层次上我们根据维度或者概念分层不同的cell,实际上这里的每个层次对应的是样本的一个分辨率。每个高层的cell在其下一层中被对应得划分成多个cell,每个cell我们都计算出它的统计信息,估计出它的分布。最底层直接使用网格中的数据计算统计信息,其他层使用下一层计算。计算好统计信息以后就可以从某层开始逐次往下层查询。

(5)模型法

模型法的基本假设是,目标数据集是由一系列的概率分布所决定的。每个聚类假定一个模型,然后对于数据集中的样本,计算每个样本属于每个类的概率。这里面每个类的分布是未的,而每个样本所属的分布也是未知的,因此一般使用EM算法来估计分布参数。模型聚类算法包括LDA、GMM、SOM等。

    LDA的核心思想就是,一篇文档是由多个主题的多项式分布构成,而每个主题是由不同的词的多项式分布构成。LDA算法的核心就是通过文档语料,计算出文档的主题分布,概率最大的主题即是文档的主题,从而按照主题对所有文档进行聚类。


LDA主题模型

1:上帝有两大坛骰子,第一个坛子装的是doc-topic骰子,第二个坛子装的是topic-word骰子;

2:上帝随机从第二个坛子里面选择了K个topic-word骰子,每个骰子有一个编号,编号从1到K;

3:每次生成文章以前,上帝先从第1个坛子里面抽取一个doc-topic骰子,然后重复如下过程生成文档中的词:

  • 投掷这个doc-topic骰子,得到一个topic编号z;

  • 选择K个topic-word骰子上编号为z的那个,投掷这个骰子,于是得到一个词。


(6)半监督聚类算法

传统的聚类是一种无监督分析方法,属于探索性分析,在对数据进行划分的过程中不依赖任何背景知识和相应的假设,单纯地按照相似性规则自然划分,让每一类中的数据的关系尽可能相似而类与类之间数据的关系尽可能不相似。这种划分往往和用户的实际需求距离比较远,实际应用中往往在聚类结果审核过程中,客户可以指定小部分样本的约束条件,为了合理运用数据对象中或多或少的背景知识,半监督学习应运而生。通过海量数据中少量的标签数据和先验知识来提高聚类性能,从而得到性能更优的结果。

半监督聚类方法都是在原来的聚类算法基础之上利用约束条件,重新进行聚类使得聚类结果满足所有约束条件。约束条件分为两种,成对约束和独立类标签。成对约束指定某些数据对象必须在一个类别里面(Must-Link),某些数据对象不能在一个类别里面(Cannot-Link);独立类标签就直接指定某些数据对象所属的类别,代表性算法如COP-Kmeans算法、Seeds-Kmeans算法、半监督谱聚类算法等。

4、算法选择

从实际分类精度来看,有监督的分类更具有优势,分类的准确度全面超过无监督或者半监督的聚类。如果客户已经有较多的分类样本,那么使用有监督的分类是更好的选择。现实中客户也可能没有分类样本或者只有很少样本,这种情况下就必须使用聚类算法,最好的选择就是使用半监督聚类算法,将聚类结果和客户确认,客户的反馈信息再作为约束条件重新聚类,直到达到满意的聚类效果后,再用分类算法对剩余的文档进行分类。

那么如此多的算法,选择什么算法最优呢?遗憾的是,当前没有哪个算法一定比别的更优秀,需要区分具体场景。就分类算法来说,目前的研究方向是走BERT类似的预训练模型路线,分类效果相对更好。不过这种模型需要的语料多,参数也多,对资源的消耗很大。如果客户的数据本身可分性就比较强,使用浅层模型已经可以达到要求,那么浅层模型也不失为好的选择。

对于聚类算法,需要根据数据特点选择合适的算法,比如k-means算法对于形状为凸的数据的聚类效果比较好,而对于非凸数据不合适,而密度算法对非凸的数据有比较好的效果。实际应用中更应当考虑半监督聚类算法,利用客户反馈的少量先验知识应用于算法之中,可以得到更有效的聚类结果。并将聚类结果用做分类样本,经过有监督的学习以求最终达到满意的分类结果。

5、总结

数据分类分级作为组织资产管理与保护中的关键过程,进行有效的数据分类分级至关重要。由于数据资产的多样性和复杂性,实现自动化数据分类分级是推动此项工作深入开展的有效支撑。高效、准确的分类算法是整个过程的灵魂,如何针对不同场景和应用环境选择不同算法并不断优化是提升数据分类分级产品能力的必经之路。

除此以外,进行数据的分类分级还是一项系统工程。数据安全成熟度模型(GB/T37988-2019)要求从管理、工具、人员三个层面不断加强。在管理层面:组织应当设立负责安全分类分级工作的管理岗位和人员,负责定义组织整体的数据分类分级安全原则,并建立制度按照不同分类和级别的数据进行管控,包括访问控制、数据加解密、数据脱敏等安全管理和控制措施;在技术工具层面,各组织应建立数据分类分级打标或者数据资产管理工具,实现数据对数据的分类分级自动打标识、标识结果发布、审核等功能。并能够根据审核结果进行改进,不断提升工具处理的准确度;在人员层面,需要负责分类分级的工作人员了解分类分级的合规要求,能够识别哪些数据是敏感信息。(中孚信息北京研究院:周春龙)


继续滑动看下一个
中孚信息
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存