低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

文本数据的机器学习自动分类方法 (上)

2016 年 1 月 25 日

【编者按】:随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的一类。以统计理论为基础,利用机器学习算法对已知的训练数据做统计分析从而获得规律,再运用规律对未知数据做预测分析,已成为文本分类领域的主流。InfoQ 联合“达观数据“共同策划了《文本数据的机器学习自动分类方法》系列文章,为您详细阐述机器学习文本分类的基本方法与处理流程。

本文为第一部分,着重介绍文本预处理以及特征抽取的方法。第二部分将会着重介绍特征向量权重的影响因素以及样本训练和分类评估方法。。

随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的一类。“文本分类是指在给定分类体系下,根据文本内容自动确定文本类别的过程”(达观数据科技联合创始人,张健)。文本分类有着广泛的应用场景,例如:

  • 新闻网站包含大量报道文章,基于文章内容,需要将这些文章按题材进行自动分类(例如自动划分成政治、经济、军事、体育、娱乐等。
  • 在电子商务网站,用户进行了交易行为后对商品进行评价分类,商家需要对用户的评价划分为正面评价和负面评价,来获取各个商品的用户反馈统计情况。
  • 电子邮箱频繁接收到垃圾广告信息,通过文本分类技术从众多的邮件中识别垃圾邮件并过滤,提高了邮箱用户的使用效率。
  • 媒体每日有大量投稿,依靠文本分类技术能够对文章进行自动审核,标记投稿中的色情、暴力、政治、垃圾广告等违规内容。

20 世纪 90 年代以前,占主导地位的文本分类方法一直是基于知识工程的方法:借助专业人员的帮助,为每个类别定义大量的推理规则,如果一篇文档能满足这些推理规则,则可以判定属于该类别。但是这种方法有明显的缺点:分类的质量依赖于规则的好坏;需要大量的专业人员进行规则的制定;不具备可推广性,不同的领域需要构建完全不同的分类系统,造成开发资源和资金资源的巨大浪费。

而机器学习技术能很好地解决上述问题,以统计理论为基础,利用算法让机器具有类似人类般的自动“学习”能力——对已知的训练数据做统计分析从而获得规律,再运用规律对未知数据做预测分析。机器学习方法运用在文本分类上的基本过程就是:标注——利用人工对一批文档进行了准确分类,以作为训练集(进行机器学习的材料);训练——计算机从这些文档中挖掘出一些能够有效分类的规则,生成分类器(总结出的规则集合);分类——将生成的分类器应用在有待分类的文档集合中,获取文档的分类结果。由于机器学习方法在文本分类领域有着良好的实际表现,已经成为了该领域的主流。

达观数据团队在处理海量数据方面具有丰富的经验,在文本分类技术方面有深入的实践,并将文本分类技术成功运用到了线上服务中,取得了良好的效果。本文整理了文本分类的基本方法和处理流程,进行了综述性介绍。

(一):文本预处理

1. 文本分类流程

文本分类的流程如图 1 所示,包括训练、特征抽取、训练模型、分类预测等几个主要环节。

图 1 文本分类流程图

2. 文本预处理

2.1 文档建模

机器学习方法让计算机自己去学习已经分类好的训练集,然而计算机是很难按人类理解文章那样来学习文章,因此,要使计算机能够高效地处理真实文本,就必须找到一种理想的形式化表示方法,这个过程就是文档建模。文档建模一方面要能够真实地反映文档的内容,另一方面又要对不同文档具有区分能力。文档建模比较通用的方法包括布尔模型、向量空间模型(VSM)概率模型。其中最为广泛使用的是向量空间模型。

经典的向量空间模型 (VSM: Vector Space Model)由 Salton 等人于 60 年代提出,并成功地应用于著名的 SMART 文本检索系统。VSM 概念非常直观——把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量时,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。文本挖掘系统采用向量空间模型,用特征词条 (T1,T2,…Tn) 及其权值 Wi 代表目标信息,在进行信息匹配时,使用这些特征项评价未知文本与目标样本的相关程度。特征词条及其权值的选取称为目标样本的特征提取,特征提取算法的优劣将直接影响到系统的运行效果。

设 D 为一个包含 m 个文档的文档集合 Di 为第 i 个文档的特征向量,则有 D={D1,D2,…,Dm}, Di=(di1di2…dij),i=12,…,m j=1,2,…,n。其中 dij(i=1,2,…,m; j=1,2,…,n) 为文档 Di 中第 j 个词条 tj 的权值它一般被定义为 tj 在 Di 中出现的频率 tij 的函数,例如采用 TF-IDF 函数,即 dij=tij*log(N/nj)。其中 N 是文档数据库中文档总数,nj 是文档数据库含有词条 tj 的文档数目。假设用户给定的文档向量为 D2,未知的文档向量为 q,两者的相似程度可用两向量的夹角余弦来度量,夹角越小说明相似度越高。相似度的计算公式如下

图 2 向量空间模型

通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。

2.2 中文分词技术

在使用向量模型表示文档时,首先要对文档进行词汇化处理。对于英语或者法语等语言来说,将文档转化成词的集合比较简单,但是对于汉语来说,不像英文文本的单词那样有空格来区分,这个处理过程要依赖于分词技术。从简单的查词典的方法,到后来的基于统计语言模型的分词方法,中文分词的技术已趋于成熟。但是,尽管现在分词软件的准确率已经比较高了,它对专业术语(称为未登录词识别)的识别率还不是很好。例如“来自星星的你”,分词可以成功切分为“来自\星星\的\你”,但是怎样把“来自星星的你”作为一个完整的专有名词(电视剧名称)识别出来,还有很多技术要解决。为了进一步提高关键词抽取的准确率,通常需要在词库中添加专名词表来保证分词的质量。

在完成分词之后,我们对词语的位置信息做进一步的发掘,需要确定记录位置信息的方式以及各个位置的词在反映主题时的相对重要性。标题、摘要和结论、正文等文章各个部分的位置权重是各不相同的,当软件逐词扫描统计词频时,记录每个词的位置信息。

在计算文档的特征向量的值时,还需要对文本集进行一些处理,过滤掉无用的信息。滤除这些没有作用的词语可以减少文本特征向量的维数,减少不必要的运算。常见做法包括:

  • 去掉一些低频词,比如某些单词只在一两个文本中出现过,这样词留在集合中会导致大部分文本样本的该属性值为 0。
  • 去掉停止词,一般这种词几乎不携带任何信息。例如:“的”、“地”、“得”之类的助词,以及像“然而”、“因此”等只能反映句子语法结构的词语,它们不但不能反映文献的主题,而且还会对关键词的抽取造成干扰,有必要将其滤除。应该去掉的停止词为所有虚词以及标点符号。
  • 去掉一些标记信息,这主要针对网页文本或其他的标记语言文本。

(二):特征抽取

1. 文本特征抽取

目前大多数中文文本分类系统都采用词作为特征项,作为特征项的词称作特征词。这些特征词作为文档的中间表示形式,用来实现文档与文档、文档与用户目标之间的相似度计算 。如果把所有的词都作为特征项,那么特征向量的维数将过于巨大,会对分类系统的运算性能造成极大的压力。在这样的情况下,要完成文本分类几乎是不可能的。寻求一种有效的特征降维方法,不仅能降低运算复杂度,还能提高分类的效率和精度,是文本自动分类中一项重要技术。

特征抽取的主要功能就是在不损伤核心信息的情况下降低向量空间维数,简化计算,提高文本处理的速度和效率。相对于其他分类问题,文本特征抽取的方式常见的有 4 种:

  • 用映射或变换的方法把原始特征变换为较少的新特征;
  • 从原始特征中挑选出一些最具代表性的特征;
  • 根据专家的知识挑选最有影响的特征;
  • 基于数学方法进行选取,找出最具分类信息的特征。

其中基于数学方法进行特征选择比较精确,人为因素干扰少,尤其适合于文本应用。这种方法通过构造评估函数,对特征集合中的每个特征进行评估,并对每个特征打分,这样每个词语都获得一个评估值,又称为权值,然后将所有特征按权值大小排序,提取预定数目的最优特征作为提取结果的特征子集。

2. 评估函数

对用数学方法进行特征选择的算法,决定文本特征提取效果的主要因素是评估函数的质量,常用评估函数包括:

(1) TF-IDF

单词权重最为有效的实现方法就是 TF-IDF 它是由 Salton 在 1988 年提出的。其中 TF 称为词频,用于计算该词描述文档内容的能力。IDF 称为反文档频率,用于计算该词区分文档的能力。TF*IDF 的指导思想建立在这样一条基本假设之上:在一个文本中出现很多次的单词,在另一个同类文本中出现次数也会很多,反之亦然。所以如果特征空间坐标系取 TF 词频作为测度,就可以体现同类文本的特点。另外还要考虑单词区别不同类别的能力,TF*IDF 法认为一个单词出现的文本频率越小,它区别不同类别的能力就越大,所以引入了逆文本频度 IDF 的概念:以 TF 和 IDF 的乘积作为特征空间坐标系的取值测度。TF-IDF 法是以特征词在文档 d 中出现的次数与包含该特征词的文档数之比作为该词的权重,即其中,Wi 表示第 i 个特征词的权重,TFi(t,d) 表示词 t 在文档 d 中的出现频率,N 表示总的文档数,DF(t) 表示包含 t 的文档数。用 TF-IDF 算法来计算特征词的权重值是表示当一个词在这篇文档中出现的频率越高,同时在其他文档中出现的次数越少,则表明该词对于表示这篇文档的区分能力越强,所以其权重值就应该越大。将所有词的权值排序,根据需要可以有两种选择方式:

  • 选择权值最大的某一固定数 n 个关键词
  • 选择权值大于某一阈值的关键词

达观数据的实践经验是,计算机选择的关键词数量在 10∽15 个,人工选择的关键词数量在 4∽6 个比较合适,通常具有最好的覆盖度和专指度。TFIDF 算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取 TF 词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,TFIDF 法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度 IDF 的概念,以 TF 和 IDF 的乘积作为特征空间坐标系的取值测度,并用它完成对权值 TF 的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上 IDF 是一种试图抑制噪音的加权,并且单纯地认为文本频数小的单词就越重要,文本频数大的单词就越无用,显然这并不是完全正确的。IDF 的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TF*IDF 法的精度并不是很高。此外,在 TFIDF 算法中并没有体现出单词的位置信息,对于 Web 文档而言,权重的计算方法应该体现出 HTML 的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。

(2) 词频法

词频是一个词在文档中出现的次数。通过词频进行特征选择就是将词频小于某一阈值的词删除,从而降低特征空间的维数。这个方法是基于这样一个假设,即出现频率小的词对过滤的影响也较小。但是在信息检索的研究中认为,有时频率小的词含有更多的信息。因此,在特征选择的过程中不宜简单地根据词频大幅度删词。

(3) 文档频次法

文档频数 (Document Frequency, DF) 是最为简单的一种特征选择算法,它指的是在整个数据集中有多少个文本包含这个单词。在训练文本集中对每个特征计一算它的文档频次,并且根据预先设定的阑值去除那些文档频次特别低和特别高的特征。文档频次通过在训练文档数量中计算线性近似复杂度来衡量巨大的文档集,计算复杂度较低,能够适用于任何语料,因此是特征降维的常用方法。在训练文本集中对每个特征计算它的文档频数,若该项的 DF 值小于某个阈值则将其删除,若其 DF 值大于某个阈值也将其去掉。因为他们分别代表了“没有代表性”和“没有区分度”两种极端的情况。DF 特征选取使稀有词要么不含有用信息,要么太少而不足以对分类产生影响,要么是噪音,所以可删去。DF 的优点在于计算量小,速度快,它的时间复杂度和文本数量成线性关系,所以非常适合于超大规模文本数据集的特征选择。不仅如此,文档频数还非常地高效,在有监督的特征选择应用中当删除 90% 单词的时候其性能与信息增益和 X2 统计的性能还不相上下。但如果某一稀有词条主要出现在某类训练集中,却能很好地反映类别的特征,而因低于某个设定的阈值而滤除掉,包含着重要的判断信息被舍弃,这样就会对分类精度有一定的影响。

(4) 互信息方法

互信息(Mutual Information)衡量的是某个词和类别之间的统计独立关系,某个词 t 和某个类别 Ci 传统的互信息定义如下:互信息是计算语言学模型分析的常用方法,它度量两个对象之间的相互性。在过滤问题中用于度量特征对于主题的区分度。

互信息的定义与交叉嫡近似。互信息本来是信息论中的一个概念,用于表示信息之间的关系, 是两个随机变量统计相关性的测度,使用互信息理论进行特征抽取是基于如下假设:在某个特定类别出现频率高,但在其他类别出现频率比较低的词条与该类的互信息比较大。通常用互信息作为特征词和类别之问的测度,如果特征词属于该类的话,它们的互信息量最大。由于该方法不需要对特征词和类别之间关系的性质作任何假设,因此非常适合于文本分类的特征和类别的配准工作。特征项和类别的互信息体现了特征项与类别的相关程度,是一种广泛用于建立词关联统计模型的标准。

互信息与期望交叉熵的不同在于没有考虑特征出现的频率,这样导致互信息评估函数不选择高频的有用词而有可能选择稀有词作为文本的最佳特征。因为对于每一主题来讲,特征 t 的互信息越大,说明它与该主题的共现概率越大,因此,以互信息作为提取特征的评价时应选互信息最大的若干个特征。互信息计算的时间复杂度类似于信息增益,互信息的平均值就是信息增益。互信息的不足之处在于得分非常受词条边缘概率的影响。达观的实验数据显示,互信息分类效果通常比较差,其次是文档频率、CC 统计,CHI 统计分类效果最好。

对互信息而言,提高分类精度的方法有:1) 可以增加特征空间的维数,以提取足够多的特征信息,这样就会带来了时间和空间上的额外开销;2) 根据互信息函数的定义,认为这些低频词携带着较为强烈的类别信息,从而对它们有不同程度的倚重。当训练语料库没有达到一定规模的时候,特征空间中必然会存在大量的出现文档频率很低 (比如低于 3 次) 的词条,他们较低的文档频率导致了他们必然只属于少数类别。但是从抽取出来的特征词观察发现,大多数为生僻词,很少一部分确实带有较强的类别信息,多数词携带少量的类别信息,甚至是噪音词。

