作者| AyLien
翻译| 康欣 校对| 刘熹娜 编辑| Ivy
序言
自动文档分类是一个很好的例子,说明如何善用机器学习和自然语言处理,让机器更好地处理人类语言。自动分类目的,是给一个文档或一段文字指派一个或多个类别,以方便对文档进行归类和管理。特别是对于出版社、新闻网站、博客或其他需要处理大量文字内容的人和机构来说,人工对文档,并进行分组和分类是极其耗费人力和时间的工作。
大体上讲,有两类机器学习方式:监督学习和非监督学习。监督学习方法是在“以往的观察”之上建立模型,这种“以往的观察”被称为训练集。在做文档分类时,预先定义好文档类别,再人工为训练数据集中每个文档打上类别标记。建立了训练数据集之后,接着是用这个人工标记的数据集训练一个分类器。其思想是:在训练完成后,这个分类器将能够预测任何一个给定文档的类别。
非监督机器学习方式有所不同,它们不需要训练数据集。以文档分类来说,类别是事先未知的。非监督学习方式(如聚合和话题建模),可以在一批文档中自动发现相似文档并进行分组。本文将聚焦监督分类方式的机器学习。
1
什么是分类器?
分类器的工作是生成“预测”。简明地说,当分类器对一个新文档进行分类时,它预先判定这个文档属于某个特定类别;并且,分类器通常为这个文档指定一个类别“标签”。分类器或许还会根据使用的分类算法或策略给出一个可信度,表明分类标签正确性有多高。用一个简单例子就可以很好地解释分类器是如何工作的。
2
分类器如何工作?
如前所述,分类器用于预测,以预测足球比赛是否会正常进行作为一个简单的例子,就能说明分类器如何工作。首先,我们要建立一个数据集。为此,我们需要记录室外温度并统计过去一年中给定比赛夜是否降雨,用这些记录建立一个天气情况数据集。然后,我们会根据比赛是否正常进行来“标记”这个数据集,并创建一个训练数据集用于此后的预测。
在这种情况下,我们有温度和降雨两个“特征”来帮助我们预测比赛是否会举行。如下表所示,任何比赛夜,我们可以参考表格数据来预测比赛是否会如期进行。在这个简单的例子中,如果温度低于零度且正在下雨,那么比赛很有可能会取消。
在上表中,每一列称为一个“特征”,“比赛”那一列被称为“类别”或“标签”,其下面的行都被被称为“实例”。这些实例可被理解为数据点,而数据点可视为一个向量,形如<特征1,特征2,…,特征N>。
3
文档分类简易例证
以此类推,将这种预测方法应用于文档的分类,其中的单词将被视为“特征”来预测该文档的类别。还是使用一个简单例子来说明。假设,我们的训练集中有如下三个非常简短的文档:
首先,我们要抽取训练集三个文档中的所有单词,并且据此建立一个表格(或向量):
类别:<some,tigers,live,in,the,zoo,green,is,a,color,go,to,new,york,city>
然后,我们会对每一个训练文档建立一个向量,如果这个单词存在于该训练文档,则取值为1,若不存在则取值为0,并给该文档一个适当的标记,如下所示。
当对未标记过的新文档“Orange is a color”进行分类时,我们会根据已有的类别向量对新文本的单词做标记,并为该文档生成一个单词向量:
如果,接下来将未分类文档中的向量之前三个文档类别中的向量作比较,我们会看到未知文档与类别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,国际新闻电讯评议会)的国际主题新闻编码来设定标签,我们会给一个文档同时贴两个标签,如“体育事件-世界杯”或“体育-足球”。其中,“体育”和“体育事件”是根类别,而“足球”和“世界杯”是子类别。
有大量的用于分类的算法,如支持向量机、朴素贝叶斯、决策树等,它们的所能达到的细节早已超出了本文的范围。
结论
希望你现在对文本分类的基本原理及其工作流程,有更透彻的理解。作为总结,在监督学习中,模型的建立是基于一个训练集。此后,分类器在这个手工标记过的训练数据集上进行训练,并希望可以预测任何给定文档的类别。影响预测质量最大的因素就是训练数据集的质量。
原文链接:
http://blog.aylien.com/post/104768074963/text-analysis-101-a-basic-understanding-for
大数据文摘编译者简介
刘熹娜
非典型北京姑娘,射手座,本科北二外翻译学院,研究生谢菲尔德大学国际新闻,现从事于媒体的大数据相关行业。爱一切未知事物,好奇心过剩说的就是我,希望可以和大家一起做出更好的文章。
康小欣
博士,多年从事图像及数据处理和分析、计算机视觉、模式识别、机器学习、增强现实等领域的技术研究和创新应用,现为西门子中国研究院高级研究员。希望借此平台,与大数据分析爱好者以及专家学者交流、合作。