使用kNN Model对文本进行自动分类.docx

上传人:b****5 文档编号:2796953 上传时间:2022-11-15 格式:DOCX 页数:15 大小:498.69KB
下载 相关 举报
使用kNN Model对文本进行自动分类.docx_第1页
第1页 / 共15页
使用kNN Model对文本进行自动分类.docx_第2页
第2页 / 共15页
使用kNN Model对文本进行自动分类.docx_第3页
第3页 / 共15页
使用kNN Model对文本进行自动分类.docx_第4页
第4页 / 共15页
使用kNN Model对文本进行自动分类.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

使用kNN Model对文本进行自动分类.docx

《使用kNN Model对文本进行自动分类.docx》由会员分享,可在线阅读,更多相关《使用kNN Model对文本进行自动分类.docx(15页珍藏版)》请在冰豆网上搜索。

使用kNN Model对文本进行自动分类.docx

使用kNNModel对文本进行自动分类

使用kNNModel对文本进行自动分类

UsingkNNmodelforautomatictextcategorization

SoftComput(2006)10:

423–430

GongdeGuo·HuiWang·DavidBell

YaxinBi·KieranGreer

摘要kNN分类器和Rocchio分类器,在这两个著名的基于相似度学习方法的文本分类上做了一项研究,在鉴别了每项技术的短处和长处后,提出一个基于kNN模型的新分类器,称为kNNModel,它结合了kNN和Rocchio的优点。

文章描述了这个文本分类的原型,它同时实现了kNNModel、kNN和Rocchio。

在两个常用的文本集(20-newsgroup和Reuters-21578数据集)上对不同的方法执行的实验性评价,实验结果显示所提出的基于kNNModel的方法表现超过了kNN和Rocchio,因此在一些应用上也是对kNN和Rocchio的一个不错替代方法。

关键字kNNModel,kNN,Rocchio,Textcategorization,Performance

1介绍

文本分类的任务是将文本文件指派为许多合适的类别。

这种分类处理有很多应用,例如documentrouting,文档管理,文档传播。

在传统的文档分类中,每个进来的文档都要由基于内容的域专家手工分类,完成这个任务需要大量的人力。

为了促进文本分类的处理,就需要自动分类方案,其目标是建立可以用于将文本自动分类的模型。

已经有很多方法应用于文本分类,如NaïveBayes盖然性分类器(NaïveBayesprobabilisticclassifiers)[2],决策树分类器(Decisiontreeclassifiers)[3],判断规则(Decisionrules)[4],回归方法(Regressionmethods)[5],神经网络(Neuralnetwork)[6],kNN分类器(kNNclassifiers)[5,7],支持向量机(SupportvectormachineSVM)[8,9],Rocchio分类器(Rocchioclassifiers)[10,11]。

在许多应用中,例如,动态挖掘大型网页仓储(largewebrepositories),这些方案的计算效率通常被作为关键因素被考虑,Sebastiani在他的文本分类研究中指出这一点[12]。

在这些方法中,kNN和Rocchio被频繁的用到,并且它们都是基于相似度的(similarity-based)。

kNN算法使用整个训练实例作为计算相似度的依据。

对于一个要被分类的新文档dt离它最近的k个邻居被检索出来,这样形成dt的k个邻居,邻居间对dt的多数投票以决定它属于哪一类。

然而,使用kNN,我们需要选择一个合适的k值,成功的分类非常依赖于这个值。

此外,kNN是一个懒惰的学习方法(lazylearningmethod),因为它不需要建立学习模型,并且所有的计算都几乎集中在分类阶段,这也阻止了它应用于效率要求较高的领域,如动态挖掘大型网页仓储。

然而kNN在文本分类上的应用从很早[12]就开始了,并且被评价为在路透社新闻专线故事(一个基本数据集)上用于文本分类是最有效的方法。

Rocchio方法在一定程度上可以处理这些问题。

在它最简单的方式下,它通过总括实例对每个类别的贡献,使用泛化的实例(generalizedinstances属于一个类别实例的平均权值形成这个类的一个泛化的实例)作为模型来代替整个训练实例。