(5) 期望交叉熵 (Expected Cross Entropy)

交叉嫡与信息量的定义近似,其公式为:交叉嫡,也称 KL 距离。它反映了文本主题类的概率分布和在出现了某特定词汇的条件下文本主题类的概率分布之间的距离,词汇 w 的交叉嫡越大,对文本主题类分布的影响也越大。它与信息增益唯一的不同之处在于没有考虑单词未发生的情况,只计算出现在文本中的特征项。如果特征项和类别强相关,P(Ci|w) 就大,若 P(Ci) 又很小的话,则说明该特征对分类的影响大。交叉熵反映了文本类别的概率分布和在出现了某个特定词的条件下文本类别的概率分布之间的距离,特征词 t 的交叉熵越大,对文本类别分布的影响也越大。熵的特征选择效果都要优于信息增益。

(6) 二次信息熵 (QEMI)

将二次熵函数应用于互信息评估方法中,取代互信息中的 Shannon 熵,就形成了基于二次熵的互信息评估函数。基于二次熵的互信息克服了互信息的随机性,是一个确定的量,因此可以作为信息的整体测度,另外它还比互信息最大化的计算复杂度要小,所以可以比较高效地用在基于分类的特征选取上。

(7) 信息增益方法 (Information Gain)

信息增益方法是机器学习的常用方法,在过滤问题中用于度量已知一个特征是否出现于某主题相关文本中对于该主题预测有多少信息。通过计算信息增益可以得到那些在正例样本中出现频率高而在反例样本中出现频率低的特征,以及那些在反例样本中出现频率高而在正例样本中出现频率低的特征。信息增益 G(w) 的训算公式如下:其中 P(w) 是词 w 出现的概率,P(Ci) 是取第 i 个目录时的概率,P(Ci|w) 是假定 w 出现时取第 i 个目录的概率。

