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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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() {

相关文档
最新文档