您好,欢迎访问三七文档
文本分类的过程:(1)选择训练文本。好的训练文本对分类器的最终结果起到至关重要的作用。(2)选择文本特征。对训练样本和测试样本进行数据预处理,包括分词、去停用词、消除噪音等。目前的文本分类研究,主要选取一些具有代表性的词、词组、短语来表示文本。(3)建立文本表示模型。为了便于计算机理解和计算相关的文本属性,需要对文本进行表示,其中向量空间模型(VectorSpaceModelVSM)运用最为广泛。(4)选择分类方法。文本分类的核心部分,不同的分类方法原理不同需要处理的数据也不同。经典分类算法有朴素贝叶斯(NaiveBayesNB)、K-近邻(K-NearestNeighborKNN)、决策树(DecisionTreeDTree)、算数平均质心(ArithmeticalAverageCentroidAAC)、支持向量机(SupportVectorMachineSVM)。(5)分类结果的评估。目前主流的评估标准准确率、召回率和F1值。选择文本特征我们需要将文档转换为计算机可以衡量、运算的形式。现在运用最广泛的形式:将文档映射入向量空间。具体流程如图1。张三说的确实在理。李四买了一张三角桌子。张三/说/的/确实/在理。李四/买/了/一张/三角/桌子。对中文文档进行分词中文分词系统:盘古、Lucene张三、在理李四、三角、桌子去除停顿词在理、三角、桌子特征项提取评判的标准:信息增益、期望交叉熵互信息、开放检验这样就将一篇文章映射成了为了向量空间中的一个向量。在把文章都映射完成后,我们可以根据自己不同的需求,在向量空间中进行运算。比如计算两篇文章的相似度:我们把向量的起点都映射到原点,则我们可以比较向量的长度、向量的夹角、向量两个终点的距离等等;我们还可以宏观的观察大量的向量在向量空间中的分布情况,对大量聚集在一起的向量抽取它们的共性:计算他们的中心、他们整体的方向等。其实数学模型很好,只不过限于计算机的存储、运算水平,向量空间的维度过高、文档数量过大、计算复杂度过高会使得模型的计算机实现变得困难,我们不得不进行简化:向量空间维度降低、较低复杂度的计算分析方法等等。而根据简化的合理程度,影响我们得到的结果质量。向量空间的降维则需要进行特征项的筛选:筛选方法有五种:文档频率、信息增益、期望交叉熵、互信息、开放检验。就好像在软件开发阶段越早引入缺陷后期的Bug数量越多一样,上游的污染源造成的危害要大得多。如果我们要对数据源进行筛选,则筛选的规则一定要是非常严谨合理的,正确的数据合理的算法才有可能得到好的结果。文档频率DocumentFrequence特征在特征集中出现的文档数目过多,则不能很好的区分不同的类别;特征在特征集中出现的文档数目过少,则它不具备很好的代表性。我们统计单词的出现频率,将频率过高和过低的词语过滤掉。信息增益其中c表示文档类别t表示特征项,描述的是在特征项t的前提下确定文档属于c的概率,表征的是该文档使用特征项t来区分类别c的能力。(其实三项加和的首项不太明白什么意思,而且在特征项的筛选阶段,即尚未计算分类的情况下文档类别c是怎么回事?)这里首项表示整个事件的信息量,也可以认为它表示整个事件的未知程度,或者叫做消除整个事件的位置性,需要的信息量,比如该事件有8种等可能的情况,则我们要确定该事件具体出现哪种情况,则需要3的信息量;而若有两种等可能的情况,则要1的信息量。感性来讲,2猜1,要比8猜1容易的多。具体到公式,后边的对数部分表示信息的量化过程,说的是比如我们要表示两个数,需要一位,而要表示八个数,需要3位;因为对数函数在0~正无穷是递增函数,但在0~1之间函数值为负数,所以我们添加负号将值映射到0区间。这里互信息,表示知道某些条件之后,事情的不确定性降低的程度。衡量的是情报的优劣。举个简单的例子,这就好像我们玩竞猜游戏,随着主持人对某件事情描述信息的增多,我们渐渐可以准确判断某件事情,而主持人的描述信息中有些很关键,有些则相对平淡,这里主持人的关键描述的互信息就比较高:因为可以很大程度消除事物的不确定性。这里信息增益考虑的比较全面,它考虑了条件t发生和没有发生对整个事件的影响状况,分为两部分,第一部分为条件t发生时,对整个事件的熵的影响;第二部分为确定条件t不发生时,整个事件的熵。首先是让t发生之后,计算在t的条件下能够推断属于类别ci的概率。这里具体到文本分类则为,特征项t的出现与否,在t出现后确定这篇文章属于类别c的概率是多少。就是看t的出现对该文档属于哪一个类别的判定出现了哪些影响;并且信息增益不仅考虑可相关情况,也考虑了负相关的状况,在t确定不出现时,它对该文档的类别判定又能起到什么效果。这样综合考量t的效果。不过这里也有个问题就P(t)表示特征项的出现与否可能并不合适,这里我们可以设置阈值,具体计算出现某个次数我们认为它表示出现。至于特征项筛选中多次提到的类别c我们认为这是训练样本已知的,即有监督的分类,我们将事先分类好的样本来训练分类器,期望能够训练出好的分类器。期望交叉熵表示已知文档中出现了t特征,则能确定该文档为类别c的概率。我们能看到公式与t条件下为类别c的条件概率成正比,与无已知条件,文档为类别c的概率成反比。简单来说就是,如果公式的计算值很大,则特征t信息量很大,能够帮助我们确定该文档属于类别c这种小概率事件。(很大、很小,公式取到较大值)互信息类别c的文档集合出现特征t的文档集合类别C的文档集合出现特征t的文档集合ABCBCA两个圆我们可以把它看作两个集合,分别为类别c的文档集合以及出现特征t的文档集合,则公式中的A、B、C可以用两圆相交形成的三部分表示。可见两者相交部分越多A越大,公式的分子越大,分母越小,函数值越大。即文档c和类别t的关联程度高。开放检验ABCD这里和期望交叉熵是类似的,由三个图形形成四个集合,矩形表示整个文档集合,两个圆和上边的含义相同,分成的四个集合分别为A、B、C、D。强调的是特征的负相关特性,即表示出现特征t时,不属于类别c的概率较大。开放检验与信息增益相同,都是考虑了事物的两个方面。这里我们举例来阐述公式的由来。ABCD这里我们假设考虑词汇“篮球”和体育类新闻的关系,其中:A表示体育类新闻中出现篮球的新闻集合;B表示体育类中没有出现篮球的集合;C表示出现词汇篮球但是非体育类的集合;D表示非体育类新闻未出现篮球的集合。A+B表示体育类总数;C+A表示出现词汇篮球的总数。N=A+B+C+D这里进行测试的类别和特征项将整个文档集合划分为四个部分:ABCD。我们假设篮球特征项和体育类别并不相关,则篮球应该在体育类内外都是均匀分布的(即样本足够大的情况下,概率接近频率,篮球并不因体育类别的影响而出现更多或者更少)A-(A+C)/N*(A+B)则表示若篮球和体育无关,篮球会出现在体育类的新闻数量的数学期望,实际为A所以我们可以用实际值和数学期望之间的方差来表示,篮球和体育之间的关系。方差越大,说明篮球因为体育类而出现的次数更多,期望和实际值差距越大,相关程度越大。而开放检验不仅比较正相关的情况还比较负相关性,考虑的方面比较多,精确度也很好。B–(A+B)/N*(B+D)表示体育类占整体的百分比,而(A+B)/N*(B+D)非篮球类(B+D)中体育类数目的数学期望(依然是假设篮球和体育没有相关性,我们认为体育类文章在整体中是均匀出现的)C–(A+C)/N*(C+D)D–(B+D)/N*(C+D)这些算的都是标准差,平方之后求和得到最终的公式。分类方法:朴素贝叶斯朴素贝叶斯模型有两个假设:所有变量对分类均是有用的,即输出依赖于所有的属性;这些变量是相互独立的,即不相关的。之所以称之为“朴素”,因为这些假设从未被证实过。论文中对分类方法都是一笔带过的,对于方法的理解参考网上的帖子。天气温度湿度风向打球晴朗热高无不打晴朗热高有不打阴天热高无打下雨适中高无打下雨冷正常无打下雨冷正常有不打阴天冷正常有打晴朗适中高无不打晴朗冷正常无打下雨适中正常无打晴朗适中正常有打阴天适中高有打阴天热正常无打下雨适中高有不打上边为根据天气状况记录的打球日志,现在已知“晴朗、气温冷、湿度高、有风”,求打球和不打球的概率。我们将已知条件记为E,E1=晴朗,E2=冷,E3=高,E4=有下边为条件概率的推倒过程:假设A、B相互独立(朴素贝叶斯的第一个假设),则有:我们得到条件概率公式:现在已知E求打球和不打球的概率,即可表示为在指标相互独立的情况下,且结果对四个指标同等依赖(权值都为1)时(朴素贝叶斯的两个假设)即E1~E4依次发生,展开为联乘的形式。得到了朴素贝叶斯的公式。这里的计算需要在已知打球的情况下计算天气为晴朗的条件概率等。这里我们将日志整理为便于阅读的形式。打球不打打球不打晴朗23高22高阴天40适中42中下雨32低31天气温度湿度P(yes|E)*P(E)=2/9*3/9*3/9*3/9*9/14这就是朴素贝叶斯的基本内容,当然我们在运用它的时候,要牢记它的两个假设,就好像没有绝对的自由一样,朴素贝叶斯的应用也基于一定的前提。而结果依赖所有的指标在实际生活中极有可能不成立,比如我们选择的某个指标对结果具有指导意义的,则这便不再是等概率事件(结果平等的依赖各项指标)。比如我们计算“阴天时打球的概率我们发现为4/4概率为1”阴天完全确定打球,与假设不相符。这是如果我们要运用朴素贝叶斯方法,则需要处理数据的锯齿问题。我们需要平滑数据(4~0的变换更加缓和,比如变成4.1~0.2)。拉普拉斯估计最为简单古老,而Good-Turing则平滑效果较好。再有就是图中举例的数据类型都是离散的,例如我们将温度归为“高中低”三类,而更加实际的情况为温度的取值是连续的变量。这是我们通常则假设数值属性的取值服从正态分布。朴素贝叶斯在文档分类中应用具体公式表示为:即给定一篇文档d,计算它是类别cj的概率等于类别cj在训练文档中的概率与文档d中特征k在类别cj中出现的概率之积。除了朴素贝叶斯的两个假设,这里依然平等的对待每个特征k(每一项权重都为1)。但是在实际的文档当中,不同的特征项出现的频数不同,重要程度不同,再有k不应该是简单的遍历,举个例子,比如说某个特征项如果在文档d中仅出现过一次,但是在类别cj中该特征项多次出现,则计算时概率值偏大与实际值不符,出现了分类误差。所以应该是选取文档中具有代表性的(出现频数高与某个阈值的特征项)进行计算;或者针对不同的特征项进行权重的计算:特征k在文档中出现的频数/特征项在类别cj中在每篇文章中平均出现的频数。感性的描述该分类方法的话:我认为它使用一组指标(一组特征项及其出现的频数)来描述一个事物(文档类别)。对于未知的事物(测试文档),我们知道它的描述信息,或者它相应的指标描述(特征项及其出现的频数),通过指标的相应对比,我们判断未知文档和该类别的相似度,从而为判断未知文档的类别提供线索。分类方法:K-近邻基本思路为将所有样本映射到一个空间内,然后通过相似度的计算比较与测试样本最近似的K个样本,选择这K个样本属于类别最多的那个类别。针对不同的训练集合,选定映射空间与选择合适的特征和阈值K是很重要的工作。分类方法:支持向量机支持向量机方法建立在统计学习理论的VC维理论和结构风险最小的理论基础上,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折中,以期获得最好的推广能力(泛化能力)。支持向量机VC维理论结构风险最小理论模型的复杂性(即对特定训练样本的学习精度)学习能力(无错误地识别任意样本的能力)获得最好的泛化能力VC维是对函数类型的一种度量,可以简单理解为问题的复杂程度。VC维越高,一个问题就越复杂。结构风险1风险机器学习本质上就是一种对问题真实模型的逼近(我们选择一个我们认为比较好的近似模型,这个近似模型就叫做一个假设)。因为真实模型不知道,所以我们不知道我们的假设与问题真实解之间有多大差距。就好比问题的真实模型是椭圆,我们可以用矩形逼近它,或者我们用圆形去逼近它,这都是可行的近似模型。我们
本文标题:文本分类的常见方法
链接地址:https://www.777doc.com/doc-2337859 .html