信息增益是一种基于熵的评估方法,涉及较多的数学理论和复杂的熵理论公式,定义为某特征项为整个分类所能提供的信息量,不考虑任何特征的熵与考虑该特征后的熵的差值。他根据训练数据,计算出各个特征项的信息增益,删除信息增益很小的项,其余的按照信息增益从大到小排序。信息增益是信息论中的一个重要概念,它表示了某一个特征项的存在与否对类别预测的影响,定义为考虑某一特征项在文本中出现前后的信息熵之差。某个特征项的信息增益值越大,贡献越大,对分类也越重要。信息增益方法的不足之处在于它考虑了特征未发生的情况。特别是在类分布和特征值分布高度不平衡的情况下,绝大多数类都是负类,绝大多数特征都不出现。此时的函数值由不出现的特征决定,因此,信息增益的效果就会大大降低。信息增益表现出的分类性能偏低。因为信息增益考虑了文本特征未发生的情况,虽然特征不出现的情况肿可能对文本类别具有贡献,但这种贡献往往小于考虑这种情况时对特征分值带来的干扰。

(8) 统计量方法

X2 统计量用于度量特征 W 和主题类 C 之间的独立性。而表示除 W 以外的其他特征,C 表示除 C 以外的其他主题类,那么特征 W 和主题类 C 的关系有以下四种情况:用 A、B、C、D 表示这四种情况的文档频次,总的文档数 N=A+B+C+D,扩统计量的计算公式如下:当特征 W 和主题类 C 之间完全独立的时候,X2 统计量为 0。X2 统计量和互信息的差别在于它是归一化的统计量,但是它对低频特征的区分效果也不好。X2 统计得分的计算有二次复杂度,相似于互信息和信息增益。在 X2 统计和互信息之间主要的不同在于 X2 是规格化评价, 因而 X2 评估分值对在同类中的词是可比的, 但是 X2 统计对于低频词来说是不可靠的。

