当前位置:首页 期刊杂志

基于NB和CHI值的农业文本分类方法

时间:2024-05-21

周云成, 许童羽, 邓寒冰

(沈阳农业大学信息与电气工程学院,辽宁沈阳 100866

我国在农业信息化发展过程中建设了大量的农业信息网站,这些网站能够为用户提供农业资讯、技术等多种类型的信息服务。但是,由于“最后一公里”和“信息不对称”等问题[1],严重影响了这些实际服务的效果。随着移动互联网的发展,通过从网站自动抓取农业信息,再个性化地推送到移动用户端可能成为未来农业信息服务的主要模式之一。其中,对农业文本信息进行良好的分类组织是重要的环节。

朴素贝叶斯(naive Bayes,简称NB)是一种常用于分类决策的机器学习方法。NB算法简单且性能优异[2],是文本分类的主要方法之一。袁方等通过人工方式,从标题、摘要及关键词中提取出类别核心词,采用NB方法对中文文本进行分类,并融合类别核心词的重要程度,提高了分类效果[3]。万狄飞等结合NB和遗传算法,对2类文本进行分类,以期提高不可靠区间的分类效果[4]。金展等采用朴素贝叶斯方法,结合支持向量机实现垃圾短信的过滤[5]。周国强等采用基于类别选择的方法选取特征词,研究了NB分类器分类朝鲜语文本的可行性[6]。王晶晶等使用NB方法,在用户名和微博文本的基础上对用户性别进行判断,取得了较高的识别率[7]。王青松等用短语而非词条作为贝叶斯分类的特征项,用于中文垃圾邮件的过滤,结果表明,以短语为特征项的过滤效果优于以词条为单位的过滤效果[8]。互联网数据正呈几何级数增长,针对大数据文本的训练和分类,张琳等探讨了在Hadoop云计算环境下基于朴素贝叶斯算法的文本分类器并行化的方法[9-10]。

文本分类的高维特征会影响分类器的训练和识别性能,通过特征降维可解决该问题,特征筛选是常用的降维方法[2]。特征筛选借助于评价函数对候选特征进行排序,然后选择若干个评分高的项组成特征向量。互信息[11]、χ2(Chi-square,简称CHI)统计量、信息增益[12]、文档频率等都可以作为评价函数使用。χ2统计方法时间复杂度低、易于理解,常用于作为特征选取的评价函数[13~15]。

目前,针对农业文本进行分类的研究相对较少,标准的农业语料库相对缺乏。本研究从经过良好分类的农业信息网站获取文档,通过净化、分词等预处理构建农业语料库,提出1种结合朴素贝叶斯和CHI值特征词选取的农业文本分类方法,重点研究特征词数量、训练样本数等对分类识别率的影响,并探讨用标题进行网页文本分类的可行性。

1 朴素贝叶斯文本分类方法

1.1 样本训练

对于样本空间D中的任意文本Di,它属于类型集合C中的某个类型Cj的概率为P(Cj|Di),则将文本Di划分为某种类型的问题可转变为寻找最大概率问题max[P(Cj|Di)]。寻找max[P(Cj|Di)]的关键是针对每种类型分别计算出P(Cj|Di)。根据贝叶斯准则,P(Cj|Di)可通过下式进行计算:

(1)

式中:P(Di|Cj)表示类型Cj中出现文本Di的先验概率;P(Cj)表示类型Cj的先验概率;P(Di)表示文本Di的先验概率。

对于给定样本空间,P(Di)为常数,因此可以通过寻找max[P(Di|Cj)P(Cj)]来代替寻找最大后验概率P(Cj|Di)。只要分别计算出先验概率P(Di|Cj)和P(Cj),问题即可得到求解。在样本空间D中,每个文本Di的类型为已知。设样本数量为N、类型为Cj的文本数量为rj,则有P(Cj)=rj/N。

文本的分类可由文本中出现的关键词条决定,称为特征词。设由w1,w2,…,wn构成样本空间D的特征词表,则农业文本Di可用1个n维特征词向量Di=[w1,w2,…,wn]表示,此时P(Di|Cj)的计算可表示为P(w1,w2,…,wn|Cj)。假设所有特征词都互相独立,则有:

(2)

式中:P(wk|Cj)表示特征词wk在类型Cj中出现的先验概率,也表示特征词wk通过类型Cj产生的概率。

P(wk|Cj)的计算可通过P(wk|Cj)=q/a完成,其中:q表示样本空间D包含的Cj类型的文本中特征词wk出现的次数;a表示Cj类型的文本中所有特征词出现的总次数。针对每种类型Cj和特征词wk都可计算出P(wk|Cj)。

当特征词项和样本数量很大时,P(wk|Cj)通常为很小的浮点数,则在计算P(w1|Cj)P(w2|Cj)…P(wn|Cj)乘积时可能由于舍入误差得到数字0。对于函数f(x),与其自然对数ln[f(x)]有相似的变化规律。因此,可通过如下公式避免该问题:

(3)

式(3)可转换为式(4):

(4)

式中:ln[P(Di)]为常数项。

只要训练样本和特征词选择合理,通过基于朴素贝叶斯的学习方法可从训练样本中学习到足够的知识,用于对未知类型的文本进行分类,P(Cj)和P(wk|Cj)即这种知识的表示形式。

1.2 文本分类

对于任何未知类型的文本dx,首先将其表示为n维向量dx=[wck],k=1,2,…,n。其中:wck表示特征词wk在文档dx中出现的次数,然后根据机器学习所获知识P(Cj)和P(wk|Cj)来计算P(Cj|dx),计算方法可表示为下式:

(5)

由于ln[P(dx)]为常数项,对计算结果的比较不产生作用,因此从式(5)中移除了该项的计算。分别对每种类型的Cj计算ln[P(Cj|dx)],其中计算结果最大的max[ln(P(Cj|dx)]对应的类型即为文本dx可能的分类。

2 基于CHI值的特征词提取

农业文本样本D中包含大量词条(称为候选词条),但部分词条对分类贡献很小,因此需要从大量候选词条中选择特征词,构成分类所用的特征词表。通过选择特征词,可大大降低特征词向量的维数,提高计算速度[13]。本研究采用基于CHI值统计量的特征词提取方法。

(6)

式中:f1表示训练样本中包含特征词wk且属于类型Cj的文本数;f2表示包含wk但不属于Cj的文本数;f3表示属于Cj但不包含wk的文本数;f4表示既不是Cj类型又不包含wk的文本数;f=f1+f2+f3+f4,表示训练样本的文本数。

可以针对每种文本类型Cj计算各个候选词条的CHI,然后按照CHI值的大小排序,并选择CHI值大的若干词条作为类型Cj的特征词集。再合并每种文本类型的特征词集构成并集,并将该并集作为农业文本分类的特征词表。

3 语料库样本获取及预处理

3.1 样本获取

大部分农业信息网站都按照板块对网页进行了较好的手工分类。本研究的训练样本采集自互联网上的农业信息网站,选取农业信息网站中常见的4种网页类型作为分类的目标类型,分别是农业资讯、农业技术、农产品市场行情和农产品供求信息。利用开源组织Apache的爬虫工具Nutch对农业信息网站的不同类型网页进行定向抓取。Nutch在网页抓取过程中能够将网页中的HTML标记及相关成分脱去,留下纯文本的文档数据。为方便对被抓取文档的进一步处理,通过Nutch的solrindex命令将所抓取的不同类型文档在Apache的开源搜索引擎Solr的不同核(core)中重建全文索引。每个网页在Solr中对应1个结构化文档(document),该文档的结构通常可用如式(7)所示的多元组进行描述:

document=(domain,host,url,id,title,content,…)。

(7)

式中:domain、host、url分别表示网页的域名、主机名、统一资源定位符(URL);id为文档在Solr中的标志,通常与url相同;title为网页的标题;content为脱去HTML相关标记的纯文本数据。

通过浏览器构造查询条件与Solr交互,可以从Solr中查询指定类型的文档集合,并将其导出为XML格式的文件,导出时只保留每个文档(document)的标题(title)和内容(content)。通过编写程序代码将导出的各个类型的XML文件导入SQL Server数据库表(pagedocs)中,其表结构可用式(8)的三元组描述:

pagedocs=(title,content,type)。

(8)

式中:type表示文档的类型。

3.2 手动文本净化

每个网页除了包含其所要表达的主旨内容之外,还有一些附加信息,如广告、网站导航、描述、脚注等。由于网页文档结构设计具有非常大的随意性,通过直接分析网页结构解析出网页主旨内容是非常困难的。本研究采用手动净化的方式对pagedocs的content进行文本净化,以去除content中除主旨内容之外的附加信息。

3.3 文本分词

分词是实现文本段落到词条的转换过程。本研究选用Lucene中的中文分词工具包smartcn对文本进行分词。Lucene是Apache管理下的重要全文索引项目,该项目采用Java实现。smartcn工具包能够对中文或中英混排文本进行分词。在将文本转换成词条集合的过程中,需要完成分词、去除附加词等一系列处理过程。Lucene是通过类模块Analyzer来组织这一过程的。本研究在Analyzer的基础上派生了1个新的分析类CustomSmartCnAnalyzer,该类按照图1所示的处理流程实现文本到词条集合的转换。

HMMChineseTokenizer是smartcn包中的分词器,该分词器在词典基础上使用隐马尔科夫模型对文本进行分词。经HMMChineseTokenizer分词后形成的词条集合是一种初始集合,该集合中可能会存在对文本分类不起作用甚至是干扰分类的元素。因此该初始集合还需要进行过滤。LowerCaseFilter及接下来的多个过滤器是Lucene分析包中提供的过滤工具。LowerCaseFilter将初始集合中的英文词条全部转换成小写格式,避免农业文本中可能出现的英文词条因大小写不同而被看作不同的词条。中英文都存在着修饰句子结构的辅助词,如中文的“了”和英文的“a”,这些辅助词对农业文本的分类没有作用,同时如果辅助词是文本中的高频词,还会干扰分类。因此需要从词条集合中移除这些辅助词,这些辅助词称为停用词。StopFilter过滤器可根据为其配置的停用词表从输入词条集合中过滤掉出现在停用词表中的词条。本研究为StopFilter配置的停用词表参考了ranks.nl发布的中英文停用词表[16],并包含中文标点符号和常见特殊符号。农业文本中还可能会出现各种数字,这些数字多变,含义也各有不同,不能简单地将其归为一类。如果在词条集合中包含数字,会增加统计样本的数量,从而增加计算复杂度。通常伴随着数字的词条反映了数字的基本含义,因此词条集合中的数字词条可以移除。首先用DecimalDigitFilter过滤器将任意的Unicode数字转换成拉丁数字,然后过滤器PatternReplaceFilter通过使用正则表达式“^(-?\d+)(\.\d+)?$”,滤掉词条集合中的数字。

利用该分词方法对pagedocs中的每个文档的content和title分别进行分词,形成2个词条集,词条之间用空白符分隔,并分别存入2个文本文件,每个文档对应1行,每行最后添加该文档对应的分类。将分词后形成的2个文本文件作为本研究后续试验的语料库。

4 农业文本分类试验与结果分析

4.1 试验方法

采用Python实现了基于朴素贝叶斯的文本分类器和基于CHI值的特征词选择程序。在Lucene基础上,采用Java语言实现了中文文本分词和预处理程序。按照前文所述的样本获取方法分别从中国农业信息网、三农信息网和中国惠农网等抓取网页4 002份,其中农业资讯类(设为C1)1 046份、农业技术类(设为C2)1 068份、市场行情类(设为C3)849份、供求信息类(设为C4)1 039份。采用手动方式对网页进行了必要的净化。用中文文本分词和预处理工具对净化后的网页文本进行分词、过滤停用词和数字,生成了content和title 2个语料库。按照如下步骤进行多个农业文本分类试验:

步骤1:从语料库中随机选择一定比例的样本作为试验材料;

步骤2:从试验材料中随机选择80%的文本作为训练集,余下的文本作为测试集,即采用留存交叉验证方法来计算文本分类器的识别准确率;

步骤3:使用特征词选择程序从训练集中为每类文本类型选择一定比例(设为L)的词条作为特征词集,各个特征词集求并,构成分类用特征词表;

步骤4:以特征词表、训练集、测试集作为文本分类器的输入,分类器通过特征词表和训练集获取知识,并对测试集进行类型识别,然后输出对测试集的识别结果和识别的准确率(测试集中被正确识别的文本数占测试集文本数的比例);

步骤5:采用留存交叉验证的方法重复步骤2~4若干次(设为TC),求平均识别准确率p。

4.2 结果与分析

4.2.1 特征词分析 以content语料库中的全部文本为试验材料,由其构成的词集包括22 858个非重复候选词条。用特征词选择程序分别为content语料库中的每种类型文本(C1~C4)计算每个候选词条的CHI值,并按其降序排序。表1是文本类型C1~C4的前10个特征词。

表1 每种类型文本的前10个特征词

从表1可以看出,针对语料库中每种类型的农业文本,其CHI值排在前10的特征词没有出现交集。设CWj为文本类型Cj的按CHI值大小排序的候选词集,CWj=[wjk],j=1,2,3,4;k=1,2,…,n,n为候选词条数,Ujl为CWj的前l个元素构成的子集,即类型Cj的特征词集。根据U1l∩U2l∩U3l∩U4l=Ø,可求出表示无交集的特征词集的最大元素数量l,经计算本次试验对应的l=167,此处称Uj167=>Ujm为Cj的无交集特征词集。设dj为试验材料中Cj类型的1个文本对应的词向量,do为其他类型的1个文本词向量,若Ujm∩dj≠Ø或Ujm∩do≠Ø,则称Ujm覆盖文档dj或do,覆盖dj文本的数量占Cj文本数量的比例称为覆盖率。分别为每个Ujm计算其对该类型文本的覆盖率和其他类型文本的覆盖率,计算结果见表2。

表2 Ujm对文本的覆盖率

从表2可以看出,每个无交集特征词集Ujm对Cj类型文本的覆盖率都要明显高于对其他类型文本的覆盖率,说明Ujm在Cj类型的文本中出现的概率更高。因此,content语料库中这4种类型的文本是可分的。

4.2.2 特征词数量对识别率的影响 按照前文试验方法,在步骤1中将content语料库中的全部文本作为试验材料,在步骤3中分别为每种文本类型Cj从CWj中选取不同比例的词条作为其特征词集Ujl(L分别取0.1%、0.2%、0.5%、1%、2%、5%、10%、20%、30%、40%、50%、100%),将各个Ujl求并的结果作为特征词表,通过10次(TC=10)留存交叉验证求平均识别准确率p。按特征词选择比例L进行多次文本分类识别试验。表3是对测试集和测试集中各类型文本的识别结果。

表3 特征词选择数量对识别率的影响

由表3可以看出,通过结合朴素贝叶斯和基于CHI值的特征词选取方法,能够很好地对语料库中的4种农业文本进行分类识别。从4种类型文本的按CHI值大小排序的候选词集CWj中选择较小比例的词条构成特征词表,就能达到很高的测试集分类识别率,测试集中各文本类型C1~C4的识别率也都在93%以上。表3数据表明,随着候选词集选择比例的增加,特征词表的元素数增加,但测试集及各类型文本识别率的变化并不明显,这说明文本的分类主要由其高CHI值的少量特征词条决定。另一方面从表3也可以看出,随着候选词集选择比例的增加,文本识别率略有升高,说明按CHI值增加特征词表元素的数量并不会对文本识别率造成负面影响。

4.2.3 训练样本数量对识别率的影响 以content语料库为分析对象,在步骤1中,从语料库中分别随机选择5%、10%、20%、30%、40%、50%、60%、70%、80%、90%、100%的文本作为试验材料,在步骤3中,将训练集对应的全部候选词条作为特征词表(即L=100%),步骤4同样采用10次留存交叉验证计算平均识别率。按照从语料库中选择试验材料的不同比例进行多次学习和文本分类识别试验。图2是对测试集中的文本进行识别的结果。

图2的试验结果表明,训练样本数量对文本的识别率具有一定影响。当训练集样本数量达到600篇以上时,测试集中的文本被正确分类的概率达到95%以上,当再持续增加训练集样本数量时,测试集的识别率没有明显变化。训练样本数量对测试集中农业资讯类(图2中C1)文本的识别率具有较大影响,随着训练样本数量的增加,农业资讯类文本被正确分类的概率也逐渐提高,当训练集中农业资讯类文本超过500个时,它们被正确分类的概率可达到95%。这是因为农业资讯类文本通常涉及较多领域,分类器需要从更多的训练样本中获取知识。市场行情类(C3)和供求信息类(C4)在不同的训练样本数下均具有较高的识别率。因为C3或C4类型的文本,其文体通常比较相似,所用词条相对比较集中。

4.2.4 利用网页标题识别文本类型 从网页中提取出文本只需要对html文档的元素标记进行解析即可,但直接提取出的文本会包含一些除网页主题之外的附加信息,这些附加信息会对文本类型的识别产生干扰,甚至完全改变网页的主题。因此,在对网页文本进行分类之前需要对其进行必要的净化。然而,自动化的净化方法很难实现,这影响了对网页文本的分类。通常网页的title标记会描述一个网页的标题,该标题通常是网页主题的高度凝练。网页的标题相对于网页的主旨文本来说,更易于提取。如果利用网页标题进行网页分类是可行的,将更利于网页分类。

按前文试验方法,以title语料库为分析对象。在步骤1中,分别随机选择语料库中5%、10%、20%、30%、40%、50%、60%、70%、80%、90%、100%的文本作为试验材料。网页的标题文本相对较短,由其构成的title语料库包含5 248个非重复候选词条,数量较少,因此在步骤3中,将训练集的全部候选词条作为特征词表,即L=100%。采用10次留存交叉验证计算平均识别率。

从试验结果可以看出,当训练样本数超过600个时,对测试集进行分类的识别率可以达到95%左右(图3),这说明采用网页标题对采集自网络的文本进行分类是可行的。其中,农业资讯类(C1)的识别率较低,但当训练样本中农业资讯类文本达到150个以上时,C1被正确识别的概率仍在85%以上。另外,利用网页标题,农业技术类(C2)、市场行情类(C3)和供求信息类(C4)都有非常高的识别率。

5 结语

本研究采用朴素贝叶斯方法对农业文本进行分类,同时通过词条的CHI值计算来选择分类过程中所使用的特征词表,并用Python实现了文本分类器和特征词选择程序。利用Nutch从多个农业信息网站采集了已被良好分类的4种网页,通过对网页进行重建索引、手动文本净化等预处理形成纯净农业文档,在Lucene的中文分词工具包smartcn基础上,通过Java实现了分词工具,对农业文本进行分词处理,创建了涵盖农业咨询、农业技术、市场行情、供求信息的农业文本语料库。在该语料库的基础上,利用文本分类器和特征词选择程序进行了多种文本分类试验。

结果表明,通过结合朴素贝叶斯和基于CHI值的特征词选取方法能够很好地对农业文本进行分类,识别率较高;文本分类的正确率主要由CHI值较高的少量特征词条决定,但按CHI值降序增加特征词条的数量不会对文本识别率造成负面影响;训练样本数量对文本分类的正确率具有一定影响,为了达到较高的识别率,训练样本需要达到一定数量,然后持续增加样本量,对识别率没有明显贡献;利用网页标题对采集自网络的农业文本进行分类是可行的。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!