私はPythonを使ってOkapi BM25 modelを使って文書のランク付けを試みています。Python pandas:空白で区切られた '.dat'ファイルから文書用語行列を生成
IDF(Inverse Document Frequency)のようなScore(D,Q)
に必要な用語をより効率的に計算することができます(つまり、特定の用語(列)のすべての非ゼロ行を数えます)。さらに、実際のScoreの行列に新しい列を追加し、これを並べ替えてドキュメントをランク付けすることができます。
文書の用語ベクトルは次のように構成され.dat
ファイルに格納されている:
D1 7:10 2:5
D2 1:2 3:4
D1
は、文書IDと
7:10
が
10
回
で現れるID 7
と用語を表す
私は、次のコードを使用してリストのリストに目を通しています:
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