利用 X2 统计方法来进行特征抽取是基于如下假设:在指定类别文本中出现频率高的词条与在其他类别文本中出现频率比较高的词条,对判定文档是否属于该类别都是很有帮助的. 采用 X2 估计特征选择算法的准确率在实验中最高,其分类效果受训练集影响较小,比较稳定。而且在对文教类和政治类存在类别交叉现象的文本进行分类时,采用 X2 估计的分类系统表现出了优于其它方法的分类性能。X2 估计的可靠性较好,便于对程序的控制,无需因训练集的改变而人为的调节特征阀值的大小。

(9) 文本证据权 (The Weight of Evidence for Text)

文本证据权衡量类的概率和给定特征时类的条件概率之间的差别。

(10) 优势率 (Odds Ratio)

优势率只适用于二元分类的情况,其特点是只关心文本特征对于目标类的分值。Pos 表示目标类,neg 表示非目标类。

(11) 遗传算法 (Genetic Algorithm, GA):

遗传算法 (Genetic Algorithm, GA) 是一种通用型的优化搜索方法,它利用结构化的随机信息交换技术组合群体中各个结构中最好的生存因素,复制出最佳代码串,并使之一代一代地进化,最终获得满意的优化结果。

文本实际上可以看作是由众多的特征词条构成的多维空间,而特征向量的选择就是多维空间中的寻优过程,因此在文本特征提取研究中可以使用高效寻优算法。在将文本特征提取问题转化为文本空间的寻优过程中,首先对 Web 文本空间进行遗传编码,以文本向量构成染色体,通过选择、交叉、变异等遗传操作,不断搜索问题域空间,使其不断得到进化,逐步得到 Web 文本的最优特征向量。 基于协同演化的遗传算法不是使用固定的环境来评价个体,而是使用其他的个体来评价特定个体。基于协同演化的遗传算法不仅能反映其母体的特征,还能反映其他同类文本的共性,这样可以有效地解决同一主题众多文本的集体特征向量的提取问题,获得反映整个文本集合某些特征的最佳个体。

