信息检索与搜索引擎技术实验向量空间模型培训资料_第1页
信息检索与搜索引擎技术实验向量空间模型培训资料_第2页
信息检索与搜索引擎技术实验向量空间模型培训资料_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论