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

下载本文档

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

文档简介

1、昆明理工大学信息工程与自动化学院学生实验报告 (2014 2015学年第1学期) 课程名称:信息检索与搜索引擎技术开课实验室:信自楼445 2014 年12月23日 年级、专业、班 计 科 111 学号 2 姓名 成绩 实验项目名称 向量空间模型 指导教师 李卫疆 教 该同学是否了解实验原理: A. 了解口 B.基本了解口 C.不了解口 该同学的实验能力: A.强 口 B.中等 C.差 帅 该冋学的实验是否达到要求:A.达到口 B.基本达到口 C.未达到口 评 实验报告是否规范: A.规范口 B.基本规范口 C.不规范口 实验过程是否详细记录: A.详细口 B. 一般 C.没有口 语 教师签名

2、: 年 月 日 一、 上机目的及内容: 给定文档语料: d1:北京安立文高新技术公司 d2:新一代的网络访问技术 d3:北京卫星网络有限公司 d4:是最先进的总线技术。00 d5:北京升平卫星技术有限公司的新技术有。0。 设计一个针对这些文档的信息检索系统。具体要求是: 1)给出系统的有效词汇集合(说明取舍原因)。 2)写出d1和d2在VSM中的表示(使用tf*idf ,写出各项的数字表达式,具体数值不必实 际计算出来)。 3)画出系统的倒排文件示意图。 4)按照向量夹角的余弦计算公式,给出针对查询“技术的公司”的前3个反馈结果 实验原理 给定文档语料: ? d1:北京安立文高新技术公司 ?

3、d2:新一代的网络访问技术 ? d3:北京卫星网络有限公司 ? d4:是最先进的总线技术。 Term di d2 d3 d4 d5 Term出现 北京升平 卫星技术 有限公司 的新技术 有 0 0 0 设计 一个针对 这些文档的信息检索系统。具体要求是: 1)给出系统的有效词汇集合(说明取舍原因)。 北京、安、立、文、高新、技术、公司、新、网络、访问、卫星、有限、先进、总线、 升、平 的、是、最、有,这些词作为停用词不能加入系统的有效集合 一、代,去除后并不影响原来句子语义的表达也不能算作系统的有效集合。 2)写出di和d2在VSM中的表示(使用tf*idf ,写出各项的数字表达式,具体数值不

4、必实际 计算出来) 得到的矩阵: 次数 TF x ID 0 1 0 1 3 安“ 女V 1 叫 0 0 0 0 1 立2/ ” 1 0 0 0 0 1 文 =1 1丨 0 0 0 0 1 说明: 咼新 1 0 0 0 0 1 技术 h 1 0 0 1 3 TF:表 公司 1 0 1 0 1 3 新 0 1 0 0 1 2 示词项在 网络 0 1 1 0 0 2 访问 0 1 0 0 0 1 该文档或 卫星 o 0 1 0 1 2 有限 0 0 1 0 1 2 者查询词 先进 o 0 0 1 0 1 总线 0 0 0 1 0 1 中出现的 升 0 0 0 0 1 1 平 0 0 0 0 1 1

5、频度。即该 词项出现次数除以该文档的长度(所有词的个数) :表示词项k在D中的出现次数。 :表示该文档的长度(所有词的个数) IDF:表示词项在文档集合中的重要程度。一个词项出现的文档数越多,说明该词项的 区分度越差,其在文档集合中的重要性就越低。 N:表示集合中的文档数; 表示出现词项k的文档数。 di中各词项的数字表达式 “北京”的 15 TF x IDF = y X log 彳 “高新”的 15 TF x DF = - x log - “技术”的 I5 TF x IDF = X log - “公司”的 15 TF x DF = - x log - “文” 女 15 TF x 1DF =

6、- x loy - d2中各词项的数字表达式: “网络”的 15 TF x IDF = - X log- “访问”的 15 TF x DF y x log- “技术”的 I5 TF x【DF = - X log - 2 “新”的 3)画出系统的倒排文件示意图 4)按照向量夹角的余弦计算公式,给出针对查询“技术的公司”的前3个反 馈结果。 该部分由代码实现。 三、实验方法、步骤 1. 建立Java项目, 2. 建立DocumentStruct.java 类文件并编辑 3. 建立TextVector.java 类文件并编辑,如图4-1,图4-2所示 图4-1 图4-2 4. 建立TF.java类文

7、件并编辑,如图图4-7所示 图4-4 5. 建立IDF.java类文件并编辑,如图图4-5所示 商# * 1 paclkg耆a cn.modal: 的 RF * ipwuMer * ionr- fyu. itKiiPF PvblLic 1DFO ( idf .0l d: friThi f epuraa dgcMMHtpackagp 4cm.Sal; tlfluttaar fHjbllc c.lass 4c- * paraB由圧一 publl亡 CACl SlBPiWldVHuMlr*事(1013.日E9L0; 的皿“ laHpVKtorlG.t tcffipVoctor20.9; farllr

