我正在使用NLTK和scikitlearn构建一个情感分析模型。我已经决定测试几个不同的分类器,以确定哪一个是最准确的,并最终使用它们作为一种手段,以产生一个信心评分。
用于这一测试的数据集都是评论,标记为阳性或阴性。
我用5,000个评论,5次不同的时间,用6个不同(但非常相似)的数据集训练了每个分类器。每个测试都有5000条新的评论。
我平均每个测试和数据集的准确性,以获得一个整体的平均精度。看一看:
在某些试验中,准确度高达99.912%。事实上,其中一个数据集的最低平均准确率为81.524%。
下面是一个相关的代码片段:
def get_features(comment, word_features):
features = {}
for word in word_features:
features[word] = (word in set(comment))
return features
def main(dataset_name, column, limit):
data = get_data(column, limit)
data = clean_data(data) # filter stop words
all_words = [w.lower() for (comment, category) in data for w in comment]
word_features = nltk.FreqDist(all_words).keys()
feature_set = [(get_features(comment, word_features), category) for
(comment, category) in data]
run = 0
while run < 5:
random.shuffle(feature_set)
training_set = feature_set[:int(len(data) / 2.)]
testing_set = feature_set[int(len(data) / 2.):]
classifier = SklearnClassifier(SVC())
classifier.train(training_set)
acc = nltk.classify.accuracy(classifier, testing_set) * 100.
save_acc(acc) # function to save results as .csv
run += 1虽然我知道这类分类器通常能够返回很好的结果,但这似乎有点太好了,不太正确。
,我需要检查哪些东西才能确保这是有效的?
发布于 2018-02-07 11:57:27
如果你得到的范围从99,66%到81,5%,那就不太好了。
若要分析文本分类情况下的数据集,可以检查:
如果你有这么高的准确度,恭喜你!你的get_features真的很好。:)
https://stackoverflow.com/questions/48662556
复制相似问题