2015-04-01 68 views
1

我正在使用Python NLTK庫中的MaxEnt分類器。對於我的數據集,我有很多可能的標籤,並且正如所料,MaxEnt只返回一個標籤。我訓練了我的數據集並獲得了大約80%的準確性。我還測試了未知數據項目的模型,結果很好。但是,對於任何給定的未知輸入,我希望能夠基於MaxEnt用於選擇一個的內部標準(如置信度/概率)打印/顯示所有可能標籤的排名。例如,假設我有a,b,c作爲可能的標籤,並且我使用MaxEnt.classify(input),我目前獲得了一個標籤,比如說c。但是,我希望能夠查看諸如a (0.9), b(0.7), c(0.92)之類的內容,因此我可以看到爲什麼選擇c,並且可能會根據這些參數選擇多個標籤。對於我的模糊術語抱歉,我對NLP和機器學習相當陌生。在NLTK中顯示標籤概率/信心

解決方案

基於公認的答案,這裏是一個骨架代碼例子來說明我想要的東西,以及如何實現。關於NLTK website的更多分類器示例。

import nltk 

contents = read_data('mydataset.csv') 
data_set = [(feature_sets(input), label) for (label, input) in contents] # User-defined feature_sets() function 
train_set, test_set = data_set[:1000], data_set[1000:] 
labels = [label for (input, label) in train_set] 
maxent = nltk.MaxentClassifier.train(train_set) 
maxent.classify(feature_sets(new_input)) # Returns one label 
multi_label = maxent.prob_classify(feature_sets(new_input)) # Returns a DictionaryProbDist object 
for label in labels: 
    multi_label.prob(label) 

回答

2

嘗試prob_classify(input)

它返回字典的概率爲每個標籤,看docs

+0

謝謝,這就是我要找的!但是,如何遍歷返回的'DictionaryProbDist'對象?我找到了類文檔並測試了'max()'方法,但是我想打印出每個標籤和相關的概率:http://www.nltk.org/_modules/nltk/probability.html – 2015-04-01 21:50:14

+0

沒關係,明白了。我已經添加了一個更完整的代碼示例來顯示我想要的以及如何實現它 – 2015-04-01 22:03:40