【发布时间】:2023-04-09 02:15:02
【问题描述】:
我正在使用 Python 尝试使用 Okapi BM25 model 对文档进行排名。
我认为我可以以更有效的方式计算Score(D,Q) 所需的一些术语,例如 IDF(逆文档频率)(即:计算特定术语(列)的所有非零行) .此外,我可以在矩阵中添加一个新列作为实际分数,然后按此排序以对文档进行排名。
文档术语向量存储在.dat 文件中,其结构如下:
D1 7:10 2:5
D2 1:2 3:4
其中D1 是文档ID,7:10 表示ID 为7 出现10 次的术语
目前,我正在使用以下代码将其读入列表列表:
fname = "dtv.dat"
f = open(fname, "r")
l = [x.strip(" \n").split(" ") for x in f.readlines()]
对于给定的示例产生以下输出:
[['D1', '7:10', '2:5'],['D2' '1:2', '3:4']]
鉴于此列表格式的列表,将其转换为类似于以下内容的 Python pandas DataFrame 的最有效方法是什么:
0 1 2 3 7
D1 0 5 0 10
D2 2 0 4 0
【问题讨论】:
标签: python pandas dataframe document