NLP --- 文本分类(向量空间模型(Vector Space Model)VSM)

版权声明:转载请注明出处: https://blog.csdn.net/weixin_42398658/article/details/85063004

本节主要介绍文本分类中的一种算法即向量空间模型,这个算法很经典,包含文本预处理、特征选择、特征权值计算、分类算法、这是VSM的几个主要步骤,在宗老师的书里都有详细的讲解,这里也会进行深入的讲解,浅显易懂的是目的,深入理解是目标,下面给出这个VSM模型的方框流程图:

其中分词和词袋的建立我们在前两节进行解释了,这一节将主要介绍特征词选择、文本模型表示(VSM),分类算法的建立。下面就系统的进行梳理VSM的算法过程,这里大家多参考宗老师的书效果会更好:

文本分类就是在给定的分类模型下, 由计算机根据文本内容自动判别文本类别的过程。 随着文本分类技术的发展, 不同的文本表示模型逐渐出现多种文本分类算法, 使得文本挖掘领域道路越来越宽。 目前已经出现多种中文文本表示方法,如布尔模型、向量空间模型、潜在语义模型和概率模型等。 所以在构造自动文本分类器时, 面临的选择也越来越多。 空间向量模型是一种出现较早的文本表示模型, 但现在仍然在广泛的使用。 本篇的重点是对已经出现的基于向量空间模型的文本分类算法进行研究分析。

文本分类的定义

Sebastiani(2002)以如下数学模型描述文本分类任务。文本分类的任务可以理解为获得这样的一个函数:

其中,表示需要进行分类的文档,表示预定义的分类体系下的类别集合。T值表示对于来说,文档d_j属于类c_i,而F值表示对于而言文档不属于类c_i。也就是说,文本分类任务的最终目的是要找到一个有效的映射函数,准确地实现域D×C到值T或F的映射,这个映射函数实际上就是我们通常所说的分类器。因此,文本分类中有两个关键问题:一个是文本的表示,另一个就是分类器设计。
一个文本分类系统可以简略地用下图所示:

文本表示

中文文本信息多数是无结构化的, 并且使用自然语言,很难被计算机处理。 因此,如何准确地表示中文文本是影响文本分类性能的主要因素。 经过多年发展,如下图所示,研究人员提出了布尔模型、向量空间模型、潜在语义模型和概率模型等文本表示模型,用某种特定结构去表达文本的语义。基于分类速度的考虑, 目前的文本分类挖掘系统主要采用向量空间模型来表示文本
。VSM由哈佛大学的 G Salton 提出,这一模型将给定的文本转换成一个维数很高的向量, 并以特征项作为文本表示的基本单位
, 向量的各维对应文本中的一个特征项, 而每一维本身则表示了其对应的特征项在该文本中的权值。 权值代表了特征项对于所在文本的重要程度, 即该特征项能够多大程度上反映它所在文档的类别。

 下面给出VSM的概念和相关的定义,主要参考了宗老师的书,因为我查了很多资料,感觉还是宗老师说的比较简单明了,大家也看看,算法难点我会详细的讲解的,下面开始:

目前文本表示通常采用向量空间模型(vector space model,VSM)。VSM是20世纪60年代末期由G.Salton等人提出的[Salton,1971],最早用在SMART信息检索系统中,目前已经成为自然语言处理中常用的模型。下面首先给出VSM涉及的一些基本概念。

  • 文档(document):通常是文章中具有一定规模的片段,如句子、句群、段落、段落组直至整篇文章。本书对文本(text)和文档不加区分。
  • 项/特征项(term/feature term):特征项是VSM中最小的不可分的语言单元,可以是字、词、词组或短语等。一个文档的内容被看成是它含有的特征项所组成的集合,表示为:Document = D(t_1,t_2,...,t_n),其中t_k是特征项,1\leq k\leq n
  • 项的权重(term weight):对于含有n个特征项的文档D(t_1,t_2,...,t_n),每一特征项t_k都依据一定的原则被赋予一个权重w_k,表示它们在文档中的重要程度。这样一个文档D可用它含有的特征项及其特征项所对应的权重所表示:D=D(t_1,w_1;t_2,w_2;...;t_n,w_n),简记为D =D(w_1,w_2,...,w_n),其中w_k就是特征项t_k的权重,1\leq k\leq n

一个文档在上述约定下可以看成是视维空间中的一个向量,这就是向量空间模型的由来。下面给出其定义。

