基于SVM的文本分类系统设计与实现

 2022-01-17 11:01

论文总字数:26258字

目 录

1 引言 1

1.1 研究背景 1

1.2研究现状 1

1.3本文的主要内容和组织结构 1

2 系统设计概述 2

2.1 系统模块介绍 2

2.2核心模块(组件)概述 2

3 中英文分词 3

3.1中文和英文分词异同 3

3.2中文分词技术简介 4

3.3 NLPIR分词系统的使用 4

3.4调用实现 5

4 特征集的降维和向量表示 7

4.1 过滤处理 7

4.2特征提取 9

4.2.1相关技术简介 9

4.2.2 卡方检验 9

4.3特征权重的计算 12

4.4文本的向量表示 14

5.基于svm的训练和分类 16

5.1支持向量机概述 16

5.2线性分类原理 16

5.3核函数的原理 19

5.4松弛变量 20

5.5 多分类策略 21

6.实验与评估 21

6.1 实验准备 21

6.2 分类实验测试 21

6.2.1基于线性核分类测试 21

6.2.2通过交叉验证寻找最优的代价系数C 22

6.2.3 基于rbf核函数的分类测试 23

6.2.4增加样本后的测试 24

6.3实验结果评估 24

7.总结 24

参考文献 26

致 谢 27

基于svm的文本分类系统设计与实现

张伟

,China

Abstract:Text classification is a process of sorting multiple text documents into categories according to a given category or document similarity. The essence of text categorization is to extract certain features from the category text to match the established category rules and use match category which achieve the best match effect as the final result. The difference in this classification result arouses from the selected feature set associated with a given document and category. According to the change of the classification rules and the change of the feature selection method, the development of the text classification technology has experienced three stages: the word matching method, the knowledge engineering method and the present mainstream statistical learning method. This paper describes and analyzes a series of steps and the algorithms involved in the design and implementation of the text classification system. The support vector machine in the statistical learning algorithm is used as the classification algorithm.

Key words: Text categorization; support vector machine; Chinese and English word segmentation;

feature selection; Vector space model

1 引言

1.1 研究背景

文本分类的最初应用始于信息检索系统,为了便于人们对文本高效的进行存取和操作,面对庞大的文本数量,信息检索系统必须能够更好的管理和组织文本,以便更有效的搜索和获取准确结果,在这种需求下文本分类应用而生。之后,随着信息技术的高速发展和互联网的发明与推广普及,面对网络上愈加纷繁庞杂的信息,人们对文本分类技术的需求也在急剧增加。文本分类技技术通常应用于对文章主旨的分类。但是文本分类和网页分类属于两个不同的概念。因为网页包含大量文本内容之外的信息,比如各种连接信息,而且网站本身的主题和结构,文章的作者和格式常常可以对网页分类提供较大的作用。而文本分类只能借助于其自身的内容进行分类。文本分类技术现在已经被广泛的应用于需要同海量文本信息打交道的各个领域,如用于检索网页的搜搜引擎、各种数字图书馆对图书的分类、文档的过滤和检索以及电子邮件分类等[8]

1.2研究现状

最初的文本分类是由由人们手工进行的,随着计算机技术的发展,人们开始考虑用计算机程序来实现这个功能。关于文本自动分类的研究最早可追溯至上世纪50年代末,美国Hans Peter Luhn 首次提出了后来被广泛应用与文本处理的词频统计思想, 60年代初,maron发表了第一篇有关文本分类技术的文章。1970年,建立于统计学基础之上的的经典模型—向量空间模型vsm被Salton和他的团队提出。此时国内才有学者跟进了应用方面的研究。最早的方法比较简单,主要是通过类别名匹配和同义词处理相结合,当然这种放的应用场景比较简单,无法处理较为复杂的情况。80年代兴起了基于“知识工程”的分类技术,其核心思想是有各领域专家指定类别的规则,但由于主观性强、成本高昂且不利于推广等一系列原因,最终没有得到广泛传播。进入90年代后,机器学习的出现,以及互联网发展带来的强大需求,才使得文本分类技术真正成为了信息科学领域的一门重要学科。21世纪以来,中文自动分类技术也得到了极大的发展,但与英文文本的分类相比,主要区别是分词技术的差异[1]

1.3本文的主要内容和组织结构

本文的各个章节的组织顺序遵循了文本分类的一般步骤,将文本分类每一个主要步骤作为单独的一章来介绍,并穿插给出了相关功能的代码实现。具体各章节安排如下:

  1. 引言 介绍了文本自动分类技术的概念和发展背景,以及现状。并给出了文章的组织结构和本系统的总体。
  2. 中英文分词 介绍了一些当前常用的分词所需技术,以及一些分词软件的接口和使用方法。
  3. 特征集的降维和向量表示 介绍了对分词得到特征集的一些降维处理,主要包括去无效信息和特征提取两个阶段,此外还介绍了当前的一些特征提取技术以及各自优缺点,并给出了相关算法的代码实现
  4. 基于svm的学习和分类 介绍了分类算法svm的实现学习和分类的原理,以及libsvm的接口和使用
  5. 实验与评估
  6. 总结

2 系统设计概述

2.1 系统模块介绍

本系统中分为如下几个模块:

(1)分词模块,定义了分词器的接口,并给出了两种不同的分词组件的调用方法,分别是定义了分词器的接口,并给出了两种分词组件的实现实并给出了两种分词组件的实现,分别是Lucene下的Analyzer组件和NLPIR分词系统。默认采用NLPIR/ICTCLAS2016。

(2)组件模块,组件模块又分为公用的组件、测试组件模块和训练组件模块,主要用来实现文本分类各部分的核心功能。

(3)配置模块,定义了公共的配置类对象,以及一些定义了相关输出入输出文件的地址和常量的配置文件,便于修改。

(4)过滤器模块,定义了选择词性、去单字、去停用词等多个过滤器工具模块,定义了一些用于判断或检查判断类的函数、一些数学类计算的函数、反射工具函数以及用于排序的函数。

(5)接口模块,为了方便扩展,抽取了一些功能的共性,定义了相关接口类。

2.2核心模块(组件)概述

本系统采用java作为实现语言,提供了训练和测试两个接口类。train入口类实现了抽象父类中的抽象函数process,process函数中1.生成一个context对象,context对象中内嵌了4个对象。2.新建了四个组件类(均继承自一个实现了组件接口的抽象类)的对象,这四个组件类对象均内嵌同一个context对象,亦共享context的4个对象成员。3.调用了父类的run函数。Run函数中将组件数组中的5个组件串了起来。并依次调用各个组件的各自实现了的fire函数。其入口函数调用了父类中的start静态函数,start函数接收其子类的类对象,并通过反射类获得本类的实例,通过实例调用process方法。test入口类基本与train入口类相同,只是将EigenVectorSelector组件,替换为了EigenVectorTermVector组件,将ExportQuantizedTrainData替换为ExportQuantizedTestData。下面是6个组件中实现的主要功能的简介:

(1)BasicInfoCollect.play() :,通过训练集或测试集的根目录构造了vectorMetadata中的Listlt;Stringgt;,在计算chi值时会用到,Maplt;String, Integergt;和totalDocCount。

(2) TextLexisCollect.play() : 使用分词器分词生成lt;词,词信息gt;,过滤器对lt;词,词对象gt;进行过滤,构造vectorMetadata对象中的Maplt;标签, Maplt;文档路径名 ,Maplt;词汇, 词对象gt;gt;gt;(在计算特征权重时会用到) 和 倒排表 Maplt;词 ,Maplt;类别, Setlt;文档路径集gt;gt;gt;在计算chi值时用到

(3) EigenVectorChoice.play() : 计算出每个词在不同label下的chi值后,并构造vectorMetadata对象中的增加属性chi值后的 (类别-词,词信息表),然后通过推排序,筛选出chi值最大的指定数目个特征词汇,构造vectorMetadata对象中的词-词信息表,该表保存了最终的文本特征。

(4) TextTfIdfCompute.play() : 从Maplt;标签, Maplt;题目, Maplt;词语, 词信息gt;gt;gt;剔除掉不属于最终特征集中的词,计算每个词汇的tf*idf值,并为表中每个term增加tf*idf属性。

(5) AbsExportQuantizedData.play () 生成词id,及词号文件,类别id, 转换成特征向量也就是是libsvm所指定的输入格式,并存放至指定文件。将类别和id写入指定的类别文件。

(6) LoadEigenVector.play ():加载训练过程中得到的词-词号文件,并构造特征词表。

3 中英文分词

3.1中文和英文分词异同

词在与多语言中都是最小的有独立意义的语言元素,因此对文本分类系统而言,分词是语言信息处理的基础和关键。在训练和测试前均需要对训练集或测试集进行分词处理对于英文单词而言,只需要通过空格和标点符号就可以和容易的和原文切分开来。英语语句流之间是以空格作为分界符的,而中文是以汉字为基本的单位,想从联系的汉字流中区分出来就不是一件容易的事, 同时汉字的分词效果对文本分类系统的分类效果影响很大。此外,在分词完成后,由于英文存在广泛的词形的变化,与此同时词义却没有发生变化。比如名的单复数形式,形容词和副词的比较级形式,以及动词的时态和语态的变化。因此,英文的处理还需要经历一个词根还原的步骤,以去除每个词汇的其它意同形不同的多余词汇[5]

3.2中文分词技术简介

目前的分词算法主要有三类:

(1)基于字典和词库匹配;

这种方法简便,且具有不低的效率,不过由于汉语词汇组合的开放性,和予以的复杂性,对词典的完备性和一致性提出了很高的要求,因而无法大规模的应用开来。该方法又有很多种类:包括逐词遍历法、最大正(逆)向匹配和双向匹配与最少切分发的结合。

(2)基于词频度统计

该算法是一种全切分算法。它不依靠词典,而是对文章中任意二字共现的频率进行统计,将频率较高的视作一个词进行切分。由于运用了统计模型和决策算法而且这些信息皆取自真实语料,该方法可以发现切分歧义,有着较好的实用性。该方法包括的主要统计模型有:CRF模型, N-gram模型(N元文法)、隐马尔科夫模型(HMM),我们所用的分词工具NLPIR就是基于HMM算法实现的[9]

剩余内容已隐藏,请支付后下载全文,论文总字数:26258字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;