ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:235.80KB ,
资源ID:8096006      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8096006.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息检索与搜索引擎技术实验向量空间模型Word文件下载.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

信息检索与搜索引擎技术实验向量空间模型Word文件下载.docx

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

2、公司、新、网络、访问、卫星、有限、先进、总线、升、平的、是、最、有,这些词作为停用词不能加入系统的有效集合一、代,去除后并不影响原来句子语义的表达也不能算作系统的有效集合。2) 写出d1和d2在VSM中的表示(使用tf*idf,写出各项的数字表达式,具体数值不必实际计算出来)。得到的矩阵:Termd1d2d3d4d5Term出现次数北京13安立文高新技术公司新2网络访问卫星有限先进总线升平说明:TF:表示词项在该文档或者查询词中出现的频度。即该词项出现次数除以该文档的长度(所有词的个数):表示词项k在Di中的出现次数。表示该文档的长度(所有词的个数)IDF:表示词项在文档集合中的重要程度。一个

3、词项出现的文档数越多,说明该词项的区分度越差,其在文档集合中的重要性就越低。N:表示集合中的文档数;表示出现词项k的文档数。d1中各词项的数字表达式“北京”的“安”的“立”的“文”的“高新”的“技术”的“公司”的d2中各词项的数字表达式:“新”的“网络”的“访问”的该部分由代码实现。三、 实验方法、步骤1 建立Java项目,2 建立DocumentStruct.java类文件并编辑3 建立TextVector.java类文件并编辑,如图4-1,图4-2所示图4-1图4-24 建立TF.java类文件并编辑,如图图4-7所示图4-45 建立IDF.java类文件并编辑,如图图4-5所示图4-56

4、 建立CaculateSim.java类文件并编辑,如图4-6所示图4-67 建立MainApp.java类文件并编辑,图4-7所示图4-78 完成后的项目文件夹如图4-8所示图4-89 运行结果如图4-9所示1. DocumentStruct.java代码:packageacm.model;public class DocumentStruct publicDocumentStruct() this.documentID = 0; this.documentSimValue = 0; this.documentContent = None; this.documentName = publi

5、cDocumentStruct(int ID, double sim, 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.document

6、Content = documentContent; public String getDocumentName() returndocumentName; public void setDocumentName(String documentName) this.documentName = documentName; public double getDocumentSimValue() returndocumentSimValue; public void setDocumentSimValue(double documentSimValue) this.documentSimValue

7、 = documentSimValue; publicintgetDocumentID() returndocumentID; public void setDocumentID(intdocumentID) this.documentID = documentID; publicDocumentStruct sortDocBySim(DocumentStruct docList) DocumentStruct temp; for(inti=0; idocList.length-1; i+) for(int j=i; j j+) if(docListi.getDocumentSimValue(

8、) docListj.getDocumentSimValue() ) temp = docListi; docListi = docListj; docListj = temp; returndocList; private String documentName; private String documentContent; private double documentSimValue; privateintdocumentID;2. TextVector.java代码:public class TextVector publicTextVector(int dimension, int

9、 termCount, intdocumentTermCount, intdocumentCount, int documentContainTermCount) vectorWeight = new doubledimension;dimension; vectorWeighti = caculateWeight(termCounti, documentTermCount, documentCount, documentContainTermCounti); public double caculateWeight(inttermCount, intdocumentTermCount, in

10、tdocumentCount, intdocumentContainTermCount) 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; publi

11、c void setVectorWeight(double vectorWeight) this.vectorWeight = vectorWeight; private double vectorWeight;3. TF.java代码public class TF public TF() tf = 0.0; termCount = 0; termInDocumentCount = 0; public TF(inttermCount, intdocumentTermCount) this.tf = 0.0; this.termCount = termCount; this.termInDocu

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

13、intgetTermInDocumentCount() returntermInDocumentCount; public void setTermInDocumentCount(inttermInDocumentCount) this.termInDocumentCount = termInDocumentCount; private double tf; privateinttermCount; privateinttermInDocumentCount;4. IDF.java代码public class IDF public IDF() idf = 0.0; documentContai

14、nTermCount = 0; documentCount = 0; public IDF(intdocumentCount, intdocumentContainTermCount) this.documentCount = documentCount; this.documentContainTermCount = documentContainTermCount; publicintgetDocumentCount() returndocumentCount; public void setDocumentCount(intdocumentCount) publicintgetDocum

15、entContainTermCount() returndocumentContainTermCount; public void setDocumentContainTermCount(intdocumentContainTermCount) public double getIdf() returnidf; public void caculateIDF() if(documentContainTermCount = 0)请设置文档的长度(所有词的个数)! this.idf = Math.log10(double)this.documentCount / (double)this.docu

16、mentContainTermCount); private double idf; privateintdocumentCount; privateintdocumentContainTermCount;5. CaculateSim.java代码public class CaculateSim publicCaculateSim(TextVector vector1, TextVector vector2) doublesimDividend=0.0, simDivider=0.0; double tempVector1=0.0, tempVector2=0.0;vector1.getVec

17、torWeight().length; simDividend += vector1.getVectorWeight()i * vector2.getVectorWeight()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

18、 double getSim() returnsim; private double sim;6. MainApp.java代码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

19、, 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 DocumentStruct6; String documentContent = 北京安立文高新技术公司, 新一代的网络访问技术北京卫星网络有限公司是最先进的总线技术。北京升平卫星技术有限公司的新技术有。技术的公司; TextVectorqueryVector

20、 = new TextVector(16, TermCount5, documentTermCount5, 6, documentContainTermCount);5; i+) TextVectortempVector = new TextVector(16, TermCounti,documentTermCounti, 6, documentContainTermCount); CaculateSimtempSim = new CaculateSim(tempVector, queryVector); DocumentStructtempDoc = new DocumentStruct(i+1, tempSim.getSim(), 文档+(i+1), documentContenti); docListi = tempDoc; docList = docList1.sortDocBySim(docList); System.out.println(以技术的公司为查询关键字得到的前3个结果为:3; System.out.println(i+1) + .+ docListi.getDocumentName()+docListi.getDocumentContent();

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2