信息检索——利用SIMNOMERGE余弦相似度计算文档得分

实验目的:
通过实验,使学生掌握利用 SIMNOMERGE余弦相似度计算文档得分的算法。
实验内容:
XML由于文档包含非常复杂的树形结构,属性之间还存在嵌套关系,属性数目也高于参数化搜索和域搜索,因此检索更为复杂。基于向量空间模型的XML搜索中,为更好地提高检索正确率,需要利用SIMNOMERGE余弦相似度计算文档得分
例子

实验要求:
输入:上下文c1,c2,c3与c1的匹配结果CR ,即CR(c1,c1),CR(c1,c2),CR(c1,c3)词项,以及词项t在各文档中的倒排记录表。
输出:每个文档的相似度得分
编程语言:python

SimNoMerge算法的伪代码

num=1
d=[]
dt_w={}
CR={}
while 1:
    dt=input("请输入词项t在文档C{}中的倒排记录表(用,隔开):".format(num)).replace(" ",'').split(',')
    w=list(map(float,input("请输入相应的权重(用,隔开):").replace(" ",'').split(',')))
    d+=dt
    if len(w)==len(w):
        C=eval(input("请输入文档C{}与查询的上下文相似度:".format(num)))
        dt_w[num]=dict(zip(dt,w))
        CR[num]=C
        num+=1
    else:
        print("输入有误!",end = '')
    flag = input('要继续输入吗[y/n]:')
    if flag == 'n':
        break
        
d=set(d)
score={}
for i in d:
    for j in CR.keys():
        if i in dt_w[j].keys():
            score[i]=round(score.get(i,0)+dt_w[j][i]*CR[j],3)
print("相似度得分:",score

程序运行结果如图所示:
运行结果截图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值