收藏 分享(赏)

信息检索与搜索引擎技术实验向量空间模型.doc

上传人:HR专家 文档编号:5186881 上传时间:2019-02-12 格式:DOC 页数:13 大小:722KB
下载 相关 举报
信息检索与搜索引擎技术实验向量空间模型.doc_第1页
第1页 / 共13页
信息检索与搜索引擎技术实验向量空间模型.doc_第2页
第2页 / 共13页
信息检索与搜索引擎技术实验向量空间模型.doc_第3页
第3页 / 共13页
信息检索与搜索引擎技术实验向量空间模型.doc_第4页
第4页 / 共13页
信息检索与搜索引擎技术实验向量空间模型.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

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

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

4、erm 出现次数北京 1 0 1 0 1 3安 1 0 0 0 0 1立 1 0 0 0 0 1文 1 0 0 0 0 1高新 1 0 0 0 0 1技术 1 1 0 0 1 3公司 1 0 1 0 1 3新 0 1 0 0 1 2网络 0 1 1 0 0 2访问 0 1 0 0 0 1卫星 0 0 1 0 1 2有限 0 0 1 0 1 2先进 0 0 0 1 0 1-3-=1log说明:TF:表示词项在该文档或者查询词中出现的频度。即该词项出现次数除以该文档的长度(所有词的个数):表示词项 k在 Di中的出现次数。:表示该文档的长度(所有词的个数)=1IDF:表示词项在文档集合中的重要程度

5、。一个词项出现的文档数越多,说明该词项的区分度越差,其在文档集合中的重要性就越低。N:表示集合中的文档数;:表示出现词项 k的文档数。d1中各词项的数字表达式“北京”的=17log53“安”的=17log51“立”的=17log51“文”的=17log51“高新”的=17log51总线 0 0 0 1 0 1升 0 0 0 0 1 1平 0 0 0 0 1 1-4-“技术”的=17log53“公司”的=17log53d2中各词项的数字表达式:“新”的=17log52“网络”的=17log52“访问”的=17log51“技术”的=17log533) 画出系统的倒排文件示意图。 -5-4) 按照向

6、量夹角的余弦计算公式,给出针对查询“技术的公司”的前 3个反馈结果。该部分由代码实现。三、 实验方法、步骤1 建立 Java项目,2 建立 DocumentStruct.java类文件并编辑3 建立 TextVector.java类文件并编辑,如图 4-1,图 4-2所示-6-图 4-1图 4-24 建立 TF.java类文件并编辑,如图图 4-7所示图 4-45 建立 IDF.java类文件并编辑,如图图 4-5所示-7-图 4-56 建立 CaculateSim.java类文件并编辑,如图 4-6所示图 4-67 建立 MainApp.java类文件并编辑,图 4-7所示-8-图 4-78

7、 完成后的项目文件夹如图 4-8所示图 4-89 运行结果如图 4-9所示1. DocumentStruct.java 代码: packageacm.model;-9-public class DocumentStruct publicDocumentStruct()this.documentID = 0;this.documentSimValue = 0;this.documentContent = “None“;this.documentName = “None“;publicDocumentStruct(int ID, double sim, String name, String co

8、ntent)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 String getDocumentName() return

9、documentName;public void setDocumentName(String documentName) this.documentName = documentName;public double getDocumentSimValue() returndocumentSimValue;public void setDocumentSimValue(double documentSimValue) this.documentSimValue = documentSimValue;publicintgetDocumentID() returndocumentID;public

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

