信息检索与搜索引擎技术实验向量空间模型.docx
- 文档编号:9898335
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:20
- 大小:311.93KB
信息检索与搜索引擎技术实验向量空间模型.docx
《信息检索与搜索引擎技术实验向量空间模型.docx》由会员分享,可在线阅读,更多相关《信息检索与搜索引擎技术实验向量空间模型.docx(20页珍藏版)》请在冰点文库上搜索。
信息检索与搜索引擎技术实验向量空间模型
信息检索与搜索引擎技术实验向量空间模型(总12页)
昆明理工大学信息工程与自动化学院学生实验报告
(2014—2015学年第1学期)
课程名称:
信息检索与搜索引擎技术开课实验室:
信自楼4452014年12月23日
年级、专业、班
计科111
学号
5138
姓名
成绩
实验项目名称
向量空间模型
指导教师
李卫疆
教师评语
该同学是否了解实验原理:
A.了解□B.基本了解□C.不了解□
该同学的实验能力:
A.强□B.中等□C.差□
该同学的实验是否达到要求:
A.达到□B.基本达到□C.未达到□
实验报告是否规范:
A.规范□B.基本规范□C.不规范□
实验过程是否详细记录:
A.详细□B.一般□C.没有□
教师签名:
年月日
一、上机目的及内容:
给定文档语料:
d1:
北京安立文高新技术公司
d2:
新一代的网络访问技术
d3:
北京卫星网络有限公司
d4:
是最先进的总线技术。
。
。
d5:
北京升平卫星技术有限公司的新技术有。
。
。
设计一个针对这些文档的信息检索系统。
具体要求是:
1)给出系统的有效词汇集合(说明取舍原因)。
2)写出d1和d2在VSM中的表示(使用tf*idf,写出各项的数字表达式,具体数值不必实际计算出来)。
3)画出系统的倒排文件示意图。
4)按照向量夹角的余弦计算公式,给出针对查询“技术的公司”的前3个反馈结果。
二、实验原理
给定文档语料:
•d1:
北京安立文高新技术公司
•d2:
新一代的网络访问技术
•d3:
北京卫星网络有限公司
•d4:
是最先进的总线技术。
。
。
•d5:
北京升平卫星技术有限公司的新技术有。
。
。
设计一个针对这些文档的信息检索系统。
具体要求是:
1)给出系统的有效词汇集合(说明取舍原因)。
北京、安、立、文、高新、技术、公司、新、网络、访问、卫星、有限、先进、总线、升、平
的、是、最、有,这些词作为停用词不能加入系统的有效集合
一、代,去除后并不影响原来句子语义的表达也不能算作系统的有效集合。
2)写出d1和d2在VSM中的表示(使用tf*idf,写出各项的数字表达式,具体数值不必实际计算出来)。
得到的矩阵:
Term
d1
d2
d3
d4
d5
Term出现次数
北京
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
总线
0
0
0
1
0
1
升
0
0
0
0
1
1
平
0
0
0
0
1
1
说明:
TF:
表示词项在该文档或者查询词中出现的频度。
即该词项出现次数除以该文档的长度(所有词的个数)
:
表示词项k在Di中的出现次数。
:
表示该文档的长度(所有词的个数)
IDF:
表示词项在文档集合中的重要程度。
一个词项出现的文档数越多,说明该词项的区分度越差,其在文档集合中的重要性就越低。
N:
表示集合中的文档数;
:
表示出现词项k的文档数。
d1中各词项的数字表达式
“北京”的
“安”的
“立”的
“文”的
“高新”的
“技术”的
“公司”的
d2中各词项的数字表达式:
“新”的
“网络”的
“访问”的
“技术”的
3)画出系统的倒排文件示意图。
4)按照向量夹角的余弦计算公式,给出针对查询“技术的公司”的前3个反馈结果。
该部分由代码实现。
三、实验方法、步骤
1.建立Java项目,
2.建立类文件并编辑
3.建立类文件并编辑,如图4-1,图4-2所示
图4-1
图4-2
4.建立类文件并编辑,如图图4-7所示
图4-4
1.建立类文件并编辑,如图图4-5所示
图4-5
2.建立类文件并编辑,如图4-6所示
图4-6
1.建立类文件并编辑,图4-7所示
图4-7
2.完成后的项目文件夹如图4-8所示
图4-8
1.运行结果如图4-9所示
1.代码:
;
publicclassDocumentStruct{
publicDocumentStruct(){
=0;
=0;
="None";
="None";
}
publicDocumentStruct(intID,doublesim,Stringname,Stringcontent){
=ID;
=sim;
=name;
=content;
}
publicStringgetDocumentContent(){
returndocumentContent;
}
publicvoidsetDocumentContent(StringdocumentContent){
=documentContent;
}
publicStringgetDocumentName(){
returndocumentName;
}
publicvoidsetDocumentName(StringdocumentName){
=documentName;
}
publicdoublegetDocumentSimValue(){
returndocumentSimValue;
}
publicvoidsetDocumentSimValue(doubledocumentSimValue){
=documentSimValue;
}
publicintgetDocumentID(){
returndocumentID;
}
publicvoidsetDocumentID(intdocumentID){
=documentID;
}
publicDocumentStruct[]sortDocBySim(DocumentStruct[]docList){
DocumentStructtemp;
for(inti=0;i<;i++){
for(intj=i;j<;j++){
if(docList[i].getDocumentSimValue() temp=docList[i]; docList[i]=docList[j]; docList[j]=temp; } } } returndocList; } privateStringdocumentName; privateStringdocumentContent; privatedoubledocumentSimValue; privateintdocumentID; } 2.代码: ; publicclassTextVector{ publicTextVector(intdimension,int[]termCount,intdocumentTermCount,intdocumentCount,int[]documentContainTermCount){ vectorWeight=newdouble[dimension]; for(inti=0;i vectorWeight[i]=caculateWeight(termCount[i],documentTermCount,documentCount,documentContainTermCount[i]); } } publicdoublecaculateWeight(inttermCount,intdocumentTermCount,intdocumentCount,intdocumentContainTermCount){ TFtermTF=newTF(termCount,documentTermCount); IDFtermIDF=newIDF(documentCount,documentContainTermCount); (); (); return()*()); } publicdouble[]getVectorWeight(){ returnvectorWeight; } publicvoidsetVectorWeight(double[]vectorWeight){ =vectorWeight; } privatedouble[]vectorWeight; } } 3.代码 ; publicclassTF{ publicTF(){ tf=; termCount=0; termInDocumentCount=0; } publicTF(inttermCount,intdocumentTermCount){ =; =termCount; =documentTermCount; } publicvoidcaculateTF(){ if(termInDocumentCount==0){ "请先设置文档总数! "); return; } =(double)termCount/(double)termInDocumentCount; } publicdoublegetTf(){ returntf; } publicintgetTermCount(){ returntermCount; } publicvoidsetTermCount(inttermCount){ =termCount; } publicintgetTermInDocumentCount(){ returntermInDocumentCount; } publicvoidsetTermInDocumentCount(inttermInDocumentCount){ =termInDocumentCount; } privatedoubletf; privateinttermCount; privateinttermInDocumentCount; } 4.代码 ; publicclassIDF{ publicIDF(){ idf=; documentContainTermCount=0; documentCount=0; } publicIDF(intdocumentCount,intdocumentContainTermCount){ idf=; =documentCount; =documentContainTermCount; } publicintgetDocumentCount(){ returndocumentCount; } publicvoidsetDocumentCount(intdocumentCount){ =documentCount; } publicintgetDocumentContainTermCount(){ returndocumentContainTermCount; } publicvoidsetDocumentContainTermCount(intdocumentContainTermCount){ =documentContainTermCount; } publicdoublegetIdf(){ returnidf; } publicvoidcaculateIDF(){ if(documentContainTermCount==0){ "请设置文档的长度(所有词的个数)! "); return; } =((double)/(double); } privatedoubleidf; privateintdocumentCount; privateintdocumentContainTermCount; } 5.代码 ; publicclassCaculateSim{ publicCaculateSim(TextVectorvector1,TextVectorvector2){ doublesimDividend=,simDivider=; doubletempVector1=,tempVector2=; for(inti=0;i<().length;i++){ simDividend+=()[i]*()[i]; } for(inti=0;i<().length;i++){ tempVector1+=()[i],; tempVector2+=()[i],; simDivider=((tempVector1*tempVector2)); } =simDividend/simDivider; } publicdoublegetSim(){ returnsim; } privatedoublesim; } 6.代码 ; publicclassMainApp{ publicstaticvoidmain(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=newDocumentStruct[6]; StringdocumentContent[]={"北京安立文高新技术公司", "新一代的网络访问技术", "北京卫星网络有限公司", "是最先进的总线技术。 。 。 ", "北京升平卫星技术有限公司的新技术有。 。 。 ", "技术的公司"}; TextVectorqueryVector=newTextVector(16,TermCount[5],documentTermCount[5],6,documentContainTermCount); for(inti=0;i<5;i++){ TextVectortempVector=newTextVector(16,TermCount[i],documentTermCount[i],6,documentContainTermCount); CaculateSimtempSim=newCaculateSim(tempVector,queryVector); DocumentStructtempDoc=newDocumentStruct(i+1,(),"文档"+(i+1),documentContent[i]); docList[i]=tempDoc; } docList=docList[1].sortDocBySim(docList); "以\"技术的公司\"为查询关键字得到的前3个结果为: "); for(inti=0;i<3;i++){ +"."+docList[i].getDocumentName()+": "+docList[i].getDocumentContent()); } } } 四、实验结果、分析和结论 本次实验我学会了针对文档进行信息检索系统,向量空间模型是信息检索的一个重要方面,向量空间模型的建立能让你对信息有更好的把握,所以向量空间模型对我们以后信息检索至关重要,在编程方面我来遇到了很多的问题,这些都是在老师的帮助下完成的,在这次实验中我学到了很多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 检索 搜索引擎 技术 实验 向量 空间 模型