当前位置:文档之家› 昆明理工大学人工智能期末大报告

昆明理工大学人工智能期末大报告

人工智能及其应用结课报告课程名称:人工智能及其应用论文名称:文本分类学院:信息工程与自动化学院专业年级:指导老师:王剑姓名:学号:目录摘要 (3)一、绪论 (4)二、分类器的设计 (4)三、文本分类流程图 (5)四、算法介绍 (5)五、算法实现 (7)1、程序流程 (9)2、关键代码 (9)3、程序运行结果 (13)六、心得体会 (13)参考文献 (14)摘要21世纪是一个信息时代,信息传递中必然有很多没有用的信息,本文就如何在庞大而又纷繁芜杂的文本中掌握最有效的信息进行了阐述。

为了对文本进行有效地分类,在分类过程中需要一个算法优良的文本分类器,本文将讲述Rocchio、Naïve Bayes(朴素贝叶斯)、KNN(K最近邻)、SVM、Decision Tree(决策树)、ANN(人工神经网络)等算法的设计流程,最后将用朴素贝叶斯算法来进行简单的实现一个本文的分类,更详细的讲述文本分类的具体流程。

关键词:信息时代;文本;分类器;算法;实现一、绪论在Internet 高速发展的今天,到处都是各种类型的信息,包括文本信息,声音信息,图像信息等等。

如何在庞大而又纷繁芜杂的文本中掌握最有效的信息始终是信息处理的一大目标。

基于人工智能技术的文本分类系统能依据文本的语义将大量的文本自动分门别类,从而更好的帮助人们把握文本信息。

近年来,文本分类技术已经逐渐与搜索引擎、信息推送、信息过滤等信息处理技术相结合,有效地提高了信息服务的质量。

文本分类在现在的生活中是必不可少的,我们每天都在接收文本信息,比如邮件、短信等等,但是这些很多都是没有用的信息,或是垃圾信息,如果每个信息都要我们去看,这就太浪费时间了,这是我们就需要文本分来来帮助我们,将没有用的信息自动屏蔽。

那么我们就要有个算法能自动识别哪些是有用的文本,哪些是没用文本,不能随便分类,把有用的信息当成没用的信息,那就适得其反了。

二、分类器的设计1、设计思路要进行文本分类,一开始肯定要给机器一个学习的过程,给定一个文本训练集,也就是说给定一个分好类的文本给机器取学习。

然后将训练集的特征提取出来,主要提取的是词和该词的权重。

2、分类流程:① 用向量空间模型来表示文本),;...,;,;,(332211n n i W T W T W T W T V② 特征选择降维:真实网页中出现的词汇数量是十分巨大的,这导致表示网页的向量空间的维数也相当大,用于表示网页的向量可以达到几万维。

这几万个词汇对于分类的意义是不同的,一些通用的、在各个类别中普遍出现的词不仅对于分类贡献小,而且还影响系统的性能,因此,我们需要对向量空间进行降维。

通过降维,我们可以保留那些对分类贡献重大的词,提高分类的精度,同时也可以提高程序的运行速率和效率。

常用的降维的方法有:可用TF/IDF 反转文档频率、去停止词、开方检验、信息熵。

TF(词频):指某一给定词在文件中出现的频率。

IDF (反转文档频率):总文件数目除以包含某特定词的文件数目,再将得到的商取对数DWD log ,其中D 代表总文件数,DW 代表出现W 的文件数。

因此权重Wi=TF*IDF 。

比如把1000维降到100维时,就选取权重最大的那100个所对应的词,组成文本的特征集合现在我们已经了解了文本分类的几个关键步骤,在实际分类时,首先将文本表示成以某种形式的元素(通常用词)表示的向量,然后按某种方法进行特征提取,将特征用权值表示。

这样就可以对元素-权值表示的文档向量进行训练,得到向量模型。

分类时,也将带分类文档表示成元素-权值文档向量,并与训练得到的向量模型进行比较,最终判断其类别。

1、 Rocchioa) 把一个类别里的样本文档各项取个平均值(例如把所有 “体育”类文档中词汇“篮球”出现的次数取个平均值,再把“裁判”取个平均值,依次做下去),可以得到一个新的向量,形象的称之为“质心”,质心就成了这 个类别最具代表性的向量表示b) 有新文档需要判断的时候,比较新文档和质心有多么相像(判断他们之间的距离)从而确定新文档属不属于这个类。

2、 KNN (K 最近邻K-Nearest Neighbour )计算待测文档和训练集文档的相似度,取k 篇最相似的,然后根据这k 篇文档所属的类别来判定待测文档的类别3、 SVM(Support Vector Machine 支持向量机)4、 Decision Tree(决策树)5、 ANN (人工神经网络)6、 Na ïve Bayes(朴素贝叶斯)在Bayes 分类方法中,有个多项式模型:在多项式模型中,设某文档),...,,(21n t t t d =,t 是该文档中出现过的单词,允许重复,则先验概率P (c )=类c 下单词总数/整个训练样本的单词总数;类条件概率P (t|c )=(类c 下单词t 在各个文档中出现过的次数之和+1)/类c下单词总数+|V|) V 是训练样本中不重复的单词数,|V|则表示训练样本包含多少总单词。

在这里m=|V|,P=1/|V|。

P (t|c )可以看作是单词t 在证明d 属于类c 上提供了多大额证据,而P(c)则可以认为是类别c 在整体上占多大比例(有多大可能性)。