(12) 主成分分析法 (Principal Component Analysis,PCA)

PCA 是非常常用的一种通用特征降维方法,也同样大规模用于文本特征抽取中,基于其处理方式的不同又分为数据方法和矩阵方法

矩阵方法中,所有的数据通过计算方差一协方差结构在矩阵中表示出来,矩阵的实现目标是确定协方差矩阵的特征向量,它们和原始数据的主要成分相对应。在主成分方法中,由于矩阵方法的复杂度在 n 很大的情况以二次方增长,因此人们又开发了主要使用 Hebbian 学习规则的 PCA 神经网络方法。主成分分析法是特征选取常用的方法之一,它能够揭示更多有关变量 - 丰要方向的信息。但它的问题在于矩阵方法中要使用奇异值分解对角化矩阵求解方差一协方差。

(13) 模拟退火算法 (Simulating Anneal,SA)

特征选取可以看成是一个组合优化问题,因而可以使用解决优化问题的方法来解决特征选取的问题。模拟退火算法 (Simulating Anneal,SA) 就是其中一种方法。模拟退火算法是一个很好的解决优化问题的方法,将这个方法运用到特征选取中,理论上能够找到全局最优解,但在初始温度的选取和邻域的选取 t 要恰当,必须要找到一个比较折中的办法,综合考虑解的性能和算法的速度。

