我正在從事Python編程。 問題是我的代碼太慢,無法在幾天內獲取數據。如何減少縮短Python編程中運行時間的for-loops數量?
我的代碼如下。而詞典的數據就是這樣的; dic [0] = ['happy',100,[1234,1245,1515,1785,... up to 100]]也就是說,dic [0] [1]表示dic [0] [2 ]。我想要做的是計算DICE係數(詞相似度)(dic [i] [0]代表一個詞(在上面的例子中,'happy'),dic [i] [1]代表dic [i ] [2](只是len(dic [i] [2])),dic [i] [2]表示該單詞(dic [i] [0])出現的行號列表。在語料庫行號)
DICE係數的計算方法以這種方式:兩個單詞(WORD1,單詞2)一起在一個句子/(數字1 + WORD2的總外觀)的數量的總外觀的外觀的數目。
總數據是(很)很大。我的程序已經工作了2天..但沒有結果..我必須儘快使用結果,因爲這項工作的最後期限是下週..
是否有任何替代(好得多)的算法,我可以馬上執行? 謝謝。
for j in range(len(dic)):
for k in range(len(dic)):
score_temp = 0
for r in range(len(dic[j][2])):
if(dic[j][2][r] in dic[k][2]):
score_temp += 1
score_final = float(score_temp)/(dic[j][1] + dic[k][1])
dice_cursor.execute('insert into dices values(?,?,?)', (dic[j][0], dic[k][0], score_final))
請,至少說明真正的問題。你想在這裏做什麼? –
@Ashwini Chaudhary我改變了我的帖子。對不起,簡單的解釋。 – GoodGJ
「dic」實際上是一個'dict',其鍵是從0到'len(dic)'的順序自然數?如果是這樣,爲什麼你不使用'list'? – abarnert