数据准备
2.1.1 停用词
具体请看Python做文本挖掘的情感极性分析(基于情感词典的方法)(同1.1.4)
2.1.2 正负向语料库
来源于有关中文情感挖掘的酒店评论语料,
http://www.datatang.com/data/11936
其中正向7000条,负向3000条,当然也可以参考情感分析资源使用其他语料作为训练集。
2.1.3 验证集
Amazon上对iPhone 6s的评论,来源已不可考……
数据预处理
2.2.1 分词
Python做文本挖掘的情感极性分析(基于情感词典的方法)(同1.2.1)
2.2.2 去除停用词
Python做文本挖掘的情感极性分析(基于情感词典的方法)(同1.2.2)
2.2.3 训练词向量
模型的输入需是数据元组,那么就需要将每条数据的词语组合转化为一个数值向量,常见的转化算法有但不仅限于如下几种:
Bag of Words
TF-IDF
Word2Vec
在此选用Word2Vec将语料转化成向量
2.2.4 标准化
虽然笔者觉得在这一问题中,标准化对模型的准确率影响不大,当然也可以尝试其他的标准化的方法。
# standardizationX = scale(X)
2.2.5 降维
根据PCA结果,发现前100维能够cover 95%以上的variance。
构建模型
2.3.1 SVM (RBF) + PCA
SVM (RBF)分类表现更为宽松,且使用PCA降维后的模型表现有明显提升,misclassified多为负向文本被分类为正向文本,其中AUC = 0.92,KSValue = 0.7。
2.3.2 MLP
MLP相比于SVM (RBF),分类更为严格,PCA降维后对模型准确率影响不大,misclassified多为正向文本被分类为负向,其实是更容易overfitting,原因是语料过少,其实用神经网络未免有些小题大做,AUC = 0.91。
模型评价
实际上,第一种方法中的第二点缺点依然存在,但相比于基于词典的情感分析方法,基于机器学习的方法更为客观。另外由于训练集和测试集分别来自不同领域,所以有理由认为训练集不够充分,未来可以考虑扩充训练集以提升准确率。
来源:机器学习算法与python学习