我从事基于方面的情绪分析。我为每次评审都有一套训练集(text和aspectTerms)。
使用NLTK3,我想构建一个朴素贝叶斯分类器,用于预测看不见的测试数据的各个方面。我将使用功能部分语音标记。
功能方法是什么样的?我如何训练分类器?如何在看不见的数据上测试分类器?
我尝试了以下内容:
我的功能看起来像
def featurepos(word):
return dict(wordpos,true) //return part of speech tagging for a given word
并将分类器构建为
classifier=NaiveBayesClassifier.train(train_set)
#train_set contains [(posofaspect,"aspect")]
现在我想用测试数据测试分类器。
要检查准确性,下面的代码需要test_set
nltk.classify.util.accuracy(classifier,test_set)
test_set
是一个词典列表?如果它是一个字典,它的结构是什么? - 我很困惑。
如果有一个例子,那就太有用了!
答案 0 :(得分:0)
def accuracy(classifier, gold):
results = classifier.classify_many([fs for (fs,l) in gold])
correct = [l==r for ((fs,l), r) in zip(gold, results)]
if correct:
return float(sum(correct))/len(correct)
else:
return 0
因此,测试集是元组列表(特征,相应的标签),函数(1)使用训练的分类器计算这些特征的输出,(2)使用给定的标签面对分类结果和(3)输出命中率