定义:  (向量空间模型(VSM)) 给定一个文档D=D(t_1,w_1;t_2,w_2;...;t_n,w_n),D符合以下两条约定:

              (1)各个特征项t_k1\leq k\leq n)互异(既没有重复);

              (2)各个特征项t_k无先后顺序关系(即不考虑文档的内部结构)

                在以上两个约定下,可以把特征项t_1,t_2,...,t_n看成一个n维坐标系,而权重w_1,w_2....,w_n为相应的坐标值,因此,一                   个 文本就表示为维空间中的一个向量,我们称D=D(t_1,w_1;t_2,w_2;...;t_n,w_n)为文本D的向量或向量空间模型,如下                  图所示:

 向量的相似性度量

定义: 任意两个文档D_1D_2之间的相似性系数Sim(D_1,D_2)指两个文档内容的相关程度(degree of relevance)。设文档D_1D_2表示VSM中的两个向量:

                                           D_1 = D_1(w_{11},w_{12},...,w_{1n})

                                           D_2= D_2(w_{21},w_{22},...,w_{2n})

那么,可以借助于n维空间中两个向量之间的某种距离来表示文档之间的相似度,常用的方法是使用向量之间的內积来计算:

                                          Sim(D_1,D_2) = \sum_{k=1}^{n}w_{1k}\times w_{2k}

考虑到向量的归一化,则可以使用两个向量的余弦值来表示相似系数:             

                                    

这里需要解释一下,我们知道在平面向量里两个向量越接近,那么这两个向量的夹角越小,直到这两个向量平行这两个向量才完全相等,大家需要理解一下基本的向量知识就懂了,上式是根据求向量的夹角进行判断,如下:

设二维空间内有两个向量  和    ,    和   表示向量a和b的大小,它们的夹角为   ,则内积定义为以下实数: 、                                                                          

则 夹角的计算                                          cos\theta = \frac{\overrightarrow{a}\bullet \overrightarrow{b}}{\left | a \right |\left | b \right |}

这样大家应该可以理解吧,我们继续:

采用向量空间模型进行文本表示时,需要经过以下两个主要步骤:

(1)根据训练样本集生成文本表示所需要的特征项序列D(t_1,t_2,...,t_n)

(2)依据文本特征项序列,对训练文本集和测试样本集中的各个文档进行权重赋值、规范化等处理,将其转化为机器学习算
法所需的特征向量。
另外,用向量空间模型表示文档时,首先要对各个文档进行词汇化处理,在英文、法文等西方语言中这项工作相对简单,但在汉语中主要取决于汉语自动分词技术。由于n元语法具有语言无关性的显著优点,而且对于汉语来说可以简化分词处理,因此,有些学者提出了将n元语法用于文本分类的实现方法,利用n元语法表示文本单元(“词”)。

需要指出的是,除了VSM文本表示方法以外,研究比较多的还有另外一些表示方法,例如:词组表示法,概念表示法等。但这些方法对文本分类效果的提高并不十分显著。词组表示法的表示能力并不明显优于普通的向量空间模型,原因可能在于,词组虽然提高了特征向量的语义含量,但却降低了特征向量的统计质量,使得特征向量变得更加稀疏,让机器学习算法难以从中提取用于分类的统计特性。 

文本特征选择方法

在文本处理过程中,将文本集合中的每个文本实行分词处理后,通常是统计出每个文本出现的词以及相应的词频,然后将每个文本出现的词合并成一个词空间,所以词空间中出现的不同词相当多。表示一篇文本的时候,无论文本用向量空间模型还是概率统计模型来表示,文本的特征的维度都和词空间的维度一样。而每个文本中出现的词只占词空间中很少一部分,文本特征表示非常稀疏。使分类算法的时间复杂度和空间复杂度增加,而且对文本特征表示的不准确性严重影响了文本分类性能。因此,需要对文本特征进行筛选,选出最能代表文本类别的特征,这个过程就是特征选择。特征选择的一般步骤是:
(1)从训练文本集中取得所有的特征项,构成文本特征集合F

(2)对集合中的每一项用下面将要介绍的特征评估函数进行打分,然后按照分值由高到低排序,得到有序集合F_1

(3)假设需要选取N个分类需要的特征项,则从F_1集合中选取前N个特征项,构成最终的分类特征项F_sF_s将用于训练分类器和分类测试。

特征选择算法常用的方法有:基于文档频率(document frequency,DF)的特征提取法、信息增益(information gain,IG)法、\chi ^2统计量(CHI)法和互信息方法等以下简要介绍这些方法

文档频率(document frequency,DF)的特征提取法

一个特征的文档频率是指在文档集中含有该特征的文档数目。采用DF作为特征选择,基于如下基本假设:DF值低于某个域值的词条是低频词,它们不含或含有较少的类别信息。将这样的词条从原始特征空间中除去,不但能够降低特征空间的维数,而且还有可能提高分类的精度。文档频率是最简单的特征选择方法,由于其相对于训练语料规模具有线性的计算复杂度,它能够很容易被用于大规模语料统计。而在信息检索研究中通常却认为值低词条相对于值高的词条具有较多的信息量,不应该将它们完全移除。不同的应用对值的认识不同,因此应根据具体情况来选择该方法。

