我正在使用随机森林将情绪应用于字符串。所以基本上在清理评论之后,这本质上意味着停用词(nltk.corpus -> stopwords
我从中删除单词为no、not、nor、won、was、 weren)以及非字母字符,并且所有内容都是小写的。CountVectorizer
with 参数(analyzer = "word", tokenizer = None, preprocessor = None, ngram_range=(1, 3), stop_words = None, max_features = 5500)
构建词汇表并将其添加到数组numpy
中。我也在使用 100 棵树。
用分类器分割数据后,test_size = .1
进行训练、拟合和评分。
score = forest.score(X_test, y_test)
: 0.882180882181
混淆矩阵,没有归一化:
[[2256 503]
[ 519 5269]]
归一化混淆矩阵:
[[ 0.82 0.18]
[ 0.09 0.91]]
ROC 曲线显示 RandomForest (RF) 和具有 LinearRegression(RF + LR) 的 RandomForest:
所以问题是,即使结果看起来非常好,我也会得到错误的结果,例如:
“这部电影不好” ->否定
“这部电影还不错” ->否定
“音乐和画面不好” ->正面
“这部电影没有意义” ->积极
所以以上只是一些有问题的案例,但你可以大致了解我目前面临的问题是什么(即使使用 3-gram 分类器也无法正确预测否定)。我认为它也可能是训练集,没有足够的否定案例,所以它无法学习。
你有什么建议可以改进或改变,以便正确分类否定吗?