如何评估哪种情绪分类器最适合我的项目?

数据挖掘 机器学习 情绪分析 斯坦福-nlp
2021-10-12 09:04:51

我想对 Twitter 推文进行 Twitter 情绪分析。当我用谷歌搜索它时,我发现了一个情感类的stanfordNLP代码。我用它来查找 Twitter 情绪后来我才知道TwitterGate模型仅适用于 Twitter 推文。

然后我TwitterGate模型替换了stanfordNLP模型。我没有发现情绪结果有任何差异。两种模型都给出相同的结果。

然而,当我用Monkeylearn API 和Datumbox API 情绪测试相同的推文时,我对结果感到困惑。在 NLP 和 twitterGate 中,大多数推文情绪是负面的,而在MonkeylearnDatumbox API 代码中,相同的推文情绪是中性的。

我怎么知道哪个模型给出了正确的情绪?

3个回答

几个重要的点:

  • 情绪分析不是一门精确的科学。两个人,在不同的上下文中阅读相同的文本,会得出关于情绪的不同结论,尤其是在边缘情况下。也许文本有复杂的语法,或者有一个隐喻或明喻,有助于理解实际比较的内容。

  • 情绪数据集的基本事实是由人建立的。从任何训练有素的 ML 分类器中,你所能期望的最好的结果是,它在预测新数据时与这些人的意见非常吻合。

  • 您不同的情绪分析工具的质量可能会有所不同,因为它们将在不同的时间使用不同的技术以及不同的训练数据构建。

我可以想到几种方法可以根据您的目的评估分类器:

1. 对照您自己标记的测试数据进行测试

重要的是自己获取它,以确保它不会与您要比较的任何模型使用的训练数据重叠(如果它确实重叠,那么它会给使用它训练的任何模型带来很大的优势)。您将需要收集有关所有文本的情绪的基本事实数据。

在测试之前,最好选择一个您关心的指标以用于您的预期用途。准确性不是唯一的指标,但它可能适合您的目的。如果与错误分类相关的成本不同,您可能会选择其他指标 - 例如,如果需要谨慎分配负面情绪。

然后在您的测试集上运行每个分类器并计算指标。具有最佳度量的分类器是您对应该使用的分类器的最佳猜测。

如果您有足够大的测试集,您可以将其拆分为多个部分,并获得度量中估计误差的度量。这将帮助您了解测试指标的差异是否显着。

这可能是最好的方法,特别是如果您可以获取与您的项目目标相匹配的数据。但是,这将需要很长时间和很大的努力。

如果您赶时间,您可以搜索并使用其他人的数据集,例如我在快速网络搜索中找到了这些:Kaggle 竞赛由 Niek Sanders 主持的免费样本(我不知道这些的质量 -您应该对它们进行采样,看看这些数据是否对您有用)。尽管这些数据集用于训练您的一个分类器,但存在风险,因此它会给您一个错误的高评级。

2. 阅读相关报告和论文

每个情绪分析器都应该在文档中解释模型类和用于训练它的数据。您经常可以找到比较不同方法并引用标准数据集的准确度分数的论文。如果幸运的话,您会发现足够多的比较,从而了解哪些算法被认为是“前沿”,哪些算法已经过时。

3. 收集您正在考虑的算法分类不同的文本,并获得反馈

(1) 的变体,您可以在任何阶段执行此操作,并且它可能在实时产品的上下文中运行良好。对于所有分类的数据,记录不同分类器对其的响应方式,以及存在差异的地方,将其保存以供以后评估。您将需要一些人来阅读并帮助对文本进行分类(最好不要看到分类器的想法),并且您可以随着时间的推移收集度量数据,并在收集到足够的示例后使用表现最好的分类器来做出明确的决定。


最终重要的是在项目中使用分类器的结果。仅仅标记数据没有内在的目的。重要的是这些标签的后果。所以你需要以结果为导向。如果您使用一个分类器并收到产品性能不佳的反馈,您可能可以试用另一个分类器。如果您的产品被很多人使用,并且提供了足够多的质量反馈,您甚至可以在生产中对几个分类器进行 A/B 测试。

您可以自己对一些推文进行分类,然后比较两个算法结果中的哪一个更接近您的分类。

如果没有更多信息,我们无法判断这些算法在做什么。很可能他们只是在内部使用了不同的阈值:算法 1 决定所有 > 60% 阈值的都是“积极的”,所有 < 30% 的都是“消极的”,介于两者之间的都是“中性”。算法 2 可能使用了 75%/25%。

顺便说一句,Twitter 消息并不是非常适合情绪分析。它们太短了,语法上也太乱了。

您可能只在推文文本中寻找表情符号,如果您有很多+很多推文,这可能会起作用。

您将需要标记数据。最好有自己的,但如果没有,请确保从“Twitter”域中获取标记数据。这很重要,因为推文具有非常特定的写作风格、特定的词典并使用许多表情符号。为了提供帮助,这里有一个来自 Nick Sanders 的 5K 手动标记推文的数据库:http: //www.sananalytics.com/lab/twitter-sentiment/

通过几个模型运行标记的数据并计算一个指标。如果你愿意,它可能是一个混淆矩阵。如果您确实不需要对所有三个类别(正面、中性、负面)进行非常精确的分类,并且如果您需要识别负面推文,您可以使用准确率和召回率等指标。

如果您想了解更多信息,我和我的同事写了一篇博客文章,描述了在 Twitter 情绪分析中如何比较几种模型的性能:https ://blog.griddynamics.com/selecting-training-evaluation-and-tuning -the-model-for-twitter-stream-sentiment-analysis-of-social-movie-review