我正在尝试使用python的sklearn包构建一个情绪分析引擎。 问题是分析关于这个卡格尔竞赛的烂番茄评论
https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews
情感可以有5个可能的值
我使用以下分类器
因为这些都是适合二元分类的线性分类器,下面是我必须采取的步骤
将训练和测试集分成5部分,每个情绪一部分。 假设情绪的可能值是a、b、c、d、e。所以在我的数据的第一部分,我将拥有所有的评论,但具有情绪“a”的评论将被标记为正值,所有其他的评论将被标记为负面。同样,我为其他情感价值创造了其他部分。
清除所有5个部分中的数据
创建一个管道并将所有测试集部分一个接一个地提供给我的分类器。我将为每个部分存储一个结果。所以,第一部分的分类结果是当事人等。任何在聚会上被标记为积极的东西都属于情绪“a”。其他零件也一样。
最后,我想合并所有5个部分的结果。我来看看聚会的人。任何被标记为积极的东西都会变成情绪“a”。其他部分我也会这样做。然后我简单地合并结果。
如果我没有重叠或重复,那将是理想的。但我有少量的复制品,这很好。我可以添加一些逻辑来处理这个问题。
我会对所有三个分类器都这样做,最后我想找出哪个分类器给我最好的结果。
我的问题是,我可以看到有许多评论,我的分类器无法将其放入任何类别!为什么会这样?因为数据集太小了?在
重申一下,问题是您所训练的五个二进制模型并不是相互详尽的。有几种可能性。 首先,你是否对这五种情绪都有一个100%清晰的分类,还是有一些公认的分类错误?在
你需要一个互斥的和穷尽的集合。你的方法表明,但很难保证这一结果。您可以考虑使用一个集成的解决方案来保证这一点。多类支持向量机就是这样一种,但可能不适合您的情况。在
如果这些类不是100%准确,那么很容易让所有五个类都拒绝某个特定的观察结果。这表明您的分类算法需要调整,或者数据本身并不像您希望的那样适合分类。在
您还可以检查是否已适当地清理了这些数据;一些错误会严重地移动类边界。在
我怀疑正在发生的是一个小的边界效应:当与其他四个类的组合进行比较时,每一个类都“拉入”了它的边界,在最后几组之间留下了无人认领的领土。在
你有办法在培训后检查分类参数吗?如果是这样,你能想象出所选的五个边界吗?如果你真的发现了病理性的空白,你有没有可以调整的训练参数,比如给训练组一个更大的epsilon?在
我希望这有帮助。在
相关问题 更多 >
编程相关推荐