(14) N-Gram 算法

它的基本思想是将文本内容按字节流进行大小为 N 的滑动窗口操作,形成长度为 N 的字节片段序列。每个字节片段称为 gram,对全部 gram 的出现频度进行统计,并按照事先设定的阈值进行过滤,形成关键 gram 列表,即为该文本的特征向量空间,每一种 gram 则为特征向量维度。

由于 N-Gram 算法可以避免中文分词的障碍,所以对中文分类有较高的实用性。中文文本处理大多采用双字节进行分解,称之为 bi-gram。但是 bi-gram 切分方法在处理 20% 左右的中文多字词时,往往产生语义和语序方面的偏差。而对于专业研究领域,多字词常常是文本的核心特征,处理错误会导致较大的负面影响。基于 N-Gram 改进的文本特征提取算法,在进行 bi-gram 切分时,不仅统计 gram 的出现频度,而且还统计某个 gram 与其前邻 gram 的情况,并将其记录在 gram 关联矩阵中。对于那些连续出现频率大于事先设定阈值的,就将其合并成为多字特征词。这样通过统计与合并双字特征词,自动产生多字特征词,可以较好地弥补 N-Gram 算法在处理多字词方面的缺陷。

3. 评估函数对比分析

上述罗列的几种文档特征评估函数的特点如何呢?信息增益的定义过于复杂,因此应用较多的是交叉嫡和互信息。其中互信息的效果要好于交叉嫡,这是因为互信息是对不同的主题类分别抽取特征词,而交叉嫡跟特征在全部主题类内的分布有关,是对全部主题类来抽取特征词。这些方法,在英文特征提取方面都有各自的优势,但用于中文文本,并没有很高的效率。主要有 2 个方面的原因:

  • 特征提取的计算量太大,特征提取效率太低,而特征提取的效率直接影响到整个文本分类系统的效率;
  • 经过特征提取后生成的特征向量维数太高,而且不能直接计算出特征向量中各个特征词的权重。

目前使用评估函数进行特征选取越来越普遍,特征选取算法通过构造一个评估函数的方法,选取预定数目的最佳特征作为特征子集的结果。在几种评估方法中,每一种方法都有一个选词标准,遵从这个标准,从文本集的所有词汇中选取出有某个限定范围的特征词集。因为评估函数的构造不是特别复杂,适用范围又很广泛,所以越来越多的人们喜欢使用构造评估函数来进行特征的选取,这些评估函数在 Web 文本挖掘中被广泛使用,特征选择精度普遍达到 70%~80%,但也各自存在缺点和不足。例如,“信息增益”考虑了单词未发生的情况,对判断文本类别贡献不大,而且引入不必要的干扰,特别是在处理类分布和特征值分布高度不平衡的数据时选择精度下降。“期望交叉熵”与“信息增益”的唯一不同就是没有考虑单词未发生的情况,因此不论处理哪种数据集,它的特征选择精度都优于“信息增益”。与“期望交叉熵”相比,“互信息”没有考虑单词发生的频度,这是一个很大的缺点,造成“互信息”评估函数经常倾向于选择稀有单词。“文本证据权”是一种构造比较新颖的评估函数,它衡量一般类的概率和给定特征类的条件概率之间的差别,这样在文本处理中,就不需要计算 W 的所有可能值,而仅考虑 W 在文本中出现的情况。“优势率”不像前面所述的其他评估函数将所有类同等对待,它只关心目标类值,所以特别适用于二元分类器,可以尽可能多地识别正类,而不关心识别出负类。从考虑文本类间相关性的角度,可以把常用的评估函数分为两类,即类间不相关的和类间相关的。

