向量相似度的算法实现(信息检索)python_第1页
向量相似度的算法实现(信息检索)python_第2页
向量相似度的算法实现(信息检索)python_第3页
全文预览已结束

下载本文档

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

文档简介

1、向量相似度的算法实现(信息检索)ython向量相似度的算法实现实验目的:通过实验,使学生掌握向量相似度的基本实现方法。实验内容:向量空间模型是信息检索中最重要的形式化模型之一,向量相似度是对向量空间模型评分的重要依据。本实验需要编程实现向量相似度的基本算法P78要求:输入:查询(如bestcarinsurance),文档(如carinsuranceautoinsurance),文档总数N的值(如1000000),文档中每个词的文档频率df输出:向量相似度的值编程语言:Python例子余弦相似度计算样例:nncdtnP86查询:bestcarinsurance*文档:Varinsuranceau

2、toinsurance(N-1000000)|词顶!査询內枫L_Jtfwt出idfW1/q=wf+idftfvzfautoDD50002.30110.4L0best11500001.31.300car11100002.Q2.011D.4:02insuence1110003.03.02?0.822.415idf-lcgN/dfVl2+l2+22=2.44最后结果二0+0一B2+23.2S伪代码余弦相似度计算算法CosineScoheq)ftoatScoresAf=0ffetLengthNforeachquerytermtdocalculateWf.ffandfetchpostingslistfo

3、rtForeachpair(c/,inpostingslistBdo5cofestf+=w/f.dxwtReadthearrayLengthforeachddoScoresd=Scorescf/LengthreturnTopKcomponentsofScore5代码完整版使用nnc.ltn方法importmathimportredefVector_similarity():输入查询和文档injury=input(”请输入查询:)doc=input(请输入文档:)injury=bestcarinsurancedoc=carinsuranceautoinsurance输入检索(参与计算)的词项并且

4、输入dfword_retrieve=df=while(1):tem=input(请输入词项并按下回车,结束直接按下回车)iftem!=:word_retrieve.append(tem)df.append(int(input(请输入的df:.format(tem)else:breakdf=000,0000,10000,1000word_retrieve=auto,best,car,insurance输入文档总频率N=int(input(输入文档总频率:)N=1000000将输入的查询和文档njury和doc提取英文单词并存至列表injury_list=re.findall(a-zA-Z0-9|

5、-+,injury)doc_list=re.findall(a-zA-Z0-9|-+,doc)print(喳询的所有单词项为:,injuryist)print(文档的所有单词项为:,doc_list)计算待检索词项在查询中和在文档中出现的频率并存入字典dic_injury=dic_doc=foriinrange(len(word_retrieve):count=0forjinrange(len(injury_list):ifword_retrievei=injury_listj:count+=1dic_injuryword_retrievei=countcount=0forjinrange(l

6、en(doc_list):ifword_retrievei=doc_listj:count+=1dic_docword_retrievei=countprint(查询中tf为:,dic_injury)print(文档中tf为:,dic_doc)计算idfidf=mathog(N/per_df,10)forper_dfindfprint(查询中idf为:,idf)W_tq=W_td=计算余弦平方sum_doc=0foriindic_doc.values():sum_doc+=pow(i,2)pow2=pow(sum_doc,0.5)print(pow2(即平方和开根号)值为:,pow2)计算W_

7、tq,W_tdinner_mutiply=0计算内积foriinrange(len(word_retrieve):W_tqword_retrievei=dic_injuryword_retrievei*idfiW_tdword_retrievei=dic_docword_retrievei/pow2inner_mutiply+=W_tqword_retrievei*W_tdword_retrieveiprint(查询的W_tq=wf(查询)*idf值为:,W_tq)print(喳询的W_td=wf(文档)/pow2(即平方和开根号)值为:,W_td)print(内积和最终结果为:n,inner

8、_mutiply)if_name_=_mainVector_similarity()运行截图C:serjkaiVLppDataLzcalProeiairisPythatiPytliojiazvpythen,eseC:/Ls-ers/kB4/实监牡pyl愉人査训:文档:诸轴入词顼井按下回车,纳取直接樓下回牟M输入刖忆的df:谥籀入网顼并携1回车,纳東直撰按下何车词碘并按下回乍,姑束言接按F何菲诸辎入car的df:债输入词项井按下回牟.阳束直按按卜胃车诸输入同项井按下11.斷束直按检下回牟输入丈档息额斗:査曲的所有单词两为Ibesthhcar1ingurance文轄购府尊单诃妆为:c?ir.insnr?UH:eh-insurance住阿中tf为:fmuta:0,Im-st:L,iai1:L”iAaurance:1丈档中tf为:fauto.hbest:0htai:LhinurajtceR:2耗询中i武为:2.3010299956(3981.1.301029995663981.2.0,2.999999999999E6(UP平方拘J号)ftl为:2.4494397427B3178SfflirKHLtg=TfrHiitoh:0.0.:.W02W9563981.hcar2,flrinwiimmw:玄船99瞬9网朝轴血训的(丈档).巾冲空(叩平方利丿f用?卄

温馨提示

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

评论

0/150

提交评论