信息检索与搜索引擎技术 向量空间模型_第1页
信息检索与搜索引擎技术 向量空间模型_第2页
信息检索与搜索引擎技术 向量空间模型_第3页
信息检索与搜索引擎技术 向量空间模型_第4页
信息检索与搜索引擎技术 向量空间模型_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

昆明理工大学信息工程与自动化学院学生实验报告(2018—2019学年第1学期)课程名称:信息检索与搜索引擎技术开课实验室:信自3402018年12月10日年级、专业、班学号姓名成绩实验项目名称向量空间模型指导教师毛存礼教师评语该同学是否了解实验原理:A.了解口B.基本了解口C.不了解口该同学的实验能力:A.强口B.中等口C.差口该同学的实验是否达到要求:A.达到口B.基本达到口C.未达到口实验报告是否规范:A.规范口B.基本规范口C.不规范口实验过程是否详细记录:A.详细口B.一般口C.没有口教师签名:年月日一、实验目的及要求目的:1、了解向量空间模型的基本概念;2、掌握向量之间相似性的计算方法;3、熟悉网页和查询词转化为向量的基本思路。要求:编写程序,实现向量空间模型的基本算法。二、系统及环境系统:Windows10Professional;软件:PyCharm2017.1+python3.5;工具:math。

三、实验方法和步骤通过流程图及文字详细描述实验的方法及步骤,并提供关键代码。1.流程图:E1-1橄本进行筷姓理^1-21.流程图:E1-1橄本进行筷姓理^1-2相似度计算2.实验方法及步骤:空间向量模型(VSM),把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。M个无序特征项ti,词根/词/短语/其他每个文档dj可以用特征项向量来表示(a1j,a2j,…,aMj)权重计算,N个训练文档AM*N=(aij)文档相似度比较1)Cosine计算,余弦计算的好处是,正好是一个介于0到1的数,如果向量一致就是1,如果正交就是0,符合相似度百分比的特性,余弦的计算方法为,向量内积/各个向量的模的乘积.2)内积计算,直接计算内积,计算强度低,但是误差大。向量空间模型(或词组向量模型)是一个应用于信息过滤,信息撷取,索引以及评估相关性的代数模型。SMART是首个使用这个模型的信息检索系统。文件(语料)被视为索引词(关键词)形成的多次元向量空间,索引词的集合通常为文件中至少出现过一次的词组。搜寻时,输入的检索词也被转换成类似于文件的向量,这个模型假设,文件和搜寻词的相关程度,可以经由比较每个文件(向量)和检索词(向量)的夹角偏差程度而得知。实际上,计算夹角向量之间的余弦比直接计算夹角容易:余弦为零表示检索词向量垂直于文件向量,即没有符合,也就是说该文件不含此检索词。通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。3.代码:importmath#两篇待比较的文档的路径sourcefile='P2.txt's2='T2.txt'#关键词统计和词频统计,以列表形式返回defCount(resfile):t={)infile=open(resfile,'r',encoding='UTF-8')f=infile.readlines()count=len(f)print(count)infile.close()s=open(resfile,'r',encoding='UTF-8')s=open(resfile,'r',encoding='UTF-8-SIG')i=0whilei<count:line=s.readline()#去换行符line=line.rstrip('\n')print(line)words=line.split("")print(words)forwordinwords:ifword!=""andt.__contains__(word):num=t[word]t[word]=num+1elifword!="":t[word]=1i=i+1#字典按键值降序dic=sorted(t.items(),key=lambdat:t[1],reverse=True)print(dic)print()s.close()return(dic)defMergeWord(T1,T2):MergeWord=[]duplicateWord=0forchinrange(len(T1)):MergeWord.append(T1[ch][0])forchinrange(len(T2)):ifT2[ch][0]inMergeWord:duplicateWord=duplicateWord+1else:MergeWord.append(T2[ch][0])print(重复次数='+str(duplicateWord))#打印合并关键词print(MergeWord)returnMergeWord#得出文档向量defCalVector(T1,MergeWord):TF1=[0]*len(MergeWord)forchinrange(len(T1)):TermFrequence=T1[ch][1]word=T1[ch][0]i=0whilei<len(MergeWord):ifword==MergeWord[i]:TF1[i]=TermFrequencebreakelse:i=i+1#print(TF1)returnTF1defCalConDis(v1,v2,lengthVector):#计算出两个向量的乘积B=0i=0whilei<lengthVector:B=v1[i]*v2[i]+Bi=i+1print(乘积='+str(B))#计算两个向量的模的乘积A=0A1=0A2=0i=0whilei<lengthVector:A1=A1+v1[i]*v1[i]i=i+1print('A1='+str(A1))i=0whilei<lengthVector:A2=A2+v2[i]*v2[i]i=i+1#print('A2='+str(A2))A=math.sqrt(A1)*math.sqrt(A2)print('两篇文章的相似度=■+format(float(B)/A,".6f"))T1=Count(sourcefile)print("文档1的词频统计如下:")print(T1)print()T2=Count(s2)print("文档2的词频统计如下:")print(T2)print()#合并两篇文档的关键词