“文档频数”(DF) 是典型的类间不相关评估函数,DF 的排序标准是依据特征词在文档中出现篇数的百分比,或称为篇章覆盖率。这种类型的评估函数,为了提高区分度,要尽量寻找篇章覆盖率较高的特征词,但又要避免选择在各类文本中都多次出现的无意义高频词,因此类间不相关评估函数对停用词表的要求很高。但是很难建立适用于多个类的停用词表,停用词不能选择太多,也不能选择太少,否则都将会影响特征词的选择。同时,类间不相关评估函数还存在一个明显的缺点,就是对于特征词有交叉的类别或特征相近的类别,选择的特征词会出现很多相似或相同的词条,造成在特定类别间的区分度下降。类间相关的评估函数,例如期望交叉熵、互信息、文本证据权等,综合考虑了词条在已定义的所有类别中的出现情况,可以通过调整特征词的权重,选择出区分度更好的特征,在一定程度上提高了相近类别的区分度。但是,该区分度的提高仅体现在已定义的类别间,而对于尚未定义的域外类别,类间相关评估函数的选择效果也不理想。因此,在评估函数选择问题上,提高对域外类别文本的区分度是十分重要的研究课题。

传统的特征选择方法大多采用以上各评估函数进行特征权重的计算,由于这些评估函数是基于统计学的,其中一个主要缺陷就是需要用一个很庞大的训练集才能获得几乎所有的对分类起关键作用的特征.这需要消耗大量的时间和空间资源,况且构建这样一个庞大的训练集也是一项十分艰巨的工作。然而在现实应用中,考虑到工作效率,不会也没有足够的资源去构建一个庞大的训练集,这样的结果就是:被选中的甚至是权重比较高的特征,可能对分类没有什么用处,反而会干涉到正确的分类;而真正有用的特征却因为出现的频率低而获得较低的权重,甚至在降低特征空间维数的时候被删除掉了。基于评估函数的特征提取方法是建立在特征独立的假设基础上,但在实际中这个假设是很难成立的,因此需要考虑特征相关条件下的文本特征提取方法。

4. 词向量的应用

特征选择也可以通过用映射或变换的方法把原始特征变换为较少的新特征。上面提到的特征选择模块,在实际情况会碰到这样的问题:无论是采用文档频率、信息增益法、互信息法等得降维方法,都会损失了部分的文档信息。以文档频率为例,在特征选择过程中由于某些关键的词语低于了人为设定的阈值,所以会被直接忽视掉,而很多情况这部分词汇能包含较多的信息,对于分类的重要性比较大。怎么能够进一步理解这部分的信息,是急需要解决的问题。一个想法是找到这些使用频率比较低的词语相似的高频词,譬如在讨论“月亮”的古诗词中,包含了很多低频的同义词,如“玉兔”,“婵娟”等,如果我们能把这些低频的词语合并到一个维度,无疑是能够增强分类系统对文档的理解深度的。词向量这一概念能够有效地表示词语之间的相似性,适用于这种方法。

先介绍一下词向量的定义。一种最简单的词向量是 one-hot representation,就是用一个很长的向量来表示一个词,向量的长度是词典 D 的大小 N,向量的分量只有一个为 1,其他全为 0,1 的位置对应该词在词典中的索引。这种词向量表示有一些缺点:容易受维数灾难的困扰。另一种词向量是 Distributed Representation,它最早是 Hinton 于 1986 年提出来的,可以克服 one-hot representation 的上述缺点。其基本想法是:通过训练将某种语言中的每个词映射成一个固定长度的短向量。所有这些向量构成一个词向量空间,每个向量是该空间中的一个点,在这个空间上引入距离,就可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性了。如何获取 Distributed Representation 的词向量呢?有很多不同的模型可以用来估计词向量,包括有名的 LSA、LDA 和神经网络算法。Word2Vec就是使用度比较广的一个神经网络算法实现的词向量计算工具。

现在介绍词向量在分类系统上的具体实践。Word2Vec 能够将词映射成一个固定长度的短向量,所以生成了文档集合词语的向量表示。由于向量的距离代表了词语之间的相似性,我们可以通过聚类的方法(譬如 K-Means)把相似的词语合并到一个维度,重新计算该维度的特征向量权值。相比于原来的方法,使用词向量能在一定程度保留了文档的信息。此外,Word2Vec 作为无监督学习方法的一个实现,能够允许它从无标注的文本进行训练,能进一步提升系统的性能。

