在 NLTK 中显示标签 probability/confidence

Show label probability/confidence in NLTK

我正在使用 Python NLTK 库中的 MaxEnt 分类器。对于我的数据集,我有很多可能的标签,正如预期的那样,MaxEnt returns 只有一个标签。我已经训练了我的数据集并获得了大约 80% 的准确率。我还在未知数据项上测试了我的模型,结果很好。但是,对于任何给定的未知输入,我希望能够 print/display 根据 MaxEnt 用于 select 的一些内部标准对所有可能的标签进行排名,例如 confidence/probability。例如,假设我有 a,b,c 作为可能的标签并且我使用 MaxEnt.classify(input),我目前得到一个标签,比方说 c。但是,我希望能够查看类似 a (0.9), b(0.7), c(0.92) 的内容,这样我就可以了解为什么 c 被 select 编辑,并且可能会根据这些参数选择多个标签。抱歉我的术语模糊,我对 NLP 和机器学习还很陌生。

解决方案

根据已接受的答案,这里有一个框架代码示例来演示我想要什么以及如何实现它。 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)

尝试prob_classify(input)

它 returns 带有每个标签概率的字典,参见 docs