這裏是我的代碼:如何根據數值對MLE概率進行排序?
bigrams = tuple(nltk.bigrams(tokens))
bi_freq = nltk.FreqDist(bigrams)
bigram_count = 0
for k,v in sorted(bi_freq.items(), key = lambda (k, v) : (v, k), reverse = True):
number_unigrams = tokens.count(k[0])
MLE_Prob = v/number_unigrams
bigram_count += v
print k, MLE_Prob
但結果不按MLE_Prob
值。這意味着,排序'v
'的值是徒勞的(也許這是理所當然的事情)。 我想要的是,MLE_Prob
應根據頻率及其匹配的'k
'值(即bigram
)進行排列。
("red", "apple") 0.083222
("brown", "apple") 0.073222
這樣這樣。我不知道如何對這個結果應用排序功能。
我得到一個屬性錯誤,元組對象沒有屬性'iteritems':(,但appriciate你的建議。 –
@YounginNa:這就是爲什麼你不應該複製代碼...它可能有錯誤,我已經修復了錯誤,我想。 –