在NLTK中显示标签概率/置信度

时间:2015-04-01 15:47:34

标签: python machine-learning nlp nltk

我正在使用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 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)

1 个答案:

答案 0 :(得分:2)

尝试prob_classify(input)

它会返回每个标签的概率字典,请参阅docs