目前最流行的算法思想包含如下两大流派:基于概率论和图论的概率图模型;基于人工神经网络的深度学习理论。
4.1概率论回归
4.1.1 多元概率论的几个基本概念
4.1.2 贝叶斯与朴素贝叶斯算法
朴素贝叶斯理论源于随机变量的独立性,之所以称之为朴素是因为其思想基础的简单性:就文本分类而言,从朴素贝叶斯的角度来看,句子中的两两词之间的关系是相互独立的,即一个对象的特征向量中每个维度都是相互独立的。这是朴素贝叶斯理论的思想基础。
朴素贝叶斯分类流程:
第一阶段,训练数据生成训练样本集:TF-IDF
第二阶段,对每个类别计算p(yi)
第三阶段,对每个特征属性计算所有划分的条件概率
第四阶段,对每个类别计算p(x|yi)p(yi)
第五阶段,以p(x|yi)p(yi)的最大项作为x的所属类别。
4.1.3 文本分类
1.One-Hot表达
文本分类的结构化方法是One-Hot表达模型。它是最直观,也是目前为止最常用的词表示方法,虽然越来越多的实践已经证明,这种模型存在局限性,但它仍在文本分类中得到广泛的应用。
假设把语料库中的所有词都收集为一个词典D,词典容纳了语料库中所有句子的词汇。One-Hot方法就是把每个词表示为一个长长的向量。这个向量的维度是词典大小,其中绝大多数元素是0,只有一个维度的值为1.这个维度就代表了当前的词。
例如:
文本1: My dog ate my homework
文本2: My cat ate the sandwich
文本3: A dolphin ate the homework
这三个文本生成的词典共有9个词,[a, ate, cat, dolphin, dog, homework, my, sandwich, the]
这“a” -> [1,0,0,0,0,0,0,0,0]
则
文本1为 [0,1,0,0,1,1,1,0,0]
文本2为 [0,1,1,0,0,0,1,1,1]
文本3为[1,1,0,1,0,1,0,0,1]
One-Hot的特点是相互独立地表示语料中的每个词。词与词在句子中的相关性被忽略了,这正符合朴素贝叶斯对文本的假设。
2.权重策略: TF-IDF方法
由One-Hot向量形式构成的句子就是一个词袋模型,它将文本中的词和模式串转换为数字,而整个文本集也都转化为维度相等的词向量矩阵。
文本1为 [0,1,0,0,1,1,1,0,0] 尽管有两个my,但二元向量表示中仍然是1
文本2为 [0,1,1,0,0,0,1,1,1]
文本3为[1,1,0,1,0,1,0,0,1]
这种方式的问题忽略了一个句子中出现多个相同的词频信息,增加这些词频信息,就变成了整数计数方式。使用整形计数方式的词向量表示如下:
文本1: [0, 1, 0, 0, 1, 1, 2, 0, 0] (my出现两次)
文本2: [0, 1, 1, 0, 0, 0, 1, 1, 1]
文本3: [1, 1, 0, 1, 0, 1, 0, 0, 1]
对整形计数方式进行归一化。归一化可以避免句子长度不一致问题,便于算法计算,而且对于基于概率算法,词频信息就变为了概率分布。这就是文档TF信息,即:
文本1: [0, 1/5, 0, 0, 1/5, 1/5, 2/5, 0, 0]
文本2: [0, 1/5, 1/5, 0, 0, 0, 1/5, 1/5, 1/5]
文本3: [1/5, 1/5, 0, 1/5, 0, 1/5, 0, 0, 1/5]
但是这里还有一个问题,如果体现生成的词袋中的词频信息呢?
原信息:a(1),ate(3),cat(1),dolphin(1),dog(1),homework(2),my(3),sandwich(1),the(2)
注意:由于词袋收集了所有文档的词,这些词的词频是针对所有文档的词频,因此,词袋的统计基数是文档。
词条的文档频率:a(1/3),ate(3/3),cat(1/3),dolphin(1/3),dog(1/3),homework(2/3),my(3/3),sandwich(1/3),the(2/3)
词袋模型的IDF的权重如下:
IDF: a log(3/1),ate log(3/3), cat log(3/1),dolphin log(3/1), dog log(3/1),homework log(3/2),my log(3/2),
sandwich log(3/1),the log(3/2)
TF-IDF权重策略:计算文本的权重向量,应该选择一个有效的权重方案。最流行的方案是对TF-IDF权重的方法。TF-IDF的含义是词频-逆文档频率,其含义是如果某个词或短语在一篇文章中出现的品类TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF-IDF的假设是,高频率词应该具有高权重,除非它也是高文档频率。逆文档品类就是使用词条的频率来抵消该词的词频对权重的影响,而得到一个较低的权重。
词频(Term Frequency, TF)是指一个给定的词语在该文件中出现的频率。这个数字是对词数(Term Count)的归一化,以防止它偏向长的文件。对于在某一特定文件中的词语来说,它的重要性可表示为:
TFij = nij/(Σ(k) nkj)
上式中分子是该词在文件中的出现次数,而分母是在文件中所有字词的出现次数之和。
逆向文件频率(Inverse Document Frequency, IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件除以包含该词语之文件的数目,再将得到的商取对数得到:
IDFi = log(|D|/|{j:ti∈dj}|)
为了防止分母为0的情况发生,一般使用1+|{d∈D:t∈d}|作为分母;然后再计算TF和IDF的乘积。
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,TFIDF(ij)=TF(ij)I * IDF(ij)可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
TF-IDF的应用(参考http://www.cnblogs.com/chenny7/p/4002368.html):
找出相似文章
- 使用TF-IDF算法,找出两篇文章的关键词;
- 每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
- 生成两篇文章各自的词频向量;
- 计算两个向量的余弦相似度,值越大就表示越相似。