信息增益(information gain,IG)法

信息增益表示文本中包含某一特征值时文本类的平均信息量。它定义为某一特征在文本中出现前后的信息熵之差。假定c为文本类变量,C为文本类的集合,d为文本,f为特征(以下各节同此)。对于特征f其信息增益记为IG(f),公式如下:

其中P(\widetilde{f})是语料中不包含该特征的概率。这里就不细讲了,不理解什么是熵的请查看我的这篇文章

从信息增益的定义可知,一个特征的信息增益实际上描述的是它包含的能够帮助预测类别属性的信息量。从理论上讲,信息增益应该是最好的特征选取方法,但实际上由于许多信息增益比较高的特征出现频率往往较低,所以,当使用信息增益选择的特征数目比较少时,往往会存在数据稀疏问题,此时分类效果也比较差。因此,有些系统实现时,首先对训练语料中出现的每个词(以词为特征)计算其信息增益,然后指定一个阈值,从特征空间中移除那些信息增益低于此阈值的词条,或者指定要选择的特征个数,按照增益值从高到低的顺序选择特征组成特征向量。

其实上面的内容在机器学习中都详细讲过了,这里就体现了知识的联系性,也就是说我们学习的知识是普遍具有联系的,有时候用在另一个方面,也可以用在其他方面,这里大家就需要有发散性的思维了,大家这里可结合宗老师的书看会更好。

\chi ^2统计量(CHI)法(卡方分布)

\chi ^2统计量(CHI)衡量的是特征项t_i和类别C_j之间的相关联程度,并假设t_iC_j之间符合具有一阶自由度的\chi ^2分布。特征对于某类的\chi ^2统计值越高,它与该类之间的相关性越大,携带的类别信息也较多,反之则越少。
如果令N表示训练语料中文档的总数,A表示属于C_j类且包含t_i的文档频数,B表示不属于C_j类但包含t_i的文档频数,C表示属于C_j类但不包含t_i的文档频数,D是既不属于C_j也不包含t_i的文档频数,N为总的文本数量。上述4种情况可以下表表示:

 特征项t_iC_j的卡方值为:

通过上表和上式我们可以看到,开方统计量确实是衡量两个量的相关程度的,这里的两个量是特征项 t_i和类别C_j之间的相关联的程度,根据上式我们就可以看到他们的相关度是如何判断的,这里大家只需要关注A和D是什么意思就好了,A说明在C_j的分类中,包含特征t_i的文本,而D说明了在其他的分类里不包含这个特征的文本,这里的A和D其实表达的是同一个意思,只是从不同的衡量角度进行衡量罢了,这里大家需要理解,因此如何A和D很大说明该特征在这一类中关联度很大,因此AD的乘积越大说明关联度越大,根据上式的分子,我们可以发现,AD的乘积越大,CB的值越小,此时的卡方值越大,只有CB的理解是类似的,这里大家自己尝试理解一下。下面我们继续:

对于多类问题.,基于CHI统计量的特征提取方法可以采用两种实现方法:一种方法是分别计算t_i对于每个类别的CHI值,然后在整个训练语料上计算:

                                                         

其中,M为类别数。从原始特征空间中去除统计量低于给定阈值的特征,保留统计量高于给定阈值的特征作为文档特征。另一种方法是,计算各特征对于各类别的平均值: 

                                                           

以这个平均值作为各类别的CHI值。但有研究表明,后一种方法的表现不如前一种方法 。

互信息方法

这个方法和上面的卡方统计很类似,这里就根据上面的说明的符号进行讲解一下,很简单:

互信息(MI)法的基本思想是:互信息越大,特征t_i和类别C_j共线的程度越大。如果A、B、C、N的含义和卡方统计中的约定相同,那么t_iC_j的互信息可由下式计算:

如果特征t_i和类别C_j无关,则,那么。为了选出对多类文档识别有用的特征,与上面基于CHI统计量的处理方法类似,也有最大值方法和平均值方法两种方法: 

以上是文本分类中比较经典的一些特征选取方法,实际上还有很多其他文本特征选取方法,例如DTP(distance to transition point)方法、期望交叉熵法、文本证据权法、优势率方法。

这里特征选择算法就讲完了,下面讲一下权值的确定:

特征权重算法

这里只简单的介绍宗老师书里的前几个,后面那几个很麻烦的原理是一样的,只是做了一些微调而已。

不同的特征项对文本的重要程度和区分度是不同的,所以在对文本分类模型进行形式化的时候,需要对所有特征项进行赋权重处理,常用的加权函数有布尔权重、词频权重、权重和基于熵概念的权重等。

布尔权重 