这种方法高效并且容易实现,因为学习一个分类器基本上可以归结为求平均权值,对一个新实例进行分类仅需要计算新实例和泛化实例之间的内积。

它是个基于相似度的算法,因为它使用这些泛化的实例作为计算基于内积的相似度。

此外,Rocchio方法通过概括实例对每个类别的贡献能够在一定程度上处理噪声数据。

例如,如果一个特征主要出现在一个特定的类的许多实例中,它在泛化的实例中将会对应一个较大的权值;同样,如果一个特征主要出现在其他类别的训练实例中,它在泛化的实例中权值将会趋于零[1]。

因此,Rocchio方法可以在一定程度上过滤掉某些不相关的特征。

另一方面,Rocchio分类器的一个缺点是它限制了前提条件来设置线性可分的超平面,在这方面Rocchio算法比kNN算法[1]来的不给力。

由Lametal.[1]提出的泛化的实例集算法(generalizedinstancesetalgorithm)以试图克服kNN算法和线性分类器的缺点。

它的主要思想是算法为每个类构造了不止一个泛化的实例,而不像Rocchio方法那样在线性分类器中为每个类构建仅有一个泛化实例。

但是这种方法仍然存在一些缺点,其中一个是合适的k值很难选取和被选择用来构造每个局部泛化实例的正例的顺序,因为泛化实例集方法的性能依赖于它们;其它的主要缺点是在获得一个泛化实例后从训练集中去除最高k个实例将直接影响进一步泛化实例的计算。

这些问题可能使得泛化实例集方法在实际应用中难以实行。

在认出每种技术的长处和短处后,我们提出一个新方法,称为kNNModel-based算法,简称为kNNModel,它结合了kNN和Rocchio分类器的优点。

所提出和方法和kNN、Rocchio算法一起被实现并集成到我们的文本分类原型中。

我们实验性地在两个文档集上评估了kNNModel,这两个文档集是20-newsgroup集和ModApte版的Reuters-21578新闻故事集,用重采样的t测试对比了它和kNN、Rocchio的实验结果。

文章的下面组织如下:

第二部分描述文本分类的体系结构和各组件的功能,也即我们的实现的原型。

第三部分介绍所提出的文本分类kNNmodel-based算法。

在第四部分中则是阐述实验性的结果和讨论。

第五部分总结全篇,并指出现存的一些问题和进一步的研究方向。

2文本分类的体系结构

在这一部分中,我们给出文本分类体系结构的一个概述并描述每个部分的功能。

文本分类通常由以下三个关键部分组成:

数据预处理、分类器构造和文档分类。

数据预处理实现了将原始文档转换成压缩文档表示的功能,并将统一地用于训练、验证和分类的各个阶段。

分类器构造实现了从训练集中归纳学习的功能,而文档分类则实现了文档分类的功能。

这三个部分在一起组成了文本分类。

下图Fig.1显示了文本分类体系结构总揽的原型。

虚线箭头表示分类过程的数据流,而实线则代表分类器构造过程的的数据量。

文本预处理,分类器构造和文档分类这三个部分将在下面几个小节中详细阐述。

2.1数据预处理

数据预处理是文本分类的一个基本部分,一般由六个子部件组成,它包括文档转换、功能词去除、词后缀删除、特征选择、字典构造、特征权值化。

在我们的原型中实现的每个组件的功能描述如下:

1.文档转换(Documentconversion)将不同类型的文档如XML、PDF、HTML、DOC等格式转换成普通的文本格式;

2.功能词去除(Functionwordremoval)将文档中的冠词、介词、连接词等删除掉;

3.词后缀规范化(Wordstemming)标准化词的后缀,例如将labelling转换成label,introduction转换成introduct。

4.特征选择(Featureselection)通过删除不相关或相关性小的特征来减小数据空间的维度。

在我们的原型中,我们选择信息增益(InformationGain)作为特征选择的标准。

5.词典构造(Dictionaryconstruction)构造一个统一的词典,用来作为将文档转换成特征向量的的参照。