11、 = docListj;docListj = temp;returndocList;-10-private String documentName;private String documentContent;private double documentSimValue;privateintdocumentID;2. TextVector.java 代码:packageacm.model;public class TextVector publicTextVector(int dimension, int termCount, intdocumentTermCount, intdocumen

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

13、tainTermCount)TF termTF = new TF(termCount, documentTermCount);IDF termIDF = new IDF(documentCount, documentContainTermCount);termTF.caculateTF();termIDF.caculateIDF();return(termTF.getTf()*termIDF.getIdf();public double getVectorWeight() returnvectorWeight;public void setVectorWeight(double vectorW

14、eight) 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 = termCount;this.termInDocumentCount = documentTermCou

15、nt;public void caculateTF()if(termInDocumentCount = 0)System.out.println(“请先设置文档总数!“);return;this.tf = (double)termCount / (double)termInDocumentCount;-11-public double getTf() returntf;publicintgetTermCount() returntermCount;public void setTermCount(inttermCount) this.termCount = termCount;publicin

16、tgetTermInDocumentCount() returntermInDocumentCount;public void setTermInDocumentCount(inttermInDocumentCount) this.termInDocumentCount = termInDocumentCount;private double tf;privateinttermCount;privateinttermInDocumentCount;4. IDF.java 代码packageacm.model;public class IDF public IDF() idf = 0.0;doc

17、umentContainTermCount = 0;documentCount = 0;public IDF(intdocumentCount, intdocumentContainTermCount)idf = 0.0;this.documentCount = documentCount;this.documentContainTermCount = documentContainTermCount;publicintgetDocumentCount() returndocumentCount;public void setDocumentCount(intdocumentCount) th

18、is.documentCount = documentCount;publicintgetDocumentContainTermCount() returndocumentContainTermCount;public void setDocumentContainTermCount(intdocumentContainTermCount) this.documentContainTermCount = documentContainTermCount;public double getIdf() returnidf;public void caculateIDF()if(documentCo

19、ntainTermCount = 0)System.out.println(“请设置文档的长度(所有词的个数)!“);return;this.idf = Math.log10(double)this.documentCount / (double)this.documentContainTermCount);-12-private double idf;privateintdocumentCount;privateintdocumentContainTermCount;5. CaculateSim.java 代码packageacm.model;public class CaculateSim

20、 publicCaculateSim(TextVector vector1, TextVector vector2)doublesimDividend=0.0, simDivider=0.0;double tempVector1=0.0, tempVector2=0.0;for(inti=0; ivector1.getVectorWeight().length; i+)simDividend += vector1.getVectorWeight()i * vector2.getVectorWeight()i;for(inti=0; ivector1.getVectorWeight().leng

21、th; i+)tempVector1 += Math.pow(vector1.getVectorWeight()i,2.0);tempVector2 += Math.pow(vector2.getVectorWeight()i,2.0);simDivider = Math.sqrt(tempVector1*tempVector2);this.sim = simDividend / simDivider;public double getSim() returnsim;private double sim;6. MainApp.java 代码packageacm.model;public cla

22、ss 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;intd

23、ocumentContainTermCount = 3,1,1,1,1,4,4,2,2,1,2,2,1,1,1,1;DocumentStruct docList = new DocumentStruct6;String documentContent = “北京安立文高新技术公司“,“新一代的网络访问技术“,“北京卫星网络有限公司“,“是最-13-先进的总线技术。“,“北京升平卫星技术有限公司的新技术有。“,“技术的公司“;TextVectorqueryVector = new TextVector(16, TermCount5, documentTermCount5, 6, document

24、ContainTermCount);for(inti=0; i5; i+) TextVectortempVector = new TextVector(16, TermCounti,documentTermCounti, 6, documentContainTermCount);CaculateSimtempSim = new CaculateSim(tempVector, queryVector);DocumentStructtempDoc = new DocumentStruct(i+1, tempSim.getSim(), “文档“+(i+1), documentContenti);do

25、cListi = tempDoc;docList = docList1.sortDocBySim(docList);System.out.println(“以“ 技术的公司“为查询关键字得到的前3个结果为:“);for(inti=0; i3; i+)System.out.println(i+1) + “.“+ docListi.getDocumentName()+“:“+docListi.getDocumentContent();四、 实验结果、分析和结论本次实验我学会了针对文档进行信息检索系统,向量空间模型是信息检索的一个重要方面,向量空间模型的建立能让你对信息有更好的把握,所以向量空间模型对我们以后信息检索至关重要,在编程方面我来遇到了很多的问题,这些都是在老师的帮助下完成的,在这次实验中我学到了很多。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报