mergeword=MergeWord(T1,T2)print(mergeword)print(len(mergeword))#得出文档向量v1=CalVector(T1,mergeword)print("文档1向■化得到的向■如下:“)print(v1)print()v2=CalVector(T2,mergeword)print("文档2向■化得到的向■如下:“)print(v2)print()#计算余弦距离CalConDis(v1,v2,len(v1))四、实验结果与分析(1)实验运行结果截图1)P2:我看见过波澜壮阔的大海,玩赏过水平如镜的西湖,却从没看见过漓江这样的水。漓江的水真静啊,静得让你感觉不到它在流动;漓江的水真清啊,清得可以看见江底的沙石。T2:我攀登过峰峦雄伟的泰山,游览过红叶似火的香山,却从没看见过桂林这一带的山。桂林的山真奇啊,一座座拔地而起,各不相连,像老人,像巨象,像骆驼,奇峰罗列,形态万千。相似度为0tiBlb」dT■v-llrprujs7V岛项目tiBlb」dT■v-llrprujs7V岛项目fl*-space.py=P2.txt=T2.txt▼.信急检索谯四上学期\信息概论▼■daopai=1.txt一daopai.pyjiebafenci&contenttxtrdict.txtjiebafenci.py■outputtxt►■pagerank▼■vector_space=P2.txt■■space.pyHT2.txtimportmath二两篇待比较的文档的路径sourcefile=‘P2.txt’s2=*T2.txt*#关键词统计和词频统计,以列表形式返P回defComt(resfile):t={)infile=open(resfile,'r',encoding*UTF-8*)f=infile,readlines0运行space运行"D:\ProgxajnFiles\Python35\python.«ce"D:/大四上学期/信息概论/信息检索/vectoi_space/spacepy文档1的词频统计如下:[(籀江的水真静啊,静得让你感觉不到它在流动;篱江的水真青啊,青得可以看见江底的沙石。’,1),('我看见过波澜壮阔的大海,玩赏对水平如慎的西湖,却从没看见对籀江这样的水。’,1)]文档2的词频统计如下:[(我攀登过峰峦雄伟的秦山,游览对红叶似火的香山,却从没看见对桂林这一带的山。’,1).C桂林的山真奇明,一座座拔地而起,各不相连,像走入,像巨象,像骆驼,奇峰罗列,形态万千。’,D]文档1向里化得到的向里如下:[LL0?0]I文档Z向重化得到的向重如下:[0,0,L1]两篇文章的相似度=0000000

2)P2:我看见过波澜壮阔的大海,玩赏过水平如镜的西湖,却从没看见过漓江这样的水。漓江的水真静啊,静得让你感觉不到它在流动;漓江的水真清啊,清得可以看见江底的沙石。T2:我看见过波澜壮阔的大海,玩赏过水平如镜的西湖,却从没看见过漓江这样的水。漓江的水真静啊,静得让你感觉不到它在流动;漓江的水真清啊,清得可以看见江底的沙石。炉项目,#•r7:Structure.V.Proji▼■信皂检索D:休四上学期\信息.概馅&daopaiLbdAdaopai.pyjiebafencicontent.txtdict.txt.jiebafenci.py,outputtxt►■pagerank▼,outputtxt►■pagerank▼■vector_space19345=|P2.txt■space.py=T2.txtj=P2.txt=T2.txtimportmath#两篇待比较的文档的路径sourcefile='P2.txt*s2=*T2.txt*IM关键词统计和词频统计,以列表形式返P回defCount(resfile):t={}infile=open(resfile,'r*,encodings*UTF-8*)f=infile,readlines0运行spacesswonpLL.-z"D:\ProgmmFiles\Pytlioii25\python.色D:/大四上学期/信息概论/信息检索/vectoi_space/space.py文档1sswonpLL.-z[('篱江的水真静咽,静得让你感觉不到它在流动;麓江的水真清响,清得可以看见江底的沙石。’,1)>('我看见过波澜壮阔的大海,玩赏过水平如慎的西湖,却从没看见过篱江这样的水。’,D]文档坦的词频统计如下:[('漓江的水真静明,静得让你感觉不到它在流动;漓江的水真清啊,清得可以看见江底的沙石。’,1),('我看见过波澜壮阔的大海,玩赏过水平如愤的西湖,却从没看见过漓江这样的水。’,1)]文档1向重化得到的向里如下:[L1]文档啊里化得到的向里如下:El1]两篇文章的相似度=L000000五、实验总结与体会通过这次实验,我对分词有了更深的了解,在文本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论