昆明理工大学人工智能期末大报告.docx
《昆明理工大学人工智能期末大报告.docx》由会员分享,可在线阅读,更多相关《昆明理工大学人工智能期末大报告.docx(14页珍藏版)》请在冰点文库上搜索。
昆明理工大学人工智能期末大报告
人工智能及其应用
结课报告
课程名称:
人工智能及其应用
论文名称:
文本分类
学院:
信息工程与自动化学院
专业年级:
指导老师:
王剑
姓名:
学号:
目录
摘要3
一、绪论4
二、分类器的设计4
三、文本分类流程图5
四、算法介绍5
五、算法实现7
1、程序流程9
2、关键代码9
3、程序运行结果13
六、心得体会13
参考文献14
摘要
21世纪是一个信息时代,信息传递中必然有很多没有用的信息,本文就如何在庞大而又纷繁芜杂的文本中掌握最有效的信息进行了阐述。
为了对文本进行有效地分类,在分类过程中需要一个算法优良的文本分类器,本文将讲述Rocchio、NaïveBayes(朴素贝叶斯)、KNN(K最近邻)、SVM、DecisionTree(决策树)、ANN(人工神经网络)等算法的设计流程,最后将用朴素贝叶斯算法来进行简单的实现一个本文的分类,更详细的讲述文本分类的具体流程。
关键词:
信息时代;文本;分类器;算法;实现
一、绪论
在Internet高速发展的今天,到处都是各种类型的信息,包括文本信息,声音信息,图像信息等等。
如何在庞大而又纷繁芜杂的文本中掌握最有效的信息始终是信息处理的一大目标。
基于人工智能技术的文本分类系统能依据文本的语义将大量的文本自动分门别类,从而更好的帮助人们把握文本信息。
近年来,文本分类技术已经逐渐与搜索引擎、信息推送、信息过滤等信息处理技术相结合,有效地提高了信息服务的质量。
文本分类在现在的生活中是必不可少的,我们每天都在接收文本信息,比如邮件、短信等等,但是这些很多都是没有用的信息,或是垃圾信息,如果每个信息都要我们去看,这就太浪费时间了,这是我们就需要文本分来来帮助我们,将没有用的信息自动屏蔽。
那么我们就要有个算法能自动识别哪些是有用的文本,哪些是没用文本,不能随便分类,把有用的信息当成没用的信息,那就适得其反了。
二、分类器的设计
1、设计思路
要进行文本分类,一开始肯定要给机器一个学习的过程,给定一个文本训练集,也就是说给定一个分好类的文本给机器取学习。
然后将训练集的特征提取出来,主要提取的是词和该词的权重。
2、分类流程:
①用向量空间模型来表示文本
②特征选择
降维:
真实网页中出现的词汇数量是十分巨大的,这导致表示网页的向量空间的维数也相当大,用于表示网页的向量可以达到几万维。
这几万个词汇对于分类的意义是不同的,一些通用的、在各个类别中普遍出现的词不仅对于分类贡献小,而且还影响系统的性能,因此,我们需要对向量空间进行降维。
通过降维,我们可以保留那些对分类贡献重大的词,提高分类的精度,同时也可以提高程序的运行速率和效率。
常用的降维的方法有:
可用TF/IDF反转文档频率、去停止词、开方检验、信息熵。
TF(词频):
指某一给定词在文件中出现的频率。
IDF(反转文档频率):
总文件数目除以包含某特定词的文件数目,再将得到的商取对数
,其中D代表总文件数,DW代表出现W的文件数。
因此权重Wi=TF*IDF。
比如把1000维降到100维时,就选取权重最大的那100个所对应的词,组成文本的特征集合
现在我们已经了解了文本分类的几个关键步骤,在实际分类时,首先将文本表示成以某种形式的元素(通常用词)表示的向量,然后按某种方法进行特征提取,将特征用权值表示。
这样就可以对元素-权值表示的文档向量进行训练,得到向量模型。
分类时,也将带分类文档表示成元素-权值文档向量,并与训练得到的向量模型进行比较,最终判断其类别。
三、文本分类流程图
四、算法介绍
1、Rocchio
a)把一个类别里的样本文档各项取个平均值(例如把所有“体育”类文档中词汇“篮球”出现的次数取个平均值,再把“裁判”取个平均值,依次做下去),可以得到一个新的向量,形象的称之为“质心”,质心就成了这个类别最具代表性的向量表示
b)有新文档需要判断的时候,比较新文档和质心有多么相像(判断他们之间的距离)从而确定新文档属不属于这个类。
2、KNN(K最近邻K-NearestNeighbour)
计算待测文档和训练集文档的相似度,取k篇最相似的,然后根据这k篇文档所属的类别来判定待测文档的类别
3、SVM(SupportVectorMachine支持向量机)
4、DecisionTree(决策树)
5、ANN(人工神经网络)
6、NaïveBayes(朴素贝叶斯)
在Bayes分类方法中,有个多项式模型:
在多项式模型中,设某文档
,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多项式模型:
DocID
doc
Class∈China?
1
ChineseBeijingChinese
Yes
2
ChineseChineseShanghai
Yes
3
ChineseMaccao
Yes
4
TokyoJapanChinese
No
请对新文档d=(Chinese,Chinese,Chinese,Tokyo,Japan)分类
通过上面的表我们可以知道,单词总数有11个、yes的有8个、no的有3个、v的有6个
P(yes/Chinese,Chinese,Chinese,Tokyo,Japan)
同理P(No/Chinese,Chinese,Chinese,Tokyo,Japan)≈0.00015
所以新文本d是属于China的,也就是yes。
五、算法实现
上面的例子已经对文本降维了,处理之后只剩权重最大的几个词,实际当中收到的文本都是一整篇文章,我们事先应该对整片文章预先处理,将没有用的停止词、权重比较低的词语都先去掉。
接下来的这个例子将用3篇和体育有关的短文和一篇与体育无关的短文作为训练样本,再对一篇新短文进行分类,看是否属于体育类的短文。
Likemanyothersports,tabletennisbeganasamildsocialdiversion.Descending,alongwithlawntennisandbadminton,fromtheancientmedievalgameoftennis.ItwaspopularinEnglandinthesecondhalfofthenineteenthcenturyunderitspresentnameandvarioustradenamessuchasGossimaandWhiff-Whaff.AfterthenamePing-Pong(animitationofthesoundmadebytheballstrikingthetableandthevellumbatsthatwereused)wasintroducedbyJ.Jaques&Son,thegamebecameafashionablecraze.
Physical1:
OneofthefirstpublichintsofimprovedU.S.-ChinarelationscameonApril6,1971,whentheAmericanPing-Pongteam,inJapanforthe31stWorldTableTennisChampionship,receivedasurpriseinvitationfromtheirChinesecolleaguesforanall-expensepaidvisittothePeople'sRepublic.calledit"Thepingheardroundtheworld."OnApril10,nineplayers,fourofficials,andtwospousessteppedacrossabridgefromHongKongtotheChinesemainland,usheringinaneraof"Ping-Pongdiplomacy."TheywerethefirstgroupofAmericansallowedintoChinasincetheCommunisttakeoverin1949.
Physical2:
Sportsbenefitmeinmanyways.Firstly,sportscallcanmakemefitandstrongphysically.Whentakingpartinsports,Igetthechancetotrainalmostallpartsofourbodies.Inaddition,sportscallcanmaintainmypsychologicalwellbeing,WheneverI'minlowspirit,akingpartinsportscanhelpmeforgetmyanxietiesandworries.Besides,sportscanteachmesomelessonsaboutlife.Throughparticipation,IcanlearnthatontheplaygroundInotonlystruggleformyownselfbutalsofightformyteam.Sportsteachmetobeconsiderate,cooperativeandoptimistic.
Physical3:
Environmentalproblemsarebecomingmoreandmoreseriousallovertheworld.Forexample,carshavemadetheairunhealthyforpeopletobreatheandpoisonousgasisgivenoffbyfactories.Treesonthehillshavebeencutdownandwastewaterisbeingpouredcontinuouslyintorivers.Furthermore,whereverwegotoday,wecanfindrubbishcarelesslydisposed.Pollutionis,infact,threateningourexistence.Theearthisourhomeandwehavethedutytotakecareofitforourselvesandforourlatergenerations.Fortunately,moreandmorepeoplehaverealizedtheseproblems.
NoPhysical:
待测文本:
BasketballwerepopularinEnglandinthesecondhalfofthenineteenthcenturyunderitspresentnameandvariousradenamessuchasGossimaandWhiff-Whaff.OneofthefirstpublichintsofimprovedU.S.-ChinarelationscameonApril6,1971,whentheAmericanPing-Pongteam,inJapanforthe31stWorldTableTennisBasketball,receivedasurpriseinvitationfromheirChinesecolleaguesforanall-expensepaidvisittothePeople'sRepublic.
1、程序流程:
2、关键代码
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')
fori=1:
size(data_Physical,1)
D_Physical{i}=strsplit(data_Physical{i},'')%将文档进行分词
end
%D_Hist_Finalhasallthewordsasacellarray
D_Physical_Final=D_Physical{1};
size_data_Physical=size(data_Physical);%计算得出概率
forj=2:
size(data_Physical,1)
D_Physical_Final=cat(2,D_Physical_Final,D_Physical{j});
end
D_Physical_Final
size(C,2)
forn=1:
size(C,2)
TABLE_Physical{1,n}=sum(strcmp(D_Physical_Final,C{n}))
stringcompair=strcmp(D_Physical_Final,C{n})
end
TABLE_Physical%列出属于Physical的概率
data_NoPhysical=fileOpen(dirName,'NoPhysical*.txt')
fori=1:
size(data_NoPhysical,1)
D_NoPhysical{i}=strsplit(data_NoPhysical{i},'')
end
D_NoPhysical_Final=D_NoPhysical{1};
size_data_NoPhysical=size(data_NoPhysical);
forj=2:
size(data_NoPhysical,1)
D_NoPhysical_Final=cat(2,D_NoPhysical_Final,D_NoPhysical{j});
end
D_NoPhysical_Final
size(C,2)
forn=1:
size(C,2)
TABLE_NoPhysical{1,n}=sum(strcmp(D_NoPhysical_Final,C{n}))
stringcompair=strcmp(D_NoPhysical_Final,C{n})
end
TABLE_NoPhysical
D_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_HistandalltheothersistheprobabilitythatP(Xi|H)
%初始化
Prob_Physical=1;
Prob_NoPhysical=1;
forincrem1=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)))
end
Prob_Physical=Prob_Physical*Prob_Prior_Physical%先验概率乘以似然概率
forincrem1=1:
size(C,2)%size_TABLE
(1)isthenumberofwordsintheinputfilei
Likelihood=(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|)
end
Prob_NoPhysical=Prob_NoPhysical*Prob_Prior_NoPhysical
disp('Yourdocumenthasbeenclassifiedas:
');
ifProb_Physical>Prob_NoPhysical%如果属于Physical的概率大于不属于
disp('Physical');Physical的概率,则输出Physical,否则输出
elseNoPhysical
disp('NoPhysical');
end
fclose(fid);%关闭
%运行程序
dirName='D:
\我的文档\MATLAB'
filename='D:
\我的文档\MATLAB\test.txt'
BayesClassify(dirName,filename)
3、程序运行结果
所以待测文本是属于physical的。
六、心得体会
对一篇短文进行分类还需对代码进行改进,上面用来实现的代码效果不是很好,有事会出现分类错误的情况,当然也和我的训练样本只有3篇有关,训练样本的多少也决定着分类效果的对错,训练样本多了分类出来的结果肯定会更加精确,通过这个代码的实现我也进一步了解了文本分类的原理。
对一篇文章分类的时候首先要将无用的词语去掉,减少无用功。
这个程序需还有很多需要改进的地方,比如训练样本的数量太少,停止词太少,文章中还有比较多的停止词没有去掉等等,这些都是需要改进的地方
在进行分类之前要进行机器的学习,和文本的预处理;文本的预处理就是通过降维的方法实现文本的筛选,将没用的信息先进行筛选一边,等预处理完之后再交给分类器进行分类。
Bayes方法通过计算先验概率和似然概率来决定文本的归属。
完成这个实验之后我深刻的了解了分类的原理,在如今信息如海的时代,如果没有一个好的文本分类算法将会是什么状况,再了解了这些算法之后我对人工智能这门课的认识有了更进一步。
参考文献
【1】《人工智能及其应用》,蔡自兴,徐光祐,清华大学出版社,2010.5
【2】来自互联网XX百科: