Bir çift metin dosyasının kosinüs benzerliğini hesaplamak için 84 metin dosyası içeren bir veri kümesi (daha fazla yineleme işlemi olarak) kullanıyorum. Takip ettiğim mantık, önce belge 0 ve 1'den, sonra belge 1 ve 2'ye kadar n-1 ve n. liste dizini aralık dışı Python
my_funcs = {}
for i in range(len(data)):
def foo(x, y):
x = data[i]['body']
y = data[i+1]['body']
tfidf = vectorizer.fit_transform([x, y])
return ((tfidf * tfidf.T).A)[0,1]
foo.func_name = "cosine_sim%d" % i
my_funcs["cosine_sim%d" % i] = foo
globals().update(my_funcs) # Export to namespace
Beklendiği kodum bana aşağıdaki hatayı veriyor: Bunu kodlu yolu şudur
list index out of range
. Döngünün
i = len(data)
ne zaman durduğunu söylemenin bir yolu var mı?
Döngünün durmasını söylemiştiniz, ancak veri [i + 1] 'hata veren şeydir. Belki de menzil istiyorsun (len (data) - 1) '. – msw
'globals()' özelliğini büyük bir nedenden dolayı kullanmayın. Sebebinizin neden mükemmel olduğunu açıklayamadığınız sürece büyük bir sebebiniz olmadığını varsayın. – msw