gpt4 book ai didi

python - 通过监督学习进行情感分类

转载 作者:行者123 更新时间:2023-11-30 09:11:57 25 4
gpt4 key购买 nike

我正在使用 python 的 scikit-learn 对 Livejournal 的博客进行情感分类。我有大约 40000 个帖子,我使用其中的 4/5 作为训练集,其余的作为测试集。

有 6 种情绪:['joy','sadness','anger','surprise','love','fear']

我体验过几个分类器(包括朴素贝叶斯、svm、sgd..),但问题是预测非常非常不准确。实际上这几乎是微不足道的,因为测试集中几乎每个博客都被预测为“快乐”,这是训练集中最常见的情绪 (45%)。

特征集基本上包括词袋特征(我尝试过unigrams和bigrams),对于unigram来说总共有613822个特征。

此外,我使用 SentiWordnet 分数添加了一些基于词典的功能:计算名词、形容词、动词、动词和总单词的正负分数之和。在博客中。因此对于每个博客,将有 613822 + 5 个特征。

我还应用了一些特征选择方法(例如chi2)来减少特征数量,但没有任何明显的改进。

scikit-learn 的 CountVectorizerDictVectorizer 用于对特征进行矢量化,Pipeline.FeatureUnion 用于连接它们。

我猜结果不佳是由于词袋特征集太大——也许文本中有太多拼写错误的单词?(我已经删除了停用词并完成了一些词形还原工作)我还认为基于词典的功能实际上不起作用,因为 BOW 功能太大。

我希望在我的方法中找到任何明显的错误,或者我可以采取哪些措施来提高准确性。

感谢您的建议!!

最佳答案

你是对的,问题在于特征数量过多,而你对其过度拟合。

考虑以下因素:

1- 标准化每个博客,删除数字、标点符号、链接、html 标签(如果有)。

2- 考虑词干提取而不是词形还原,词干提取器比词形提取器更简单、更小并且通常更快,并且对于许多应用程序来说,它们的结果足够好。

http://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

Stemming usually refers to a crude heuristic process that chops off the ends of words in the hope of achieving this goal correctly most of the time, and often includes the removal of derivational affixes. Lemmatization usually refers to doing things properly with the use of a vocabulary and morphological analysis of words, normally aiming to remove inflectional endings only

3-我之前处理过类似的问题,我所做的特征提取是针对 6 种情感中的每一种情感,我得到了最常见的 500 个单词(针对每个类),然后删除了它们并集之间的共同词干。结果列表包含大约 2000 个单词,然后用作特征列表。然后我使用朴素贝叶斯分类器。

关于python - 通过监督学习进行情感分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com