基于机器学习的NLP情感分析(二)—- 分类问题

前文提到了如何把一个文本转换为相应的词向量,本文讨论的是如何进行分类。

feature相关性

首先,需要看看我之前选出来的feature,是否能够满足需求。

Stary 2017-07-18 at 8.44.44 P

这里其实有很多参数没有显示出来。从该图来看,大部分的参数相关性是非常低的,这是一件非常好的事情,因为这说明选出来的参数具有更大表现力。但也发现有一些参数是重复的,这个比较尴尬。当然可以采用PCA过滤掉就好。

Stary 2017-07-18 at 8.45.58 P

从此图来看,每一个参数都对sentiment有一定的影响,大部分都有比较强的相关性,这说明选出来的参数并不是随便乱选的。

模型选择

这里我选择了一些比较常见的算法模型来进行训练,并试图去获得相对较好的model。
这里采用Kfold函数来循环测试模型,并且用f1 Score来选择最合适的model。

SVC: 0.697422 (+/- 0.044767)
AdaBoostClassifier: 0.701619 (+/- 0.055826)
RandomForestClassifier: 0.728934 (+/- 0.043483)
RandomForestClassifier: 0.728934 (+/- 0.043483)
LinearSVC: 0.755798 (+/- 0.043480)
KNeighborsClassifier: 0.666486 (+/- 0.066893)
GaussianNB: 0.729580 (+/- 0.049237)
Perceptron: 0.728920 (+/- 0.034399)
SGDClassifier: 0.735260 (+/- 0.052218)
DecisionTreeClassifier: 0.693174 (+/- 0.053145)
LogisticRegression: 0.759676 (+/- 0.044828)

这里我觉得LinearSVC相对比较好。

至此就没有别的了。

完整代码见NLP-JD

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