版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息检索与搜索引擎技术实验向量空间模型昆明理工大学信息工程与自动化学院学生实验报告(20142015学年第1学期)课程名称:信息检索与搜索引擎技术 开课实验室:信自楼4452014年12月23日年级、专业、 班计科111学号201110405138姓名成绩实验项目名称向量空间模型指导教师李卫疆教 师 评 语该同学是否了解实验原理:A.了解口B.基本了解 C.不了解口该同学的实验能力:A.强口B.中等口 C.差该同学的实验是否达到要求:A.达到口B基本达到(:.未达到口实验报告是否规范:A.规范口B.基本规范 C.不规范口实验过程是否详细记录:A.详细口B.般口 C.没有口教师签名:年 月日一、
2、 上机目的及内容:给定文档语料:di:北京安立文高新技术公司d2:新一代的网络访问技术d3:北京卫星网络有限公司d4:是最先进的总线技术。d5:北京升平卫星技术有限公司的新技术有。设计一个针对这些文档的信息检索系统。具体要求是:1)给岀系统的有效词汇集合(说明取舍原因)。2)写岀dl和d2在VSM中的表示(使用tf*idf,写岀各项的数字表达式,具体数值不必实 际计算出来)。3)画岀系统的倒排文件示意图。4)按照向量夹角的余弦计算公式,给岀针对查询“技术的公司”的前3个反馈结果。二、实验原理给定文档语料: dl:北京安立文高新技术公司 d2:新一代的网络访问技术 d3:北京卫星网络有限公司 d
3、4:是最先进的总线技术。 d5:北京升平卫星技术有限公司的新技术有。设计一个针对这些文档的信息检索系统。具体要求是:Termdld2d3d4d5Term 出 现次数1)给出系统的有效词汇集合(说明取 舍原 因)。北京、安、 立、文、 高新、技 术、公司、新、网络、访问、卫星、有限、先进、总线、升、平的、是、最、有,这些词作为停用词不能加入系统的有效集合、代,去除后并不影响原来句子语义的表达也不能算作系统的有效集合。2)写出dl和d2在VSM中的表示(使用廿纠df,写岀各项的数字表达式,具体数值不必实际 计算出来)。得到的矩阵:北京1 N01013卜安丄X00001立£的1 、0000
4、1100001咼新100001技术110013公司101013新010012网络011002访问010001卩星001012有限001012先进000101总线000101升000011平000011TFx IDTF :表示词项在该文档或者查询词中岀现的频度。即该词项岀现次数除以该文档的长度(所有词的个数)Cik :表示词项k在Di中的出现次数。:表示该文档的长度(所有词的个数)IDF:表示词项在文档集合中的重要程度。一个词项出现的文档数越多,说明该词项的 区分度越差,其在文档集合中的重要性就越低。N:表示集合中的文档数;%:表示出现词项k的文档数。dl中各词项的数字表达式 北京”的 TFxI
5、DF = Jxlog| "安”的TF x IDF = ; x log; *立”的TF x【DF = ;x log; “文”的TF x IDF = ; x log| “高新”的 TFx【DF = ;xlog;技术”的 TFxIDF = Jxlog| “公司”的TFx IDF = ;Xlog专d2中各词项的数字表达式: 噺”的 TFxIDF = jxlog 专 “网络”的TF x IDF = jxlog; “访问”的 TFxIDF = jxlog; “技术'的 TFxIDF = Jxlog|3)画出系统的倒排文件示意图。4)按照向量夹角的余弦计算公式,给出针对查询“技术的公司”的
6、前3个反馈结果。该部分由代码实现。三、实验方法、步骤1 . 建立Java项目,建立DocumentStruct.java类文件并编辑建立TextVector.java类文件并编辑.如图4-1,图4-2所示Java 英Java tfL3KR«5«O):lACMDdeVsrc|磁onf5(Kj:bcmmodel列gzS,iSR&NVJ “S»(M):"ffW?;O 新建Java关5 (dauthor6 *7 */8 public class TextVector XX怜芝$钗;生亦一个冋r所育纸ct的仪值 0para«M paran par
7、aa paraa paraaV9dimension»向的维虫 ttrmCount, 一个简*中克个嵬陵岀段的曲 docunntTeroCount.向跚的檢鹿(即文档由几个询构曲1 docum?ntCount*左间向1W.S43向的总或 docuiwntContainTernCount-在整个立fl構.52中T潍直出现的昆沛public TextVecto(int dimension, int teraCount, int docuro&ntTemCowt, int documentcount, int do vqctorWoight now double dimension;
8、for(mt i»0; i<din»&nsion; i*)(vectorweighti caculateWeight(ter«Counti, documentTeraCount, documentCount, documentCcntainTenr图4-24 . 建立TF.java类文件并编辑,如图图4-7所示1 package acn.model;x计尊宴个询顶左耐t空间負5W的TFM x author /public class TF 恂盜&妍 WiWtt±TFn».*/ public TF() tf 0.0; tQr
9、rnCount 0; termlnDocumentCount = 0;* 林定的価生成TF#彖* paraa termCount. 一个词現出农在一个的中的次慾* (paraa documentTermCounti f 向中圻有词顶的忌或i即一?文档对象的纟的public TF(int terwCunt, int docurttntTer«C©unt) this = 0.0;this.tennCount ter®Count;this.WonnlnDocuRwntCount - docunontTortnCount;图4-45 建立IDF.java类文件并编辑,如图
10、图4-5所示D 财”4 x1 package acm.model;23«/B*4 *用于计鼻佝量仝间負.型中的IDRS5 x author6 7 /8 public class IDF 913/*11 * fiiSS®.榭认<M般IDF?燻12 V13«public IDF) -1idf = 0.0;15 docuift&ntContainTennCount 0;16 docunientCount 6;17 G *利用JS供的恆构亡IDFk®* >araa dccumtntCount, mia'flSa!中向it的总??即文档
11、的层数2 * Pparao dccumtntContainTeniCount,血量立间横型中集个词巾在翌个窝型中岀玫的师3 */】 public IDF(int documentount, int docunentCorvtbinTGrmCourvt)idf = 0.0;6 this documentCount = documentCount;7 thisdocu«entContbinTennCount documentContainTertnCount;图4-56 建立CaculateSim.java类文件并编辑,如图4-6所示D 5AMC52M X1 package acm.mo
12、del;2 I>/*4 «计尊禹个向的相议K5 ©author6 7 U8 public class CaculattSim 913 /*11 *枪适tWt科适两个并卄H两金血量的相贋12 *paraavac tori.Hn>13 (dparaavector2.向二14 */public Caculat«Si«(TtxtVector vtctorl, TtxtVector v«ctor2)(16 double sinDividend00, siaDivider-O.O;17 double tenpVectorlaO.O, teHpV
13、ector2aQ.O;for(int i=0; i<vectorl.getVtctorWaight().length: i+)20 sinDividend * vector1getVectorWeight()(1) vector2gGtVectorWG:Lght()i;21 23 for(int i=0; i<vtctorl.getVtctorWaight().length: i+)24 tenpVectorl Mathvectori.getVectorWeight() i, 2.0);tnpVector2 Mothvector2.getVectorWeight() i. 2.0)
14、:27sifCivider = K6th.rf( (tempVectorlMte«pVector2);图4-67建立MainApp.java类文件并编辑.图47所示图4-78完成后的项目文件夹如图48所示ft1 ACM od elE & src应 acm.modelD CaculateSim.javaQ EJocu mentStruct.javaD IDF.javaD MainApp.javaQ TextVector.javaD TF.java:kI JREJavaSE-1.5图4-89 运行结果如图4-9所示1. DocumentStruct.java 代码: packag
15、eacm.model; public class DocumentStruct publicDocumentStruct(Xthis.documentID = 0; this.documentSimValue 二 0; this.documentContent 二 ”None”; this.documentName 二"None”;publicDocumentStruct(int ID, double sim, String name; String contentXthis.docume ntID = ID; this.documentSimValue = sim; this.do
16、cumentName 二 name; this.documentContent 二 content;public String getDocumentContent() retur ndocumentContent;public void setDocumentContent(String docume ntContent) this.documentContent 二docume ntContent;retumdocumentName;public void setDocumentName(String docume ntName) this.documentName =docume ntN
17、ame;public double getDocumentSimValue。retumdocumentSimValue;public void setDocumentSimValue(double docume ntSimValue) this.documentSimValue 二docume ntSimValue;pu bl i ci nt g et D ocumentl D () retumdocume ntID;public void setDocumentlD(intdocumentID) this.docume ntID = documentID;publicDocumentStru
18、ctsortDocBySim(DocumentStructQ docList)public String getDocumentName()DocumentStruct temp;for(inti=0; i<docListength-1; i + +X for(int j=i; j<docList.le ngth- 2;j + +Xif(docUsti.getDocumentSimValueO <docListj.getDocume ntSimValue() Xtemp 二 docListi;docListi =docListU;docListj 二 temp;return
19、docLi st;private String documentName;private String documentContent;private double documentSimValue;privatei ntdocumentID;2. TextVector.java 代码:packageacm.model;public class TextVector publicTextVector(int dimension, inttermCount, intdocumentTermCount, intdocumentCount, int documentC on tainTermCoun
20、tXvectorWeight 二 new doubledime nsion;for(inti=0; i<dimension; i + +X vectorWeighti二 caculateWeight(termCounti, documentTermCount, documentCount, docume ntContain TermCo unti);public double caculateWeight(inttermCount, intdocumentTermCount, intdocumentCount, intdocumentContainTermCountXTF termTF
21、= new TF(termCo unt, docume ntT ermC ount);IDF termIDF 二 newIDF(documentCount1docume ntCon tainTermCo unt);termTF.caculateTFO;termIDF. caculatelDFO;return(termTF.getTf(?termlDF.getldfO);public doubleQ getVectorWeight()retur nvectorWeight;public void setVectorWeight(double vectorWeight) this.vectorWe
22、ight 二 vectorWeight;private doublet vectorWeight;3. TF.java 代码packageacm.model;public dass TFpublic TF()tf 二 0.0;termCo unt = 0; termlnDocumentCount 二 0;public TF(in ttermCo unt,intdocumentTermCount)this.tf 二 0.0;this.termCount 二 termCount;this.termlnDocumentCount 二docume ntT ermCount;public void ca
23、culateTF(Xif(termlnDocumentCount = OXSystemout.println(”请先设 置文档总数! );return;this.tf = (double)termCount /(double)termlnDocumentCount;public double getTf()ret urn tfpu bl i ci nt g etTermCou nt () returntermCount;public void setTermCount(inttermCount) this.termCount 二 termCount;publicintgetTermlnDocu
24、mentCountO returntermlnDocumentCo unt;public voidsetTermlnDocumentCo un t(inttermlnDocumentCo unt)this.termlnDocumentCount 二terml nDocume ntCount;private double tf;privatei nttermCo unt;privatei nttermln Docume ntCount;4. IDF.java 代码packageacm.model;public class IDFpublic IDF()idf 二 0.0;documentCont
25、ainTermCount 二 0; documentCount 二 0;public IDF(i ntdocume ntCount,intdocumentContainTermCountXidf 二 0.0;this.documentCount =docume ntCount;this.documentContainTermCount 二docume ntCon tainTermCo unt;public voidsetDocume ntCoun t(intdocumentCo unt) this.documentCount 二docume ntCount;publicintgetDocume
26、ntContainTermCount() retur ndocume ntContai nTermCo unt;public voidsetDocumentContai nTermCount(intdocumentC on tainTermC ount)this.documentContainTermCount 二 docume ntCon tainTermCo unt;public double getldf() returnidf;public void caculatelDF)if(documentContainTermCount 二二0)Systemout.println(” 请设 置
27、 文档的长度(所有词的个数)! );return;this.idf 二Math.loglO(double)this.documentCount /(double)this.documentContainTermCount);private double idf;privatei ntdocume ntCount;privatei ntdocume ntCon tainTermCount;5. CaculateSim.java 代码packageacm.model;publicintgetDocumentCountO retumdocumentCo unt;public dass Caculat
28、eSim publicCaculateSim(TextVector vectorl,TextVector vector2X doublesimDivide nd 二 OQsimDivider 二 0.0;double tempVectorl=0.0,tempVector2=0.0;for(in ti 二 0;i<vectorl.getVectorWeight().length; i + +) simDividend + 二 vectorl.getVectorWeight()i * vector2.getVectorWeight()i;for(in ti 二 0;i<vectorl.
29、getVectorWeight().length; i + +) tempVectorl + 二Math.powCvectorl.getVectorWeightOEi, 2.0);tempVector2 + 二Math.pow(vector2.getVectorWeight()i, 2.0);simDivider =Math.sqrt(tempVectorl*tempVector2);this.sim 二 simDividend / simDivider;public double getSimO ret urn si m;private double sim;6. MainApp.java
30、代码packageacm.model;public class MainApp public static void main(St门ng args) intTermCount二(1,1,1.1,1.1.1.0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0s0,0,0,1,0,1,0,1,1,0,0s0,0,1,0,0s0,0,1,1,10,0,1,1,0,0,1,1.0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0;intdocumentTermCount二7, 7, 5, 6, 11. 3;intdocumentContainTermCount二 3,1,1,1,1,4,4,2,2,1,2,2,1,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加速器放疗免疫治癌项目可行性研究报告写作模板-申批备案
- 大班教案:我是服装设计师
- 2024年公关活动采购协议
- 二年级下册数学习题课件-五 分米和毫米 好学案|苏教版
- 2024年人力资源服务合同标的及属性描述
- 二年级下册数学教案-1 有余数的除法 北京版
- 家用电器运输与安装方案
- 大班教案:六一儿童节
- 大班数学公开课教案:让谁先吃好呢
- 青少年成长工作坊坊主发言稿
- 1到50带圈数字直接复制
- 医学学员沟通和接诊能力面试评分表
- 创业指导师培训计划
- 幼儿园中班数学《有趣的图形》课件
- 四年级上册数学课件-4.6 整数的四则运算(运算定律)▏沪教版 (共15张PPT)
- 《饲料标签》国标
- DB11-415-2016危险货物道路运输安全技术要求
- 草莓创意主题实用框架模板ppt
- 员工人事档案目录
- 各种各样的叶子 ()通用PPT课件
- 《电工复审》培训课件
评论
0/150
提交评论