下面列举一个例子来详细说明Bayes 多项式模型:请对新文档d=(Chinese,Chinese,Chinese,Tokyo,Japan)分类通过上面的表我们可以知道,单词总数有11个、yes 的有8个、no 的有3个、v 的有6个P(yes/Chinese,Chinese,Chinese,Tokyo,Japan))/()/()/()/()/()(yes Japan P yes Tokyo P yes chinese P yes chinese P yes chinese P yes P =00058.0141*141*73*73*6815*118≈++= 同理P(No/Chinese,Chinese,Chinese,Tokyo,Japan)≈0.00015所以新文本d 是属于China 的,也就是yes 。

五、 算法实现上面的例子已经对文本降维了,处理之后只剩权重最大的几个词,实际当中收到的文本都是一整篇文章,我们事先应该对整片文章预先处理,将没有用的停止词、权重比较低的词语都先去掉。

接下来的这个例子将用3篇和体育有关的短文和一篇与体育无关的短文作为训练样本,再对一篇新短文进行分类,看是否属于体育类的短文。

Physical1:Physical2:Physical3:NoPhysical:待测文本:1、程序流程:分类器训练阶段function[Prob] = BayesClassify(dirName,filename)%调用训练样本fid = fopen(filename);words = fscanf(fid, '%c');%去停止词、没用的词语new_words = strrep(words, ' the ',' ');……%省略了一部分去停止词的代码%new_words = strrep(new_words, '.','');% 显示字符new_words%%统计数组的单词数B = strsplit(words,' ');num_words = size(B)%% 将这些单词放进字符串数组C = strsplit(new_words,' ')C(1)C{1}unique_array = unique(C) %建一个存放关键单词的数组NumberOfUniqueWords = size(unique_array) %统计数量%计算出数组中单词的频率%打开目录路径下名为Physical.txt的文档,统计属于Physical的单词概率data_Physical = fileOpen(dirName,'Physical*.txt')for i = 1 : size(data_Physical,1)D_Physical{i} = strsplit(data_Physical{i},' ')%将文档进行分词end%D_Hist_Final has all the words as a cell arrayD_Physical_Final = D_Physical{1};size_data_Physical = size(data_Physical); %计算得出概率for j = 2 : size(data_Physical,1)D_Physical_Final = cat(2,D_Physical_Final,D_Physical{j});endD_Physical_Finalsize(C,2)for n = 1 : size(C,2)TABLE_Physical{1,n} = sum(strcmp(D_Physical_Final,C{n}))stringcompair = strcmp(D_Physical_Final,C{n})endTABLE_Physical %列出属于Physical的概率data_NoPhysical = fileOpen(dirName,'NoPhysical*.txt')for i = 1 : size(data_NoPhysical,1)D_NoPhysical{i} = strsplit(data_NoPhysical{i},' ')endD_NoPhysical_Final = D_NoPhysical{1};size_data_NoPhysical = size(data_NoPhysical);for j = 2 : size(data_NoPhysical,1)D_NoPhysical_Final = cat(2,D_NoPhysical_Final,D_NoPhysical{j});endD_NoPhysical_Finalsize(C,2)for n = 1 : size(C,2)TABLE_NoPhysical{1,n} = sum(strcmp(D_NoPhysical_Final,C{n}))stringcompair = strcmp(D_NoPhysical_Final,C{n})endTABLE_NoPhysicalD_Final = cat(2,D_Physical_Final,D_NoPhysical_Final)size_D_Final=unique(D_Final)size(size_D_Final)TABLE_All = horzcat(TABLE_Physical, TABLE_NoPhysical)Prob_Prior_Physical = size(D_Physical_Final,2) / (size(D_Physical_Final,2) + size(D_NoPhysical_Final,2))Prob_Prior_NoPhysical = size(D_NoPhysical_Final,2) / (size(D_Physical_Final,2) + size(D_NoPhysical_Final,2))% 开始计算% Prob_Hist and all the others is the probability that P(Xi|H)% 初始化Prob_Physical = 1;Prob_NoPhysical = 1;for increm1 = 1 : size(C,2)% size_TABLE(1) 是总的单词的数量Likelihood = ( TABLE_Physical{1,increm1} + 1 )./( size(D_Physical_Final,2) + size(size_D_Final,2) )%计算似然概率Prob_Physical = Prob_Physical .* (( TABLE_Physical{1,increm1} + 1 )./( size(D_Physical_Final,2) + size(size_D_Final,2) ))endProb_Physical = Prob_Physical * Prob_Prior_Physical%先验概率乘以似然概率for increm1 = 1 : size(C,2) % size_TABLE(1) is the number of words in the input fileiLikelihood = ( TABLE_NoPhysical{1,increm1} + 1 )./( size(D_NoPhysical_Final,2) + size(size_D_Final,2) )Prob_NoPhysical = Prob_NoPhysical .* (( TABLE_NoPhysical{1,increm1} + 1 )./( size(D_NoPhysical_Final,2) + size(size_D_Final,2) ))% 类条件概率P (t|c)=(类c下单词t在各个文档中出现过的次数之和+1)/类c下单词总数+|V|)endProb_NoPhysical = Prob_NoPhysical * Prob_Prior_NoPhysicaldisp('Your document has been classified as : ');if Prob_Physical > Prob_NoPhysical%如果属于Physical的概率大于不属于disp('Physical');Physical的概率,则输出Physical,否则输出else NoPhysicaldisp('NoPhysical');endfclose(fid);%关闭%运行程序dirName='D:\我的文档\MATLAB'filename='D:\我的文档\MATLAB\test.txt'BayesClassify(dirName,filename)3、程序运行结果所以待测文本是属于physical的。

相关主题