我在NaiveBayesClassifier中看到的大多数例子只有两个:'pos','neg'。我想谈谈文本的主题,如娱乐,体育,电影,政治,文学。可以为此训练NaiveBayesClassifier,还是应该在其他地方寻找?
答案 0 :(得分:8)
当然可以。当您将训练集传递到NaiveBayesClassifier.train
方法时,它将为训练集中的每个标签创建一个贝叶斯模型。如果您的训练集有多个标签,那么您的分类器将分类为多个标签。如果您的训练集只有2个标签,那么您的分类器将只提供两个分类。当您要求分类器进行分类时,它将返回给定特征集的概率最高的模型。
在贝叶斯分类器中,为每个标签创建概率模型。选择与最佳特征匹配的模型。这是一个组成的例子:
import nltk
articles = [({'entertaining':0.6, 'informative':0.2, 'statistical':0.6}, 'sports'),
({'entertaining':0.7, 'informative':0.2, 'statistical':0.8}, 'sports'),
({'entertaining':0.1, 'informative':0.7, 'statistical':0.2}, 'news'),
({'entertaining':0.2, 'informative':0.8, 'statistical':0.3}, 'news'),
({'entertaining':0.8, 'informative':0.2, 'statistical':0.1}, 'movies')]
classifier = nltk.NaiveBayesClassifier.train(articles)
label = classifier.classify({'entertaining':0.9, 'informative':0.2, 'statistical':0.1})
print label
#movies
probabilities = classifier.prob_classify({'entertaining':0.9, 'informative':0.2, 'statistical':0.1})
for sample in probabilities.samples():
print "{0}: {1}".format(sample, probabilities.prob(sample))
#news: 0.0580
#sports: 0.2999
#movies: 0.6522