另外,基于向量空间模型的文本分类方法是没有考虑到词的顺序的。基于卷积神经网络(CNN)来做文本分类,可以利用到词的顺序包含的信息。CNN 模型把原始文本作为输入,不需要太多的人工特征。下图是 CNN 模型的一个实现,共分四层,第一层是词向量层,doc 中的每个词,都将其映射到词向量空间,假设词向量为 k 维,则 n 个词映射后,相当于生成一张 n*k 维的图像;第二层是卷积层,多个滤波器作用于词向量层,不同滤波器生成不同的 feature map;第三层是 pooling 层,取每个 feature map 的最大值,这样操作可以处理变长文档,因为第三层输出只依赖于滤波器的个数;第四层是一个全连接的 softmax 层,输出是每个类目的概率。除此之外,输入层可以有两个 channel,其中一个 channel 采用预先利用 word2vec 训练好的词向量,另一个 channel 的词向量可以通过 backpropagation 在训练过程中调整。

图 3 基于卷积神经网络的文本分类算法

作者简介:张健,复旦大学计算机软件与理论硕士,现任达观数据联合创始人,曾在盛大创新院负责相关推荐模块,在盛大文学数据中心负责任务调度平台系统和集群维护管理,数据平台维护管理和开发智能审核系统。 对大数据技术、机器学习算法有较深入的理解和实践经验。

2016 年 1 月 25 日 02:4023048

评论

发布
暂无评论
发现更多内容

协同新机遇:让研发敏捷起来

人称T客

阿里P8Java架构师呕心沥血整理出来的[史上最全Java面试题精选集锦]

Java成神之路

Java 编程 程序员 面试

[翻译]Go Concurrency Patterns[Go 并发模式]

卓丁

golang Rob Pike Go Concurrency Patterns Concurrency

合约跟单app,永续合约交易所带单交易软件

13823153121

XSKY ClickHouse如何实现存算分离

XSKY融合存储

边缘计算,如何啃下集群管理这块硬骨头?

BoCloud博云

云计算 容器 边缘计算 PaaS 博云

[翻译]The Go scheduler[Go调度]

卓丁

golang golang调度 Go scheduler

工作好多年有可能还未真正了解接口和抽象类

架构师修行之路

接口 抽象

MySQL高性能架构设计原则

李浩宇/Alex

物联网通信技术最全科普!你一定要了解的NB-IoT

华为云开发者社区

物联网

使用开源软件构建工业互联网的平台

刘旭东

工业互联网 Odoo thingsboard

阿里年薪百万的P7架构师简历都长什么样?他们都是怎么学习的?

周老师

Java 编程 程序员 架构 面试

Polkadot初识,不止于跨链

QTech

polkadot 跨链

indexOf原理,Java,javascript,python实现

叫练

算法

大厂运维必备技能:PB级数据仓库性能调优

华为云开发者社区

架构 数据

当心这些“坑”!阿里云服务器部署前后端分离项目

麦洛

nginx 前后端分离 跨域

未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

程序员内点事

Java RabbitMQ mqtt

市值做市机器人,操盘做市系统搭建

13823153121

架构师训练营作业(大数据与机器学习)

qihuajun

CSS常用样式——绘制单(双)箭头的多种方法(2)

程序员学院

CSS html 程序员

Redis 哨兵模式

是老郭啊

redis redis哨兵模式 redis哨兵 redis哨兵集群

筹备半年时间,四面阿里终于如愿拿到P7级offer【Java岗】。

Java成神之路

Java 编程 程序员 面试

模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

Java架构师迁哥

20张图,大学四年都没整明白的操作系统就这么学会了

小Q

Java 程序员 架构 操作系统

“新基建”与“双循环”的二重奏:2020服贸会靠什么推动经济复苏

脑极体

呕心沥血,整理200+最新面试题,面试之前看一下,事半功倍

小Q

Java 学习 程序员 架构 面试

一步搞定任意圆角背景

mengxn

android xml 圆角

甲方日常10

句子

工作 随笔杂谈 日常

【万字长文】探讨可信构架之道

华为云开发者社区

架构 服务端

教师节特别活动:第四范式多项自研技术及其应用实践分享

天枢数智运营

人工智能 推荐系统 第四范式 个性化推荐

LeetCode题解:225. 用队列实现栈,两个队列,压入 -O(1), 弹出 -O(n),JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

文本数据的机器学习自动分类方法(上)-InfoQ