科普|文本分析浅析——文档分类

简介:
序言

自动文档分类是一个很好的例子,说明如何善用机器学习和自然语言处理,让机器更好地处理人类语言。自动分类目的,是给一个文档或一段文字指派一个或多个类别,以方便对文档进行归类和管理。特别是对于出版社、新闻网站、博客或其他需要处理大量文字内容的人和机构来说,人工对文档,并进行分组和分类是极其耗费人力和时间的工作。


大体上讲,有两类机器学习方式:监督学习和非监督学习。监督学习方法是在“以往的观察”之上建立模型,这种“以往的观察”被称为训练集。在做文档分类时,预先定义好文档类别,再人工为训练数据集中每个文档打上类别标记。建立了训练数据集之后,接着是用这个人工标记的数据集训练一个分类器。其思想是:在训练完成后,这个分类器将能够预测任何一个给定文档的类别。


非监督机器学习方式有所不同,它们不需要训练数据集。以文档分类来说,类别是事先未知的。非监督学习方式(如聚合和话题建模),可以在一批文档中自动发现相似文档并进行分组。本文将聚焦监督分类方式的机器学习。

0?wx_fmt=png


1 什么是分类器?


分类器的工作是生成“预测”。简明地说,当分类器对一个新文档进行分类时,它预先判定这个文档属于某个特定类别;并且,分类器通常为这个文档指定一个类别“标签”。分类器或许还会根据使用的分类算法或策略给出一个可信度,表明分类标签正确性有多高。用一个简单例子就可以很好地解释分类器是如何工作的。



2 分类器如何工作?


如前所述,分类器用于预测,以预测足球比赛是否会正常进行作为一个简单的例子,就能说明分类器如何工作。首先,我们要建立一个数据集。为此,我们需要记录室外温度并统计过去一年中给定比赛夜是否降雨,用这些记录建立一个天气情况数据集。然后,我们会根据比赛是否正常进行来“标记”这个数据集,并创建一个训练数据集用于此后的预测。


在这种情况下,我们有温度和降雨两个“特征”来帮助我们预测比赛是否会举行。如下表所示,任何比赛夜,我们可以参考表格数据来预测比赛是否会如期进行。在这个简单的例子中,如果温度低于零度且正在下雨,那么比赛很有可能会取消。

0?wx_fmt=png

在上表中,每一列称为一个“特征”,“比赛”那一列被称为“类别”或“标签”,其下面的行都被被称为“实例”。这些实例可被理解为数据点,而数据点可视为一个向量,形如<特征1,特征2,…,特征N>。


3 文档分类简易例证


以此类推,将这种预测方法应用于文档的分类,其中的单词将被视为“特征”来预测该文档的类别。还是使用一个简单例子来说明。假设,我们的训练集中有如下三个非常简短的文档:

0?wx_fmt=png


首先,我们要抽取训练集三个文档中的所有单词,并且据此建立一个表格(或向量):

类别:,tigers,live,in,the,zoo,green,is,a,color,go,to,new,york,city>


然后,我们会对每一个训练文档建立一个向量,如果这个单词存在于该训练文档,则取值为1,若不存在则取值为0,并给该文档一个适当的标记,如下所示。

0?wx_fmt=png
当对未标记过的新文档“Orange is a color”进行分类时,我们会根据已有的类别向量对新文本的单词做标记,并为该文档生成一个单词向量:

0?wx_fmt=png

如果,接下来将未分类文档中的向量之前三个文档类别中的向量作比较,我们会看到未知文档与类别2中文档的相似度最高。


未知类别文档类别与类别1的比较(6个匹配项)

< 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 >类别1

< 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0>未知类别


未知类别文档类别与类别2的比较(14个匹配项,最相似!!)

< 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0>类别2

< 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0>未知类别


未知类别文档类别与类别3的比较(7个匹配项)

< 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 >类别3

< 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0>未知类别


因此,机器很有可能将新文档标记为类别2并配以高可信度。在统计自然语言处理的方法中。这是一个非常简单常见的例子。


4 细看现实世界的文本分类


现实中的分类器由三个部分组成,接下来我们会逐一进行介绍,并对分类器的工作原理稍作解释。


1. 数据集


如前所示,统计分类方法需要人工先对一批文档标记上恰当的类别。在很大程度上,数据集的质量是一个统计自然语言处理分类器最重要的部分。


数据集需要足够大,能够为每一类别提供数量充足的文档。举例来说,你希望在文档的归类过程中有500种可能涉及到的类别,假设每个类别有100个文档,那么总共则至少需要5万个文档。


