《信息检索导论》部分实验python实现汇总请进入此博客查看。
1.功能描述
用户通过提示输入两个倒排记录表,系统自动实现倒排记录表的合并,并将合并结果输出。
2.概要设计
分为提示输入模块与倒排记录表计算模块两个功能模块。
3.详细设计
总体流程图:
各功能模块流程图:
提示输入模块
倒排记录表计算模块
4.代码实现
def Intersect(p1, p2):
r = []
i, j = 0, 0
lp1, lp2 = len(p1), len(p2)
while(i < lp1 and j < lp2):
if(p1[i] == p2[j]):
r.append(p1[i])
i, j = i + 1, j + 1
elif(p1[i] > p2[j]):
j = j + 1
else:
i = i + 1
return r
print("输入第一个词项的倒排记录表,文档ID之间用“,”分隔:", end = '')
p1 = input().split(",")
p1 = [int(i) for i in p1]
print("输入第二个词项的倒排记录表,文档ID之间用“,”分隔:", end = '')
p2 = input().split(",")
p2 = [int(i) for i in p2]
#p1 = [1,2,3]
#p2 = [3,4,5]
print("合并结果为:", Intersect(p1, p2))
Intersect函数为倒排记录表计算模块,首先通过len函数获取倒排记录表长度,然后通过下标循环获取记录表元素,通过数值判断合并记录表并存储到新的列表中,最终返回该结果列表。
Input函数获取用户输入字符串,split(“,”)函数对字符串进行切分,[int]方法则将字符串转化为数值列表。
注释掉的部分为调试的过程。
5.实验成果
输入倒排记录表[1,2,3]和[2,3,4]得到合并结果如下图。