8、it . Kvectorli fletVec to rtfeight L length. !*( iwividwnd *= v*ctorl, gitVw tOTVjteiflht ( ( i J mg rJ. atVactorWj.ght (| fi )- for(int 1.B0,; i*:vfrEtorl gtViKtDrWeight I) Iwigth i*)( tt-qs fciMlcrl += Miath-pmcCTOrl.geE.V.tarWexcflI (i t 2.0 t屮叙* MAthgeiVKierWiglit(!)ti.3-*. 图4-6 7. 建立Ma in App.j

9、ava类文件并编辑,图4-7所示 I? * 出:供廿鼻i主於I益茁真UMtli / i - quaryViKtor nawrrHtQurr(9iJ ( doVctcir nw T*KtVirtariTenCDuntfi.wcunm-rTbritCouHTfx). 6, docjrfltCcitJiinTrid 图4-7 8.完成后的项目文件夹如图4-8所示 型 ACModel .9 tv srt 1! acm.model Q Cat u lateSi mJ a va D Docu mentStrurt.java Q IDF.java Q MainApp.java TextVecto r J a

10、 va Q TFjava :乂用E珈库J:应Eg 图4-8 9.运行结果如图4-9所示 packageacm.model; 1. DocumentStruct.java 代码: public class DocumentStruct documentSimValue; publicDocumentStruct() this.documentID = 0; this.documentSimValue = 0; this.documentContent = None; this.documentName = None; publicDocumentStruct(int ID, double sim

11、, String name, String content) this.documentID = ID; this.documentSimValue = sim; this.documentName = name; this.documentContent = content; public String getDocumentContent() returndocumentContent; public void setDocumentContent(String documentContent) this.documentContent = documentContent; public

12、String getDocumentName() returndocumentName; public void setDocumentName(String documentName) this.documentName = documentName; public double getDocumentSimValue() returndocumentSimValue; public void setDocumentSimValue(double documentSimValue) this.documentSimValue = publicintgetDocumentID() return

13、documentID; public void setDocumentID(intdocumentID) this.documentID = documentID; publicDocumentStruct sortDocBySim(DocumentStruct docList) DocumentStruct temp; for(inti=O; ivdocList.length-1; i+) for(int j=i; jdocList.length-1; j+) if(docListi.getDocumentSimValue() docListj.getDocumentSimValue() )

14、 temp = docListi; docListi = docListj; docListj = temp; returndocList; private String documentName; private String documentContent; private double documentSimValue; privateintdocumentID; 2. TextVector.java 代码: packageacm.model; public class TextVector publicTextVector(int dimension, int termCount, i

15、ntdocumentTermCount, intdocumentCount, int documentContainTermCount) vectorWeight = new doubledimension; for(inti=0; idimension; i+) vectorWeighti= caculateWeight(termCounti, documentTermCount, documentCount, documentContainTermCounti); public double caculateWeight(inttermCount, intdocumentTermCount

16、, intdocumentCount, intdocumentContainTermCount) TF termTF = new TF(termCount, documentTermCount); IDF termIDF = new IDF(documentCount, documentContainTermCount); termTF.caculateTF(); termlDF.caculatelDF(); return(termTF.getTf()*termlDF.getldf(); public double getVectorWeight() returnvectorWeight; p

17、ublic void setVectorWeight(double vectorWeight) this.vectorWeight = vectorWeight; private double vectorWeight; 3. TF.java 代码 packageacm.model; public class TF public TF() tf = 0.0; termCount = 0; termInDocumentCount = 0; public TF(inttermCount, intdocumentTermCount) this.tf = 0.0; this.termCount = t

18、ermCount; this.termInDocumentCount = documentTermCount; public void caculateTF() if(termlnDocumentCount = 0) System.out.println(” 请先设置文档 总数! ”); return; this.tf = (double)termCount / (double)termlnDocumentCount; public double getTf() returntf; publicintgetTermCount() returntermCount; public void set

19、TermCount(inttermCount) this.termCount = termCount; publicintgetTermInDocumentCount() returntermlnDocumentCount; public void setTermlnDocumentCount(inttermlnDocumentCo unt) this.termInDocumentCount = termInDocumentCount; private double tf; privateinttermCount; privateinttermlnDocumentCount; 4. IDF.j

20、ava 代码 packageacm.model; public class IDF public IDF() idf = 0.0; documentContainTermCount = 0; documentCount = 0; public IDF(intdocumentCount, intdocumentContainTermCount) idf = 0.0; this.documentCount = documentCount; this.documentContainTermCount = documentContainTermCount; publicintgetDocumentCo

21、unt() returndocumentCount; public void setDocumentCount(intdocumentCount) this.documentCount = documentCount; publicintgetDocumentContainTermCount() returndocumentContainTermCount; public void setDocumentContainTermCount(intdocumentCo ntainTermCount) this.documentContainTermCount = documentContainTe

22、rmCount; public double getIdf() returnidf; public void caculateIDF() if(documentContainTermCount = 0) System.out.println(” 请设置文档的 长度(所有词的个数)!); return; this.idf = Math.log10(double)this.documentCount / (double)this.documentContainTermCount); private double idf; privateintdocumentCount; privateintdoc

23、umentContainTermCount; 5. CaculateSim.java 代码 packageacm.model; public class CaculateSim publicCaculateSim(TextVector vector1, TextVector vector2) doublesimDividend=0.0, simDivider=0.0; double tempVector 仁 0.0, tempVector2=0.0; for(inti=0; ivector1.getVectorWeight().length; i+) simDividend += vector

24、1.getVectorWeight()i * vector2.getVectorWeight()i; for(inti=0; ivector1.getVectorWeight().length; i+) tempVectorl += Math.pow(vector1.getVectorWeight()i, 2.0); tempVector2 += Math.pow(vector2.getVectorWeight()i, 2.0); 新技术公司, 噺一 simDivider = Math.sqrt(tempVector1*tempVector2); this.sim = simDividend

25、/ simDivider; public double getSim() returnsim; private double sim; 6. MainApp.java 代码 packageacm.model; public class MainApp public static void main(String 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,0,0,0,0,1,0,1,0,1,1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0, 1,0,0,0,0,1,1,1,0,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,1; DocumentStruct docList = new Docume

温馨提示

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

评论

0/150

提交评论