我正在使用Python尝试使用Okapi BM25 model对文档进行排名。Python熊猫:从空白分隔的'.dat'文件生成文档 - 矩阵
我认为我可以更有效地计算Score(D,Q)
所需的某些术语,如IDF(Inverse Document Frequency)(即:计算特定术语(列)的所有非零行)。此外,我可以在矩阵中为实际分数添加一个新列,然后按此排序以对文档进行排序。
文档术语矢量被存储在一个.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大熊猫数据框类似以下内容:
0 1 2 3 7
D1 0 5 0 10
D2 2 0 4 0
哇,很漂亮的确! – jfive