向量中的每个特征对于词典中的一个词。

6.特征权值化(Featureweighting)在词典中,给每个词指派不同的权值。

我们使用标准化的特征频率联合倒转文档频率(termfrequencycombinedwithinversedocumentfrequencyTFIDF)作为我们文本分类原型的权值化功能。

信息增益和TFIDF功能分别定义如下:

在公示1中,P(t,c)是特征t出现在类别c的文档中的概率,P(t)是特征t出现在出现在文档中的概率,P(c)是文档属于类别c的概率。

在公式2中#(tk,di)是特征tk在文档di中出现的次数,#Tr(tk)是特征tk的文档频率,即特征tk在训练集文档Tr中的频率,|Tr|是训练集中的文档数。

Γ是至少出现在训练集中的一篇文档中的特征集合,wki是正规化的特征权值。

在数据预处理的最后,每篇文档都被转换成压缩的表现形式(特征权向量),并将被用于训练、验证和分类阶段。

2.2构造分类器

分类器的构造是文本自动分类的关键部分。

这部分的角色是通过学习预定义的文档来建立分类器,用来对未知的文档进行分类。

在我们的文本分类原型中,我们实现了三个分类算法:

kNN、Rocchio和kNNModel,除了我们将在第三部分介绍的kNNmodel-based算法,下面对每个算法作简单的描述。

2.2.1kNN算法

kNN是一个基于相似度的学习算法,并且由于它在包括文本分类的许多问题领域内非常有效而为人所熟知[5,7]。

给定一个测试文档dt(表示成词的权值向量)并选择好相似度度量,通过计算它与训练集中其他文档的相似度,kNN算法查找离他最近的k个邻居,由此形成dt的邻近的邻居,邻居里不同类的文档之间的权值投票以决定dt的类别。

2.22Rocchio算法

Rocchio方法即一个线性分类器。

给定一个训练集Tr,通过下面的公式,它直接对类别ci计算其泛化的实例Vci=(w1i,w1i,……,w|Γ|i)

i=1,2,……,m,m是训练集中的类别数。

在公式4中,Tci是属于类别ci的文档集合,

是不属于类别ci的文档集合,#Tci是Tci中的文档数。

另外,δ是用来设置不属于类ci文档相对重要性的参数控制。

如果δ=0,Vci概括着训练集中属于类ci的质心。

给定一个测试文档dt,Rocchio分类器计算dt和每一个泛化的实例之间的内积,并将dt分类到与dt距离最近的一个泛化的实例类别。

2.3文档分类

文档分类部分直接使用分类器构造阶段创建的模型对新文档进行分类。

对于kNN我们使用整个训练集来提供作为分类依据。

所有需要分类的文档必须先经过预处理,就像分类器构造阶段一样。

3kNNmodel-based算法

3.1kNNModel概念

kNN对于文本分类来说是一个简单有效的方法,然而,标准的kNN是基于实例的学习方法,它保持着所有的训练数据来进行分类。

这阻止了它在许多场合的应用,如动态网页分类。

提高其效率的一种方法是找出整个训练数据的一些代表来进行分类,例如,从训练集中建立一个典型的学习模型(代表的集合),并使用这个模型来进行分类。

这就是我们建立一个kNNmodel-base方法来提高其效率同时保持分类精确度的动机。

从另一方面来说,Rocchio方法非常有效,因学习一个分类器归结为给每个类建立一个泛化的实例,并用以作为分类的依据。

Rocchio为人熟知的一个缺点是它线性地划分实例空间的特性。

如图Fig.2所示,加号和圆圈分别代表两类不同类别的实例,小方块代表“加号”泛化出的实例,由于“加号”类出现在不相交的群体中,导致Rocchio方法建立的分类器失去了它们的大部分,因为这些实例的质心可能会超出这些群。

克服这个缺点的一个方法是为一个类建立多个局部代表,每个类的代表数依赖于给定的训练集的数据分布。

图Fig.3阐明了kNNModel对“加号”类的建模。

注:

为了简化描述,文档相似度(以及下面的图示说明)用欧几里得距离

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1