AI实验用朴素贝叶斯算法实现文本分类报告_第1页
AI实验用朴素贝叶斯算法实现文本分类报告_第2页
AI实验用朴素贝叶斯算法实现文本分类报告_第3页
AI实验用朴素贝叶斯算法实现文本分类报告_第4页
AI实验用朴素贝叶斯算法实现文本分类报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AI实验:用朴素贝叶斯算法实现文本分类学院:计算机科学与工程学院班级:03计联组别:第二组姓名:学号:指导老师:一、实验内容:1.数据采集1)下载CornellUniversity,WashingtonUniversity,WisconsinUniversityandTexasUniversity计算机专业和化学专业的教授个人网页、学生个人网页和课程网页2)预处理数据2.实现朴素贝叶斯算法。3.实验结果1)按专业分类的准确性(2组)2)打印出每类中概率值最高的20个词,并分析它们的不同之处3)修改程序,使得在计算字概率时,可以从词汇表中去掉概率最高的N个字(从训练集中选)。当N取30、50、100、300、500、1000时比较分类器的准确性,画图说明4)计算字概率时采用如下公式:where,Cisacategory,ECisthesetofalltrainingexampleslabelledasC,c(w;EC)isthecountsofwordwinEC,ands(EC)=∑c(wi;EC)isthetotalcountsofallthewordsinEC.m取[10,|V|]范围的至少5个值,学习分类器,比较分类器的准确性,画图说明。二、实验步骤1.数据采集本次实验的数据采集由我们两个班共4个组的同学分工完成,本组负责收集WashingtonUniversity的相关网页。本组用“OfflineExplorerEnterprise”这个国外的软件先将WashingtonUniversity的站内的相关页面下载下来,然后将里面的无关的链接删除,得到与该校有关的页面。由于在下载后,里面有些文件夹内存在一些pdf文件,考虑到无法读取该类文件,所以也将它们删去。最后只剩.html文件。组长将这些资料分发给我们,由我们这些组员整理,再发回给他。预处理数据时先筛选掉无关的网页,然后将有效网页以学校名->专业->课程(教授或学生)->网页分类存放。网页命名基本原则是四个组统一安排的,该原则是按网页的URL命名,考虑到网页已按文件夹分类好,不存在重名的问题,所以一部分网页保留原名(下载名)。本实验的网页文件放在”AIHtmlResource”文件夹里,清单如下所示ChemistryComputerScienceCornellUniversity155237WashingtonUniversity179WisconsinUniversity187219用于测试的网页放在”test_for_chem”和”test_for_cs”两个文件夹里,这些文件都是从搜集到的文件里面随机抽取的,清单如下所示:test_for_chemtest_for_cs文件个数86872.程序代码☆平台:WindowsXP☆开发语言:JAVA☆开发工具:JDK+JCreator本实验的代码共包括5个java文件,清单如下所示:功能说明Artificial.java主类,提供输出和对结果进行统计的功能Analyze.java提供分析字符串功能,分割单词并生成单词集HtmlFilter.java过滤网页中的标签,为进行分类做准备keyAndCount.java提供存放单词及其概率的结构keyAndCountobject.java提供存放单词token的结构object主要功能函数说明如下:类Artificial 在此类中,定义了一个静态字符串数组,用于存放停止词publicstaticfinalString[]ENGLISH_STOP_WORDS={"a","an","and","are","am","as","at","be","but","by","for","i","if","in","into","is","it","do","no","not","of","on","or","s","such","t","that","the","their","then","there","these","they","this","to","was","will","with","nbsp","pm","td","dropitem","dropdown","hover","drophead","td","you","your"}; 定义了一个函数,它调用了其他类的函数,同时生成一个哈希表,用于对结果进行统计,此函数首先将文本进行预处理,将当中的有用的文本提取出来,再存入哈希表内,同时进行了统计,用于下一步的处理publicstaticvoidLoadfileAndStat(Filefile,Vectorvt,intkind) 定义了一个函数,用于对哈希表进行排序,这样可以方便提取出频率最高的单词,方便以后的处理.此函数采用的是快速排序算法publicstaticvoidQuickSort(Vectorvt,intleft,intright)类Analyze在此类中定义了一个函数analyze,它的功能是对单词进行提取,并存入一个向量中,当中的提取过程是:首先对字符的编码进行判断,如果有用就保存下来,无用就将其删除;然后将这些字符以词为单位存入向量中。类HtmlFilter此类只定义了一个构造函数HtmlFilter。此函数的功能是删除网页中的标签和脚本语言.它的算法是,每次读一行文本,如果出现”<”号,则忽略此号到”>”之间的内容,也就是去除了标签.而对于脚本语言的去除,就是去除”{”号和”}”号之间的内容.当然,这里面也存在一些不足.因为脚本语言里面的函数名无法去.如果要做到尽善尽美,则会使程序非常复杂.考虑到脚本语言的函数调用频率不会很高,对分类不会产生太大的影响,所以不进行处理,以免影响速度.3.实验方法在Artificial类当中定义了两个全局静态整数N和m,其中N用于去除概率最高的N个字,m对应于公式中的m,用于让结果变得更加平滑。实验时只要改变这两个变量,就可以得出不同的结果,然后对这些结果进行统计就行了。4.实验结果在所有chemistry文件中,频率最高的20个单词是{intrinsic,chemistry,fortran,chem,use,course,intrinsics,code,information,style,kind,section,name,program,gnu,function,integer,time,see,type}在所有computerscience文件中,频率最高的20个单词是{course,cs,computer,programming,class,lecture,information,systems,science,homework,students,data,from,may,topics,introduction,design,due,cps,problem}对文件夹test_for_chem的运行结果如下所示m=10m=100m=500m=1000m=3000N=00.94040.94050.94050.94050.9405N=300.71430.73810.73810.73810.7381N=500.91670.91670.91670.91670.9167N=1000.60710.60710.60710.58330.5833N=3000.17860.16670.16670.16670.1548N=5000.21430.20240.20240.20240.1667N=10000.11900.11900.11900.11900.1071对文件夹test_for_cs的运行结果如下所示m=10m=100m=500m=1000m=3000N=00.96250.96250.96250.96250.9625N=300.95000.95000.95000.95000.9500N=500.92500.95000.95000.96250.9750N=1000.85000.90000.90000.91250.9125N=3000.67500.75000.83750.85000.9125N=5000.46250.62500.81250.85000.9000N=10000.51250.63750.81250.86250.9125实验结果用条状图表示,结果如下所示:对文件夹test_for_chem的测试结果如下曲线图所示:对文件夹test_for_cs的测试结果如下曲线图所示5.结果分析从上面的几张图可以看出,对于不同的m值,曲线的形状的变化并不大,只是改变了曲线某些结点的值;而在同一个m中,随着N的变大,曲线先向下凸,再上升,然后下降。由于时间和能力所限,实验中也存在着不少的不足,从所有的图可以看出,在N取30至50时,准确率是最高的,而随着N的继续增大,会出现减少而又增大的现象,显然,这是不合实际的.这可能是因为数据的选取上出了差错,或者是因为方法上出了问题。在这里,朴素贝叶斯算法的准确性并没有达到理想的要求。AIchem.m文件的源代码functionAIchem()x=[0,30,50,100,300,500,1000];ya=[0.9404,0.7143,0.9167,0.6071,0.1786,0.2143,0.1190];yb=[0.9404,0.7143,0.9167,0.6071,0.1667,0.2024,0.1190];yc=[0.9404,0.7143,0.9167,0.6071,0.1667,0.2024,0.1190];yd=[0.9404,0.7143,0.9167,0.5833,0.1667,0.2024,0.1190];ye=[0.9404,0.7143,0.9167,0.5833,0.1548,0.1667,0.1071];aa=polyfit(x,ya,2);bb=polyfit(x,yb,2);cc=polyfit(x,yc,2);dd=polyfit(x,yd,2);ee=polyfit(x,ye,2);x1=[0:10:1000];y1=aa(3)+aa(2)*x1+aa(1)*x1.^2;y2=bb(3)+bb(2)*x1+bb(1)*x1.^2;y3=cc(3)+cc(2)*x1+cc(1)*x1.^2;y4=dd(3)+dd(2)*x1+dd(1)*x1.^2;y5=ee(3)+ee(2)*x1+ee(1)*x1.^2;subplot(5,1,1);plot(x1,y1,'-r');title('m=10');subplot(5,1,2);plot(x1,y2,'-r');title('m=100');subplot(5,1,3);plot(x1,y3,'-r');title('m=500');subplot(5,1,4);plot(x1,y4,'-r');title('m=1000');subplot(5,1,5);plot(x1,y5,'-r');title('m=3000');附录:AIcs.m文件的源代码functionAIcs()x=[0,30,50,100,300,500,1000];ya=[0.9625,0.9500,0.9250,0.8500,0.6750,0.4625,0.5125];yb=[0.9625,0.9500,0.9500,0.9000,0.7500,0.6250,0.6375];yc=[0.9625,0.9500,0.9500,0.9000,0.8375,0.8125,0.8125];yd=[0.9625,0.9500,0.9625,0.9125,0.8500,0.8500,0.8625];ye=[0.9625,0.9500,0.9750,0.9125,0.9125,0.9000,0.9125];aa=polyfit(x,ya,2);bb=polyfit(x,yb,2);cc=polyfit(x,yc,2);dd=polyfit(x,yd,2);ee=polyfit(x,ye,2);x1=[0:10:1000];y1=aa(3)+aa(2)*x1+aa(1)*x1.^2;y2=bb(3)+bb(2)*x1+bb(1)*x1.^2;y3=cc(3)+cc(2)*x1+cc(1)*x1.^2;y4=dd(3)+dd(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论