作为我大学项目的一部分,我正在研究/开发一个情感分析模型,其中我试图将 NLTK Vader (SentimentIntensityAnalyzer) 结果与机器学习训练的分类器相结合,以预测 Twitter 数据上的情感。
详细说明 -
为了解释我想要做的是 - 结合机器学习分类器和 NLTK Vader 情绪分析,以更好地将推文分类为正面、负面或中性。
我所做的是——
清理数据(Niek Sanders 推特语料库)并预处理推文,包括停用词删除、URL 删除、用户提及删除、从 Hashtags 中删除 # 符号、小写转换、词干处理等。
拆分为 80:20 训练:测试比例
使用 TfidfVectorizer 创建带有 TFIDF 单词的稀疏特征矩阵。列数等于干净数据中的字数。
使用此向量矩阵使用 scikit-learn 训练和测试分类器。
使用的分类器——同样的向量矩阵被用于训练——KNN、随机森林、朴素贝叶斯、SVM、人工神经网络和卷积神经网络。
现在,在尝试结合 NLTK Vader(SentimentIntensityAnalyzer 结果)时出现了主要疑问。
我正在做的是 - 从上面的第三步开始,在 tfidf 向量矩阵中,我添加了 2 列,并且我正在为 NLTK 给出的推文添加正极性和负极性结果,所以现在向量矩阵有 2 个新列 n +1(NLTK 推文的总正极性),n+2(NLTK 推文的总负极性),它看起来像 -
0 1 2 3 4 5 6 7 ......... | n+1 | n+2
------------------------------------------------------------|---------|----------
0.4 0.3 0.4 0.1 0.5 0.3 0.2 0.4 ......... | 0.345 | 0.345
0.5 0.3 0.2 0.8 0.3 0.6 0.4 0.5 ......... | 0.765 | 0.523
0.6 0.4 0.1 0.7 0.8 0.8 0.2 0.2 ......... | 0.392 | 0.664
0.2 0.9 0.7 0.4 0.9 0.9 0.8 0.5 ......... | 0.832 | 0.658
0.9 0.5 0.9 0.7 0.3 0.2 0.2 0.5 ......... | 0.273 | 0.283
0.5 0.2 0.2 0.7 0.2 0.1 0.6 0.6 ......... | 0.505 | 0.194
0.4 0.3 0.2 0.3 0.3 0.9 0.5 0.5 ......... | 0.102 | 0.927
0.1 0.8 0.1 0.2 0.1 0.5 0.2 0.7 ......... | 0.735 | 0.455
问题- 那么以这种方式添加它是否正确?
我还可以将这些极性转换为二进制值,以使用 0 和 1 来标记整体情绪是积极的、消极的还是中性的。
注意- 我使用 2 列代表 3 个类别(正面、负面或中性)以避免虚拟变量陷阱。
尽管它以 1-2% 的小幅度提高了分类器的整体准确度。
但我做得对吗? 如果没有,请告诉我如何将上述两者协作,即 NLTK Vader 结果与机器学习分类器。
