当前位置:文档之家› 基于Python的中文文本分类的实现

基于Python的中文文本分类的实现

DOI:10.16707 ̄.cnki.fjpc.2016.12.003 箍…一缝 一…鸭,…碴~ …,一…… , 一一 UJlA C0 P jT鞲鞴 基于Python的中文文本分类的实现 廖一星,严素蓉 (浙江财经大学东方学院浙江海宁314408) 【摘要】随着网络技术的迅猛发展,中文文本的自动分类成为了一个重要的课题。文章基于Python实现了中文文 本的自动分类,实现过程比较简单,分类效果良好。 【关键词】Python;中文;文本分类;实现 1引言 随着网络和信息技术的迅猛发展,网络上出现的文档越来 越多,数量越来越大,如何对网络上的大量文档进行自动分类, 成为了一个重要的研究方向。 Python语言是一种简单但功能强大的编程语言,其自带的 函数非常适合处理语言数据_】l。Python具有许多特点,使得该语 言在文本分类等计算领域有广泛应用。Python语言具有良好的 可读性,内置常用的数据结构与算法,丰富和强大的标准库和 第j方庠,以及良好的嵌入扩展与“胶水”能力,使得文本分类 的需求得以顺利实现[21。 本文基于Python语言,结合第三方库jieba和skleam库, 实现中文文本的自动分类。 2文本分类 文本分类过程…般包括文本预处理、特征选择、特征权重 计算、训练和分类。下面按照文本分类的过程介绍基于Python 的中文文本分类的实现。 2.1文本预处理 进行文本分类之前,首先要对文本进行预处理,对于中文 文本分类来说,主要是分词、去停用词。 文本分词可以采用结巴分词(jieba)实现。Jieba.cut方法可 以实现文本的分词,该方法需要两个输入参数,第一个参数是 需要分词的文本,第二个参数是分词的模式。分词模式有三种: 精确模式、全模式和搜索引擎模式,默认是精确模式,适合进行 文本分析。图1显示了iieba.cut方法采用精确模式进行分词的 结果。 )’ ( te玳t 幽厦煮挣复蜮师趣黪 托孵漪{吃糟辑 鹱。 #秘§濂积也髓髓耀蕊毒谎 艚韶瞧 '∞n nt_‘咿ji -cut(eemt ̄ot) : ? 笺ji:掌 : 《 # 档 鳗.林 瓤 ∞ 、 熟 图I 结巴分词 2.2特征选择 文本分类一个十分关键的问题是特征选择,通过特征选 择,可以在原来几万甚至几十万的特征中挑选出有助于文本分 类的特征,大大降低特征空间的数量,提高文本分类速度和精 度。特征选择一般是采用某种算法对每个特征进行打分,然后按 照分值由高到低排列最后取最高分的一些特征作为特征子集。 文本分类中,通常采用文档频率、互信息、信息增益、X2统 计量、文本证据权和几率比、期望交叉熵l引等等方法进行特征选 择,它们都是以特征与类别的相关性大小作为特征评价标准 的。Skleam库提供了x2统计量的特征选择方法。 #………{Jll练样本特征向量表示…一… 基金项目:国家自然科学基金(61502414);浙江省自然科学基金(LQ14F010006) ・6・ 福建电脑I 2016年第12期 path=”stopwords.txt” stpwrdlst=readstoplist(path) vectorizer=CountVectorizer(stop—words=stpwrdlst) trainspace=vectorizer.fit_transform(train) trainspace.vocabulary=vectorizer.vocabulary—— #……一i贝0试样本特征向量表示…一… vectorizertest=CountVectorizer(vocabulary=trainspace.vocabu— lary) testspace:vectorizertest.fit_transform(test) testspace.vocabulary=trainspace.vocabulary }}一……选择K个最好的特征,返回选择特征后的数 据……… ch2=Se1ectKBest(chi2.k=5000) trainx=ch2.fit_transform(trainspace,train.1abe1) testx=ch2.transform(testspaee) 2.4特征权重 在对文本进行特征选择后,需要对选取的特征赋予一定的 权重,便于区分不同特征对于文档的重要程度。在文本处理领 域中,使用最广泛的权重计算方法是TFIDF(Term Frequen— cy*Invelse Document Frequency)权重方法。sklearn库提供了 Tfidfrransformer类,可以很方便实现特征权重的计算,下面是实 现代码。 #………一计算特征权重一…一一 tfidflransformer=TfidfTransformer() trainx=tfidftransformer.fittransform(trainx) testx=tfidftransformer.fit_transform(testx) 2.5文本分类 文本分类通常采用基于统计的文本分类方法,主要有贝叶 斯、最近邻方法、支持向量机和最大熵模型等方法。这些方法实 现机制比较简单,文本分类效果良好。本文采用贝叶斯分类器 进行分类。 贝页斯分类器是一种常用的基于概率的有导师分类器,分 类器首先利用已标注的训练集文档训练得到,然后对测试文本 集中的文本,利用已经训『练好的贝叶斯分类器,求出文本属于 某个类别的概率,公式如下所示: JdI JP( Id)oc P(9)VI P(Wd,k l9) (下转第l4页)

 ~ ~…, … L~一 11 11 N…L一…-~…^…一…… UJlAN COMpU-f 鞋鞫 病直接经济负担提供真实、完整的数据。 测算软件主要由三部分构成,一部分是数据获取模块,用 于从HIS系统中获取测算所需要的基础数据:第二部分是数据 统计和分析模块,用于实际的直接经济负担测算、统计以及相 关影响因素的分析;第三部分则是外部接口模块,用于为更多 的第三方应用提供访问接口。整个软件的系统结构如图1所 不。 首先测算系统用户发出数据获取操作命令,操作命令中可 能包办需要获取的时间段、病种、患者年龄段、性别、医保等数 据。数据获取模块接收到命令后即从HIS数据库中获取相关原 始数据,并将这些数据存于系统数据库中。统计分析模块可以 从系统数据库中获取原始数据进行统计分析,并将统计结果按 照特定的格式存储于数据库中。其他应用程序可以通过外部接 口模块调取数据库中的原始数据以及统计分析结果用于进一 步的测算、分析及研究。 数据获取模块的设计中,首先分析HIS系统所使用的数据 库系统如SQL Server、mysql、oracle等,另外需要分析各个数据 库表中的字段所代表的含义,从而根据需要建立相关视图,当 需要获取数据时,从视图中提取相应字段组合成所需要的数 据。 数据统计和分析模块中,根据所建立的测算和分析模型及 方法,设计算法,编写代码实现相应的功能,并将测算和分析结 果以友好的界面呈现,同时带有保存和打印等功能。 外部接口模块是为了预留给第三方应用,或者在进一步的 研究中提取前期的结果与数据。因为无法知道第三方应用采用 的平台和编程语言,故采用采用Web Service技术实现外部数 据接口。Web service是一个平台独立的,低耦合的,白包含的、 (上接第6贞) 基于Python的朴素贝叶斯训练和分类实现代码如下所示: clf=MuhinomialNB(alpha=0.001).fit(trainx,train.1abe1) pred=clf.predict(testx) 3实验与结果 实验采用复旦大学数据库中心提供的中文文本分类语料 库,作为训练和测试数据。该数据集包括10个类别,总共2816 篇,其中训练样本1882篇,测试样本934篇。 3.1评价方法 实验采用准确率和召回率作为文本分类的评价标准。 准确率(Precision),又称为查准率,准确率的数学公式表示 如下: 准确率=分类正确的文本数/实际分类的文本数 召回率(Recal1)又称查全率,其数学公式表示如下: 召回率=分类正确的文本数/应有的文本数 mprecision=metrics.precision—score(test.1abel,pred) m—recall=metrics.recall—score(test.1abel,pred) print"precision:{0:.40 .format(m_precision) print recall:{0:0.4f} format(m—recal1) 3.2结果与分析 从图2可以看出,基于chi2的特征选择方法以及朴素贝叶 斯分类器分类,可以取得较好的查全率和查准率,查全率和查 准率均在90%以上。 ・14・ 福建电脑I 2ol6年第12 5J] 基于可编程的web的应用程序,可使用开放的XML(标准通用 标记语言下的一个子集)标准来描述、发布、发现、协调和配置 这些应用程序,用于开发分布式的互操作的应用程序。Web Service技术,能使得运行在不同机器上的不问应用无须借助附 加的、专门的第三方软件或硬件,就可相互交换数据或集成。依 据Web Service规范实施的应用之间,无论它们所使用的语言、 平台或内部协议是什么,都可以相互交换数据。 4.结语 本文通过分析疾病直接经济负担的常规测算原理和方法, 提出了将HIS与测算软件进行无缝对接的自动化测算系统,使 得疾病直接经济负担的测算更加快速、准确、高效及个性化,为 进一步的分析和应用提供了技术支撑,为企业、医院、政府等机 构进行产品研发、医疗模式改革与创新提供了借鉴和参考。 参考文献: l 1 jC.F.Muller,”Economic costs of illness and health policy,”American joumal of public health,vo1.70,PP 1245—6,1980一Dec 1980. [2]何敏媚,何闽江,and崔斌,”疾病经济负担研究进展,”中国老年学杂 志,vo1.30,PP.2700-2702,2010 [3]O.Solli,T.Jenssen,and I S.Kristiansen,”Diabetes:cost of ilness in Norway,”Bmc Endocrine Disorders,vo1.10,Sep 20 2010. [4]B.Spaetgens,J.M.A Wijnands,C.van Durme,S.van der Linden,and A.Boonen.’’Cost of Ilness and Determinants of CosB Among Pafien ̄with Gout,”Journal ofRheumatology,vol 42,PP 335—344,Feb 2015. [5]侯儒寅and高凤清,”疾病经济负担研究方法案例分析,”中国医药导 报,vo1.09,PP.146—147,2012. [6]金新政,现代医院信息系统:人民卫生出版社,2009 4结束语 本文利用Python语言以及第三方库,实现了中文文本的自 动分类,由于sklearn库的强大功能,文本分类过程实现比较简 单,文本分类效果良好。 参考文献: [1]韦文娟,韩家新,夏海洋.基于Python自然语言处理的文本分类研究 [I].福建电脑,2016,07,4—5. [2]孙强,李建华,李生红.基于Python的文本分类系统开发研究[n计 算机应用与软件.2011,3.13—14. [3 JR0海峰,姚泽清,苏展.基于词频的优化互信息文本特征选择方法[1]. 计算机工程.2014.7(40).179—182.

相关主题