Okapi BM25 model kullanarak belgeleri sıralamak için Python kullanıyorum.Python pandas: Boşluk sınırlandırılmış '.dat' dosyasından Belge Dönemi matrisini oluştur
IDF (Ters Belge Sıklığı) gibi Score(D,Q)
için gerekli olan bazı terimleri daha verimli bir şekilde hesaplayabildiğimi düşünüyorum (yani: Belirli bir terim için tüm sıfır olmayan satırları sayma (sütun)). Ayrıca, gerçek Puan için matrise yeni bir sütun ekleyebilir ve ardından sıralamak için bu sıraya göre sıralayabilirim. 'De
D1 7:10 2:5
D2 1:2 3:4
D1
belge numarası
ve 7:10
ID 7
görünen terimi ile temsil 10
kez
:
belge, vektörler
aşağıdaki gibi yapılandırılmıştır bir.dat
dosyada saklandığı Şu an aşağıdaki kodu kullanarak listelerin bir listesini okuyordum:
fname = "dtv.dat"
f = open(fname, "r")
l = [x.strip(" \n").split(" ") for x in f.readlines()]
Verilen örneğin şu çıktıyı verir
: en etkili yolu bir Python pandalar için bu dönüştürmek için ne
[['D1', '7:10', '2:5'],['D2' '1:2', '3:4']]
listesi formatı bu liste dikkate alındığında, aşağıdakine benzer DataFrame:
0 1 2 3 7
D1 0 5 0 10
D2 2 0 4 0
Vay, gerçekten çok güzel! – jfive