我正在使用 Python NLTK 库中的 MaxEnt 分类器。对于我的数据集,我有许多可能的标签,并且正如预期的那样,MaxEnt 仅返回一个标签。我已经训练了我的数据集并获得了大约 80% 的准确率。我还在未知数据项上测试了我的模型,结果很好。然而,对于任何给定的未知输入,我希望能够根据用于选择标签的一些内部标准 MaxEnt(例如置信度/概率)打印/显示所有可能标签的排名。例如,假设我有a,b,c
尽可能的标签,我用MaxEnt.classify(input)
,我目前得到一个标签,比方说c
。但是,我希望能够看到类似的东西a (0.9), b(0.7), c(0.92)
,所以我明白为什么c
被选择,并可能根据这些参数选择多个标签。对于我的模糊术语表示歉意,我对 NLP 和机器学习相当陌生。
Solution
根据已接受的答案,这里有一个框架代码示例,用于演示我想要什么以及如何实现它。更多分类器示例NLTK网站 http://www.nltk.org/book/ch06.html.
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)
Try prob_classify(input)
它返回带有每个标签概率的字典,请参阅docs http://www.nltk.org/_modules/nltk/classify/maxent.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)