写点什么

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

  • 2016-01-25
  • 本文字数:5797 字

    阅读完需:约 19 分钟

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

本文为第二部分,着重介绍特征向量权重的影响因素以及样本训练和分类评估方法。第一部分内容点击此链接阅读

随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的一类。首先来回顾一下上一篇所提到的文本分类的流程,如图 1 所示,包括训练、特征抽取、训练模型、分类预测等几个主要环节。

图 1 文本分类流程图

(一):特征向量权重的影响因素

特征权重用于衡量某个特征项在文档表示中的重要程度或区分能力的强弱。选择合适的权重计算方法,对文本分类系统的分类效果能有较大的提升作用。影响特征词权值的因素包括以下几点:

1. 词频和文档频度

词频和文档频度,是特征项最重要的影响因素。文本内中的中频词往往具有代表性,高频词区分能力较小,而低频词或者示出现词也常常可以做为关键特征词。而对于文档频度这一角度,出现文档多的特征词,分类区分能力较差,出现文档少的特征词更能代表文本的不同主题。结合词频和文档频度来评估特征的重要性有较强的区分能力,它们在不同方法中有不同的应用公式,这些方法包括:绝对词频(TF)、倒排文档频度(IDF)、TF-IDF、TFC、ITC、TF-IWF,如下:

  • 绝对词频(TF):直接使用特征项在文本中出现的频度;
  • 倒排文档频度(IDF):稀有特征比常用特征含有更新的信息;
  • TF-IDF: 权重与特征项在文档中出现的频率成正比,与在整个语料中出现该特征项的文档书成反比;
  • TFC:对文本长度进行归一化处理后的 TF-IDF;
  • ITC:在 TFC 基础上,用 tf 的对数值代替 tf 值;
  • TF-IWF:在 TF-IDF 算法的基础上,用特征项频率倒数的对数值 IWF 代替 IDF,并且用 IWF 的平方平衡权重值对于特征项频率的倚重。

2. 词性

汉语言中,能标识文本特性的往往是文本中的实词,如名词、动词、形容词等。而文本中的一些虚词,如感叹词、介词、连词等,对于标识文本的类别特性并没有贡献,也就是对确定文本类别没有意义的词。如果把这些对文本分类没有意思的虚词作为文本特征词,将会带来很大噪音,从而直接降低文本分类的效率和准确率。因此,在提取文本特征时,应首先考虑剔除这些对文本分类没有用处的虚词,而在实词中,又以名词和动词对于文本的类别特性的表现力最强,所以可以只提取文本中的名词和动词作为文本的一级特征词。

3. 标题

标题是作者给出的提示文章内容的短语,特别在新闻领域,新闻报道的标题一般都要求要简练、醒目,有不少缩略语,与报道的主要内容有着重要的联系,对摘要内容的影响不可忽视。统计分析表明,小标题的识别有助于准确地把握文章的主题。主要体现在两个方面:正确识别小标题可以很好地把握文章的整体框架,理清文章的结构层次;同时,小标题本身是文章中心内容的高度概括。因此,小标题的正确识别能在一定程度上提高文摘的质量。

4. 位置

美国的 EE.Baxendale 的调查结果显示:段落的论题是段落首句的概率为 85%,是段落末句的概率为 7%。而且新闻报道性文章的形式特征决定了第一段一般是揭示文章主要内容的。因此,有必要提高处于特殊位置的句子权重,特别是报道的首旬和末句。但是这种现象又不是绝对的,所以,我们不能认为首句和末句就一定是所要摘要的内容,因此可以考虑一个折衷的办法,即首句和末句的权重上可通过统计数字扩大一个常数倍。首段、末段、段首、段尾、标题和副标题、子标题等处的句子往往在较大程度上概述了文章的内容。对于出现在这些位置的句子应该加大权重。Internet 上的文本信息大多是 HTML 结构的,对于处于 Web 文本结构中不同位置的单词,其相应的表示文本内容或区别文本类别的能力是不同的,所以在单词权值中应该体现出该词的位置信息。

5. 句法结构

句式与句子的重要性之间存在着某种联系,比如摘要中的句子大多是陈述句,而疑问句、感叹句等则不具内容代表性。而通常“总之”、“综上所述”等一些概括性语义后的句子,包含了文本的中心内容。

