信息检索与搜索引擎技术实验向量空间模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
昆明理工大学信息工程与自动化学院学生实验报告
( 2014—2015学年第1学期)
课程名称:信息检索与搜索引擎技术开课实验室:信自楼445 2014年12月23日
一、上机目得及内容:
给定文档语料:
d1: 北京安立文高新技术公司
d2: 新一代得网络访问技术
d3: 北京卫星网络有限公司
d4: 就是最先进得总线技术。。。
d5: 北京升平卫星技术有限公司得新技术有。。。
设计一个针对这些文档得信息检索系统。具体要求就是:
1)给出系统得有效词汇集合(说明取舍原因)。
2)写出d1与d2在VSM中得表示(使用tf*idf,写出各项得数字表达式,具体数值不必实
际计算出来)、
3)画出系统得倒排文件示意图。
4)按照向量夹角得余弦计算公式,给出针对查询“技术得公司”得前3个反馈结果、
二、实验原理
1)给出系统得有效词汇集合(说明取舍原因)、
北京、安、立、文、高新、技术、公司、新、网络、访问、卫星、有限、先进、总线、升、平
得、就是、最、有,这些词作为停用词不能加入系统得有效集合
一、代,去除后并不影响原来句子语义得表达也不能算作系统得有效集合。
2)写出d1与d2在VSM中得表示(使用tf*idf,写出各项得数字表达式,具体数值不必实际计
算出来)、
得到得矩阵:
说明: TF:表示词项在
该文档或
者查询词
中出现得频度。即该词项出现次数除以该文档得长度(所有词得个数)
:表示词项k 在D i 中得出现次数。
:表示该文档得长度(所有词得个数)
IDF:表示词项在文档集合中得重要程度。一个词项出现得文档数越多,说明该词项得区分度越差,其在文档集合中得重要性就越低。
N:表示集合中得文档数; :表示出现词项k 得文档数。 d1中各词项得数字表达式
“北京"得
“安”得
“立”得
“文”得
北京 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
“高新”得
“技术”得
“公司”得
d2中各词项得数字表达式:
“新"得
“网络”得
“访问"得
“技术"得
3)画出系统得倒排文件示意图。
4)按照向量夹角得余弦计算公式,给出针对查询“技术得公司"得前3个反馈
结果。
该部分由代码实现。
三、实验方法、步骤
1.建立Java项目,
2.建立DocumentStruct.java类文件并编辑
3.建立TextVector.java类文件并编辑,如图4-1,图4-2所示
图4—1
图4-2
4.建立TF、java类文件并编辑,如图图4-7所示
图4—4
5.建立IDF。java类文件并编辑,如图图4—5所示
图4-5
6.建立CaculateSim。java类文件并编辑,如图4-6所示
图4-6
7.建立MainApp、java类文件并编辑,图4-7所示
图4-7
8.完成后得项目文件夹如图4-8所示
图4-8
9.运行结果如图4-9所示
1.DocumentStruct。java代码:
packageacm.model;
public class DocumentStruct{
ﻩpublicDocumentStruct(){ﻩthis。documentID =0;
ﻩﻩthis。documentSimValue=0;
this、documentContent =”None”;
this.documentName ="None";
ﻩ}
publicDocumentStruct(int ID, double
sim, Stringname, 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 = documentC
ontent;
ﻩ}
publicString getDocumentName() {
ﻩﻩreturndocumentName;
}
publicvoid setDocumentName(String documentName){
ﻩﻩthis。documentName= documentName;
ﻩ}
ﻩpublic double getDocumentSimValue() {ﻩﻩreturndocumentSimValue;
ﻩ}
ﻩpublic void setDocumentSimValue(double documentSimValue) {
ﻩthis、documentSimValue =docume ntSimValue;
ﻩ}
ﻩpublicintgetDocumentID() {
ﻩreturndocumentID;
}
ﻩpublicvoid setDocumentID(intdocumentID) {
ﻩthis。documentID=documentID;
ﻩ}
ﻩpublicDocumentStruct[] sortDocByS
im(DocumentStruct[]docList){
ﻩDocumentStructtemp;
for(inti=0; i ﻩfor(int j=i; j〈docList。length—1; j++){ ﻩif(docList[i]、getDocum entSimValue() <docList[j]。getD ocumentSimValue() ){ ﻩﻩtemp= docList[i]; ﻩﻩﻩdocList[i] = docList[j]; ﻩﻩﻩﻩdocList[j]=temp; ﻩ} ﻩﻩ} } ﻩreturndocList; } ﻩprivate String documentName; private StringdocumentContent; ﻩprivate doubledocumentSimValue; ﻩprivateintdocumentID; } 2.TextVector。java代码: packageacm、model; publicclass TextVector { publicTextVector(intdimension, int[]termCount,intdocument TermCount, intdocumentCount, int[] documentContainTermCount){ ﻩﻩvectorWeight=new double[dimensi on]; for(inti=0; i (termCount[i], documentTermCount, documentCount,documentContainTe rmCount[i]); ﻩ} ﻩ} public double caculateWeight(intter mCount,intdocumentTermCount, int documentCount, intdocumentContainT ermCount){ ﻩTF termTF =new TF(termCount, documentTermCount); IDF termIDF= newIDF(documentCount, documentContainTermCou nt); ﻩﻩtermTF、caculateTF(); ﻩtermIDF.caculateIDF(); ﻩreturn(termTF。getTf()*termIDF。get Idf()); ﻩ} public double[] getVectorWeight() {