文档自动分类对数据集的质量也有很高的要求,高质量的数据集才能明显区分出不同类别文档的相互差异,清晰的划分出不同类别。


2. 预处理


在之前简单的例子中,当创建文档向量时,我们赋予每一个词同等的重要性。我们可以做某种预处理,并根据单词对于待分类分档的重要性,来赋予它们不同的权重。其中一种常用的方法是TF-IDF(term frequency-inverse document frequency, 词频-逆向文档频率)。某一个单词的TF-IDF权重,会随着这个词在一篇文档中出现的次数而增加,也会根据它在整个文档集合中出现的频率而降低。对于经常出现在整个文档集合中的词(如“a”,“it”等)来说,这样做会有效降低这类单词的综合权重。[译者注:如果某个词在一篇文章中出现的频率(TF)高,但在其它文章中的TF低,则该词就具有很好的类别区分能力,适合用来分类。]


3.分类算法及策略


在上面的例子中,我们用来分类分档的算法非常简单:通过比较文档向量中匹配项的数量,来看它与哪一个类别最为相似,并以此对文档进行分类。现实情况中,我们或许会把文档分在两个甚至两个以上的类别中,并且会在给定的类别中为一篇文档赋予多个标签。我们的分类系统还可能是多层次的结构,并因此分类器也需要在分类过程中考虑到多层次结构的因素。


举例来说,使用IPTC(International Press and Telecommunications Council,国际新闻电讯评议会)的国际主题新闻编码来设定标签,我们会给一个文档同时贴两个标签,如“体育事件-世界杯”或“体育-足球”。其中,“体育”和“体育事件”是根类别,而“足球”和“世界杯”是子类别。


有大量的用于分类的算法,如支持向量机、朴素贝叶斯、决策树等,它们的所能达到的细节早已超出了本文的范围。


结论

希望你现在对文本分类的基本原理及其工作流程,有更透彻的理解。作为总结,在监督学习中,模型的建立是基于一个训练集。此后,分类器在这个手工标记过的训练数据集上进行训练,并希望可以预测任何给定文档的类别。影响预测质量最大的因素就是训练数据集的质量。



原文发布时间为:2015-06-08

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
4月前
|
机器学习/深度学习 算法 Python
【Python机器学习】朴素贝叶斯分类的讲解及预测决策实战(图文解释 附源码)
【Python机器学习】朴素贝叶斯分类的讲解及预测决策实战(图文解释 附源码)
50 0
|
1天前
|
自然语言处理 数据可视化 算法
R语言文本挖掘、情感分析和可视化哈利波特小说文本数据
R语言文本挖掘、情感分析和可视化哈利波特小说文本数据
12 0
|
2天前
|
数据可视化 算法 数据挖掘
Python、R对小说进行文本挖掘和层次聚类可视化分析案例
Python、R对小说进行文本挖掘和层次聚类可视化分析案例
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
深入解析情感分析技术:从篇章到属性
深入解析情感分析技术:从篇章到属性
54 0
|
11月前
|
机器学习/深度学习 自然语言处理 算法
文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)
文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)
文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)
|
11月前
|
机器学习/深度学习 自然语言处理 Ubuntu
维基百科的语料库下载以及信息提取笔记
维基百科的语料库下载以及信息提取笔记
|
数据采集 机器学习/深度学习 自然语言处理
【英文文本分类实战】之三——数据清洗
【英文文本分类实战】之三——数据清洗
247 0
【英文文本分类实战】之三——数据清洗
|
机器学习/深度学习 存储 自然语言处理
文本分类毕设:基于python实现的上市公司新闻文本分析与分类预测
文本分类毕设:基于python实现的上市公司新闻文本分析与分类预测
226 0
|
机器学习/深度学习 算法 文件存储
ICLR2021 | 从50篇投稿,看模型搜索最新进展
他们提出一种称为FTSO的方法,通过分别搜索网络拓扑和运营商,将NAS的搜索时间从几天缩短至0.68秒,同时在ImageNet上实现76.42%的测试精度,在CIFAR10上实现97.77%的测试精度。
ICLR2021 | 从50篇投稿,看模型搜索最新进展
|
数据可视化 数据挖掘 Python
数据分析案例-文本挖掘与中文文本的统计分析
数据分析案例-文本挖掘与中文文本的统计分析
174 0
数据分析案例-文本挖掘与中文文本的统计分析