6. 专业词库

通用词库包含了大量不会成为特征项的常用词汇,为了提高系统运行效率,系统根据挖掘目标建立专业的分词表,这样可以在保证特征提取准确性的前提下,显著提高系统的运行效率。用户并不在乎具体的哪一个词出现得多,而在乎泛化的哪一类词出现得多。真正起决定作用的是某一类词出现的总频率。基于这一原理,我们可以先将词通过一些方法依主题领域划分为多个类,然后为文本提取各个词类的词频特征,以完成对文本的分类。可以通过人工确定领域内的关键词集。

7. 信息熵

熵 (Entropy) 在信息论中是一个非常重要的概念,它是不确定性的一种度量。信息熵方法的基本目的是找出某种符号系统的信息量和多余度之间的关系,以便能用最小的成本和消耗来实现最高效率的数据储存、管理和传递。我们将可以将信息论中的熵原理引入到特征词权重的计算中。

8. 文档、词语长度

一般情况下,词的长度越短,其语义越泛。一般来说,中文中词长较长的词往往反映比较具体、下位的概念,而短的词常常表示相对抽象、上位的概念一般说来,短词具有较高的频率和更多的含义,是面向功能的;而长词的频率较低,是面向内容的,增加长词的权重,有利于词汇进行分割,从而更准确地反映出特征词在文章中的重要程度。词语长度通常不被研究者重视,但是本文在实际应用中发现,关键词通常是一些专业学术组合词汇,长度较一般词汇长。考虑候选词的长度,会突出长词的作用。长度项也可以使用对数函数来平滑词汇间长度的剧烈差异。通常来说,长词汇含义更明确,更能反映文本主题,适合作为关键词,因此将包含在长词汇中低于一定过滤阈值的短词汇进行了过滤。所谓过滤阈值,就是指进行过滤短词汇的后处理时,短词汇的权重和长词汇的权重的比的最大值。如果低于过滤阈值,则过滤短词汇,否则保留短词汇。根据统计,二字词汇多是常用词,不适合作为关键词,因此对实际得到的二字关键词可以做出限制。比如,抽取 5 个关键词,本文最多允许 3 个二字关键词存在。这样的后处理无疑会降低关键词抽取的准确度和召回率,但是同候选词长度项的运用一样,人工评价效果将会提高。

9. 词语间关联

词汇间的关联关系对提升文本理解的深度有非常重要的影响,例如中文中存在大量的同义词,近义词,中文简称,指代等。在前文中计算词频、出现位置时,如果没有很好的考虑词语间关联,则很容易错误的识别文章的核心关键词,影响文本分类精度。

10. 单词的区分能力

在 TF*IDF 公式的基础上,又扩展了一项单词的类区分能力。新扩展的项用于描述单词与各个类别之间的相关程度。

11. 词语直径 (Diameter(t))

词语直径是指词语在文本中首次出现的位置和末次出现的位置之间的距离。词语直径是根据实践提出的一种统计特征。根据经验,如果某个词汇在文本开头处提到,结尾又提到,那么它对该文本来说,是个很重要的词汇。不过统计结果显示,关键词的直径分布出现了两极分化的趋势,在文本中仅仅出现了 1 次的关键词占全部关键词的 14.184 %。所以词语直径是比较粗糙的度量特征。

12. 首次出现位置 (FirstLoc(t))

Frank 在 Kea 算法中使用候选词首次出现位置作为 Bayes 概率计算的一个主要特征,他称之为距离 (Distance)。简单的统计可以发现,关键词一般在文章中较早出现,因此出现位置靠前的候选词应该加大权重。实验数据表明,首次出现位置和词语直径两个特征只选择一个使用就可以了。由于文献数据加工问题导致中国学术期刊全文数据库的全文数据不仅包含文章本身,还包含了作者、作者机构以及引文信息,针对这个特点,使用首次出现位置这个特征,可以尽可能减少全文数据的附加信息造成的不良影响。

13. 词语分布偏差 (Deviation(t))

词语分布偏差所考虑的是词语在文章中的统计分布。在整篇文章中分布均匀的词语通常是重要的词汇。词语的分布偏差计算公式如下:其中,CurLoc(tj) 是词汇 t 在文章中第 j 次出现的位置;MeanLoc(t) 是词汇 t 在文章中出现的平均位置。

特征权重计算方法没有最好的选择,往往要依据现实的具体场景来选取适合的方法。在进行特征权重的计算之后,已经可以把测试集数据采用机器学习方法进行分类训练。但是实际操作会遇到一些问题。单词并不都包含相同的信息。如果在一部分文件中有些单词频繁地出现,那将扰乱分类系统的分析。我们想要对每一个词频向量进行比例缩放,使其变得更具有代表性。换句话说,我们需要进行向量标准化,譬如标准化向量使其 L2 范数为 1。某种程度上,我们得到了一个在该词的信息价值上衰减的结果。所以我们需要按比例缩小那些在一篇文档中频繁出现的单词的值 。

(二):样本训练和分类评估方法

1.样本训练

1.1 文本分类算法

由于文本分类本身是一个分类问题,所以一般的模式分类方法都可以用于文本分类应用中。常用的分类算法包括:

(1) Rocchio 分类器

Rocchio 分类器的基本思想是,首先为每一个训练文本 C 建立一个特征向量,然后使用训练文本的特征向量为每个类建立一个原型向量(类向量)。当给定一个待分类文本时,计算待分类文本与各个类别的原型向量之间的距离,然后根据计算出来的距离值决定待分类文本属于哪一类别。一个基本的实现方法就是把一个类别里的样本文档各项取个平均值,作为原型变量。

(2) 朴素贝叶斯分类器

利用特征项和类别的列和概率来估计给定文档的类别概率。假设文本是基于词的一元模型,即文本中当前词的出现依赖于文本类别,但不依赖于其他词及文本的长度,也就是说,词与词之间是独立的。根据贝叶斯公式,文档 Doc 属于 Ci 类别的概率为 P(Ci|Doc)=P(Doc|Ci)*P(Ci)/P(Doc)。

(3) 基于支持向量机的分类器

基于支持向量机(SVM)的分类方法主要用于解决二元模式分类问题。SVM 的基本思想是在向量空间中找到一个决策平面,这个平面能够“最好”地分割两个分类中的数据点。支持向量机分类法就是要在训练集中找到具有最大类间界限的决策平面,如图 2。

图 2 基于支持向量机分类器原理图

(4) k- 最近邻法

k- 最近邻方法的基本思想是:给定一个测试文档,系统在训练集中查找离它最近的 k 个邻近文档,并且根据这些邻近文档的分类来给该文档的候选类别评分。把邻近文档和测试文档的相似度作为邻近文档所在类别的权重,如果这 k 个邻近文档中的部分文档属于同一个类别,那么将该类别中每个邻近文档的权重求和,并作为该类别和测试文档的相似度。然后,通过对候选分类评分的排序,给出一个阈值。

(5) 基于神经网络的分类器

神经网络是人工智能中比较成熟的技术之一,基于该技术的分类器的基本思想是:给每一类文档建立一个神经网络,输入通常是单词或者更加复杂的特征向量,通过机器学习方法获得从输入到分类的非线性映射。

(6) 决策树

决策树分类器把文本处理过程看作是一个等级分层分解完成的复杂任务。如图 3,决策树是一棵树,树的根节点是整个数据集合空间,每个分结点是对一个单一变量的测试,该测试将数据集合空间分割成两个或更多个类别,即决策树可以是二叉树也可以是多叉树。每个叶结点是属于单一类别的记录。构造决策树分类器时,首先要通过训练生成决策树,然后再通过测试集对决策树进行修剪。一般可通过递归分割的过程构建决策树,其生成过程通常是自上而下的,选择分割的方法有很多种,但是目标都是一致的,就是对目标文档进行最佳分割。

图 3 决策树实例

1.2 Ensemble 方法

我们使用上述的经典分类算法的过程中,很自然的想到一点,我们是否能够整合多个算法优势到解决某一个特定分类问题中去?答案是肯定的。通过聚合多个分类器的预测来提高分类的准确率,这种技术称为 Ensemble 方法。Ensemble 方法是提升机器学习精度的有效手段。它的基本思想是充分利用不同分类器的优势,取长补短,最后综合多个分类器的结果。

