这里是我的代码:如何根据数值对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:这就是为什么你不应该复制代码...它可能有错误,我已经修复了错误,我想。 –