我们平时使用的新闻APP,把新闻分成了不同的类别,如政治、军事、财经等。新闻数据是海量的,计算机是如何对这些新闻进行自动分类的呢?我们上节介绍过朴素贝叶斯是以水果为例讲解如何给水果自动分类,同理我们也可以用于新闻的自动分类。在对新闻进行自动分类前,我们需要先对新闻进行自然语言处理。
文本分类系统的基本框架
1、采集训练样本
对于每一个数据,我们都需要告诉计算机属于那个分类,新闻分类为例,我们需要明确告诉计算机新闻属于那个分类。训练数据的分类,相当于计算机学习的标准答案,其质量决定了学习效果的好坏。
2、自然语言预处理
如何把新闻转换为计算机可以理解的语言,这就需要自然语言处理了。自然语言处理的方法包括:词包(bag of words)、分词、词干(Stemming)、归一化(Normalization)、停用词(stopword)、同义词(Synonyms)和扩展词处理。
3、训练模型
训练模型就是利用训练数据对模型进行拟合的过程,对于朴素贝叶斯来说,就是计算先验概率和条件概率(每个分类的先验概率、每个属性的先验概率以及给定某个分类每个属性的条件概率)
4、实时预测
给定新的数据,用训练好的模型来预测其属于那个分类。对于朴素贝叶斯分类来说,就是根据给定的先验概率和条件概率,计算新数据属于某个分类的后验概率。
整个流程如图所示。
图片来源:极客时间程序员的数学基础课
朴素贝叶斯分类我们已经介绍过,本篇着重介绍自然语言处理的过程。
分词前:今天我们一起来学习计算机学科中的数学知识
分词后:今天 我们 一起 来 学习 计算机 学科 中 的 数学 知识
常见的分词算法有两种:基于字符串匹配、基于统计和机器学习。字符串匹配就是扫描字符串,如果字符串子串和词相同,则匹配成功。基于统计和机器学习分词基于人工标注的词性和统计特征,对中文进行建模,常见的模型有隐马尔可夫模型和条件随机场。关于这两种算法,以后再介绍。
2、取词干和归一化
取词干就是减少词的变化形式,将派生的词转换我基本形式,如下所示。
将am,is,are,was,were全部转换为be
将car,cars,car’s,cars’全部转换为car
番茄,西红柿
菠萝,凤梨
洋山芋,土豆
泡面,方便面,速食面,快餐面
山芋,红薯
鼠标,滑鼠
……




在新闻分类中,o是新闻,c是新闻的分类(政治、财经、军事),fi是新闻文章经过自然语言处理后的单词。P(c|o) 就是给定的新闻属于分类c的概率。用朴素贝叶斯公式我们可以计算中国 航母这两个单词属于每个分类的概率(在真实的环境中,我们会把中文分词转换为数字型ID提高计算效率)。
由计算结果可知,中国航母这两个词语属于军事、政治类新闻的可能性最大。真实的新闻包含的单词数量远远多于两个,我们将公式进行泛化处理。
某篇新闻文章可能很长,单词会比较多,而每一个p(fi|c)比较小,连续的乘积会更小,可能会小到计算机无法处理。因此实际环境中,我们需要进行数学变换比如取log,将小数转化为绝对值大于1的负数。虽然改变的概率的绝对值,但是不会改变概率的相对大小。
通过上文分析我们可以知道朴素贝叶斯模型非常适合做文章的分类,一方面单词都是离散的,非常方便计算概率,另一个方面,同一篇文章可能属于多个分类,朴素贝叶斯也可以支持这一点。
以上内容为极客时间程序员的数学基础课的学习笔记