Ensemble 可以设定一个目标函数 (组合多个分类器),通过训练得到多个分类器的组合参数 (而不是简单的累加或者多数)。在 Ensemble 框架下将分类器分为两个 Level:L1 层和 L2 层。L1 层是基础分类器,前面提到的分类器均可以作为 L1 层分类器来使用;L2 层基于 L1 层,将 L1 层的分类结果形成特征向量,再组合一些其他的特征后,形成 L2 层分类器(如 SVM,AdaBoost 等)的输入。这里需要特别留意的是用于 L2 层的训练的样本必须没有在训练 L1 层时使用过。

图 4 Ensemble 框架

2. 文本分类评估

针对不同的目的,多种文本分类器性能评价方法被提出,包括召回率、正确率和 F- 测度值。设定 a 表示分类器将输入文本正确分类到某个类别的个数;b 表示分类器将输入文本错误分类到某个类别的个数;c 表示分类器将输入文本错误地排除在某个类别之外的个数;d 表示分类器将输入文本正确地排除在某个类别之外的个数。

该分类器的召回率、正确率和 F- 测度值分别采用以下公式计算:

召回率 r = a / (a + c) * 100%
正确率 p = a / (a + b) * 100%
F- 测度值 F = (2 * p * r) /(p + r)

由于在分类结果中,对应每个类别都会有一个召回率和正确率,因此,可以根据每个类别的分类结果评价分类器的整体性能,通常方法有两种:微平均和宏平均。微平均是根据正确率和召回率计算公式直接计算出总得正确率和召回率值。宏平均是指首先计算出每个类别的正确率和召回率,然后对正确率和召回率分别取平均得到总的正确率和召回率。不难看出,宏平均平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均平等考虑文档集中的每一个文档,所以它的值受到常见类别的影响比较大。

结语

如今我们正处在一个信息爆炸的时代,如何在这样一个巨大的信息海洋中更加有效的发现和使用信息以及如何利用这个信息宝库为人们提供更高质量和智能化的信息服务,是值得探讨的问题。自动文本分类技术作为处理和组织大量文本数据的关键技术,已经成为关注焦点,具有广泛的应用场景。

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

2016-01-25 19:408631

评论

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

rabbitmq原理和应用

六月的

Go RabbitMQ

grpc错误处理

六月的

gRPC 错误处理

golang中的一些实用功能

六月的

golang

一键上手时下最火AI作画工具

华为云开发者联盟

人工智能 华为云

进阶vue面试题总结

bb_xiaxia1998

Vue

etcd实现分布式锁

六月的

分布式锁 etcd

go-zero docker-compose 搭建课件服务(八):集成jaeger链路追踪

六月的

Docker-compose go-zero

golang的内存管理

六月的

golang 内存管理

golang单元测试一(简单函数测试)

六月的

golang 单元测试

租房小程序使用uniapp展示地图map

源字节1号

小程序开发

如何修改已提交commit信息

Appleex

git

vue为什么v-for的优先级比v-if的高?

bb_xiaxia1998

Vue

golang中的几种并发模式

六月的

golang 并发模式

grpc中的拦截器

六月的

gRPC 拦截器

固定QPS异步任务功能初探

FunTester

PaddleNLP基于ERNIR3.0文本分类:WOS数据集为例(层次分类)

汀丶人工智能

nlp 文本分类

golang中的变量阴影

六月的

golang

go-zero docker-compose 搭建课件服务(九):http统一返回和集成日志服务

六月的

Docker-compose go-zero

goroutine&waitgroup下载文件

六月的

goroutine waitgroup

golang中经常会犯的一些错误

六月的

golang

Git的branch操作详解

timerring

git 10月月更 branch

揭秘百度智能测试在测试评估领域实践

百度Geek说

测试 数据 企业号十月 PK 榜

golang开发一个简单的grpc

六月的

golang gRPC

100+款AI产品薅羊毛攻略(上)——轻轻松松节省几十万

夏夜许游

人工智能 阿里云 AI 视觉

golang垃圾回收

六月的

golang 垃圾回收

CORS跨域

六月的

CORS

vue组件通信6种方式总结(常问知识点)

bb_xiaxia1998

Vue

深入浅出redis缓存应用

六月的

redis

golang中的选项模式

六月的

golang 选项模式

golang中的socket编程

六月的

golang socket

golang中的errgroup

六月的

golang errgroup

文本数据的机器学习自动分类方法(下)_语言 & 开发_张健_InfoQ精选文章