布尔权重是最简单的一种加权方法,特征词出现的次数大于0,则权重赋为1。特征词出现的次数为0,则权重赋为0,其表达公式如:

其中W_i为特征项i的权重,TF为特征项i出现的次数。

绝对词频权重

使用文档中特征词的频率做权重,可以提高文本分类的查全率,但对准确率不好,其公式可以表示为:

                                                                                      \large W_i =TF_i

                                                                                              =特征词\large i出现的次数。

这种方法比较简单,因为有些词出现的频率虽然非常高,但是没有什么代表性,这样使一些噪音词的权重比较高,从而降低了分类的准确率。因为如果某一个特征在每个类别中出现的频次都很高,说明这个特征不是很重要,因此需要考虑出现少一点的词。

倒排文档频度 (IDF)

                                                                                  \large W_i =log(\frac{N}{n_i})

N为总文档数,\large n_i表示含有特征\large t_i的文档数,他们的比值再去对数,说明了什么呢?其实很简单呢,如果N不变,\large n_i越小,W_i越大,同理\large n_i越大,W_i越小,也就是说这个思想是特征出现的次数越少器权值越大,和上面的绝对词频正好相反,但是这样做的缺点是对那些极少出现的词极度敏感,因此为了结果上面的大也不好,小也不好的缺点,这里把二者结合在一起即:

\large TFIDF权重

\large TFIDF是在文本处理领域中使用最广泛的数值权重计算方法。该方法基于以下原因一是特征\large i在文档\large j中出现次数越多,越重要二是文档集中含有特征\large i的文档数\large DF_i越大越不重要。方法基于的思想和构造的统计量都很简单,但是,在实用中却表现了很好的性能。权重函数为:

其中\large tf_{ik}(Term Frequency)表示项\large t_k在文本\large D_i中的文档内出现的频率,\large idf_k(lnverse Document Frequency)表示项\large t_k的反文档频率,是反映\large t_k在一个文档集中按文档统计出现的频繁程度的指标。它们有多种计算方法,目前较为常用的公式为:

其中表示项\large t_k在文本\large D_i,中出现的次数,N表示全部训练集的文本数,\large n_k表示训练文本中出现\large t_k的文本频数,\large l的取值需要根据实验来确定,一般取0.01。根据香农信息学理论,如果项在所有文本中出现的频率越高,那么它所包含的信息熵就越小;如果项的出现较为集中,只在少量文本中有较高的出现频率,那么它就会拥有较高的信息熵。上述公式就是基于这个思想的一种实现。
考虑到文本长度对权重的影响,还应该对项权重公式做归一化处理,将各项权重规范到[0,1]之间: 

TFIDF公式是一种经验公式,并没有坚实的理论基础。但是,多年的实验表明,上述公式是文本处理中的一个有效工具。事实上,这一公式不仅在信息检索中得到了成功应用,它对于其他文本处理领域,如信息分发、信息过滤和文本分类也有很好的借鉴意义。
其他的都是在此基础上进行改进的,大家参考宗老师的书本就可以理解了。

分类算法   

这里不想继续写了,因为这些算法在机器学习中都详细的讲过了,这里大家可以自行看一下,宗老师的书里也给了简单的介绍,我这里直接把用到的几个算法的链接发到这里。

朴素贝叶斯算法

支持向量机

K-近邻这个算法当时感觉太简单了就没有总结,这里大家自行总结一下就可以了。

BP神经网络详解
线性回归

决策树

剩下的算法大家自己看宗老师的书吧。

文本分类性能评测

如何评估分类方法和系统的性能或者说分类结果是进行文本分类研究的一个重要技术。真正反映文档分类内在特征的性能评估模型可以作为改进和完善分类系统的目标函数。在文本分类中,使用什么评价参数取决于具体的分类问题。单标注分类问题一个测试文本只属于一个类和多标注分类问题一个测试文本可以属于多个类所使用的评估参数是不一样的。目前使用比较多的分类性能
评估指标为查全率和查准率,这是来源于信息检索中的术语。其实就是正确率、召回率和F-测度值。

上表示分类器将输人文本正确地分类到某个类别的个数;b表示分类器将输人文本错误地分类到某个类别的个数;c表示分类器将输人文本错误地排除在某个类别之外的个数;d表示分类器将输人文本正确地排除在某个类别之外的个数。该分类器的召回率、正确率和F一测度值分别采用以下公式计算:

其中\large \beta是调整正确率和召回率在评价函数中所占比重的参数,通常取\large \beta =1,这时的评价指标变为:

其他的请查看宗老师的书吧。

本节就到这里,我们下一节分析一下VSM的缺点,针对该缺点提出其他的算法基于SVD的隐喻意分析进行解决。 

猜你喜欢

转载自blog.csdn.net/weixin_42398658/article/details/85063004