现在提供各种在线情感分类服务。诸如Google,Amazon或Microsoft之类的巨头为自然语言处理提供了云解决方案。但是,如果您不打算为1000个API呼叫支付1-2美元(当评论具有超过1000个字符时的价格上涨)和/或准备准备您的本地分类服务或程序,则可以使用离线分类器。本文将在本文中讨论一些脱机情况的.NET分类器。 以下主题将在此处介绍:
什么是情感分类(分析)?
情感分类是一种强大的方法,可以更好地了解客户对您的产品或服务的感觉。它还可以帮助您完成品牌监控任务。情感分类使您可以对他们在社交媒体,博客或文章中发布的人们的情绪和反馈进行分类。有几种常见的分类法用于情感分类。
- 二进制:
* 消极的;
* 积极的;
- 3类:
- 消极的;
- 中性的;
- 积极的;
- 5堂课
- 3类:
- 从1到5星 在所有情况下,负面情绪是分析最重要的。因此,情感分类器应该解决的主要任务看起来像“文字是负面的?”和“这有多少负面?”。
度量
准确性是一个简单明显的指标。当课程不平衡时,它具有众所周知的缺点。但是,它可以用于我们的平衡课程。它也被广泛用于科学文献中。 下面列出的分类器只能在二进制分类任务中进行比较,因为其中一个没有“中性”类。
离线情感分类(C#)
有多个C#库可以通过Google,Nuget E.T.C.找到。但是应该手动检查它们,因为其中许多实际上只是云API的SDK。在手动验证情感分类c#库后,收集了下一个软件包:
- groupDocs.Classification;
- vadersharp;
- Stanfordnlp;
- sentermentanalyzer;
- wikiled; 他们都是离线情感分类C#库。让我们更详细地描述它们。
groupdocs.classification
许可证:许可证文件
安装的复杂性:简单 **准确性:**93.3(评估) / 96.3(许可){.wp-block-neading} groupDocs.classification是一个具有自己内置引擎的库,用于文本和文档分类。模型也是A Nuget软件包的一部分。安装很简单:您只需要安装Nuget软件包即可。评估版本和许可版本之间存在差异。对于评估版本,您应该将文本分为100个字符的块,然后平均结果。 GroupDocS.分类显示在评估模式中的精度为93.3%,使用许可证时为96.3%。
vadersharp
许可证:麻省理工学院
安装的复杂性:简单 准确性:77.6%{.WP-Block-neading} Vadersharp是C#情感分类的流行解决方案(分析)。它可以很快工作,并在普通的家用PC上每秒处理消息,而不是服务器机器。安装也很简单(只需安装Nuget软件包)。但是,还有一个重要的缺点:准确性不如处理时间那么完美。它在测试数据集上达到了78%的精度。
StanfordNLP
许可证:GPL V2
安装的复杂性:硬。 精度:70%{.WP-Block-neading} Stanford NLP是基于自然语言处理的相应Java库的C#库。安装有一些困难。有必要安装Stanford NLP的Java版本,并在必要时将模型复制到程序的当前目录。 .NET Core 3.0兼容性也存在问题。该库的准确性和处理时间不稳定,似乎取决于文本长度。对于SST-2数据集的简短文本,它可以通过示例处理时间秒实现80.2%的精度。对于跨域一的较长文本,精度降至70%。每个文本的处理时间增加到1分钟或更多。
MentimentAnalyzer
许可证:麻省理工学院
安装的复杂性:媒介 精度:79.1%{.WP-Block-neading} 该库为ml.net基于。在安装过程中,可能存在与ML.NET的工作有关的问题。这是一个不安全的库,它需要明确的配置(x86 / x64),并且您可能还需要安装一些依赖项。 MentimentAnalyzer返回正类别或负类和相应的分数。这就是将二进制分类任务用于该比较的原因。最好的结果可以通过精确选择的阈值来实现。优化阈值后,精度达到了79%。
wikiled
许可证:Apache许可证2.0
安装的复杂性:简单 精度:无{.wp-block-neading} 另一个C#情感分类库是Wikiled。该库应在测试前进行培训,以产生足够的结果。因此无法计算库的精度。
数据集
我们使用跨域数据集进行测试。 groupDocs.classification尚未对其进行培训。其余图书馆很可能也没有在培训中使用它。我们将通过电子邮件将结果发送给任何感兴趣的方。请在相应的github repo中创建一个问题。 14: Stanford Sentiment Treebank (Socher et al. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In proc. EMNLP).
结果
表1显示了实验分类器的准确性(%)。 表格1。
SST-2 | 跨域 | |
---|---|---|
GroupDocs.Classification | 93.3 (许可:94.7) | 93.3 (许可:96.3) |
senterimentanalyzer | 58.5 | 79.1 |
斯坦福大学NLP | 80.7 | 〜70 |
vadersharp | 68.7 | 77.6 |
其中大多数显示了这两个数据集的不同结果。这种行为的原因似乎是SST-2文本比跨域文本短。斯坦福NLP测试在Crossdomain上的文本超过500个字符的杂种测试中也有一些悬挂。这就是为什么以“〜”标记的跨域精度的原因。 |
常见错误分析
以下错误分类是典型的: _“就像它的明星,它的态度和遗忘一样。” _ - 很难理解该人的含义。 _“一个表现良好且有意出色的侦探。” 或“ gee,第二次刺客射击肯尼迪?” _ - 讽刺或讽刺。 _“ moot点” _ - 太短文本。 此类问题发生在所有情感分类(分析)产品中。例如,讽刺,它是主观的。因此,很难训练讽刺模型,并且很难正确对其进行分类。但是,我们希望这些弱点将在不久的将来消除。
结论
虽然上述所有库都是C#中的情感分类,但groupDocs.classification是最准确的。因此,在大量提及和/或评论中,这是搜索负面或积极情绪的最佳选择。总之,应该指出的是,还有一个重要的情况,即负/中性/阳性分类。将来还将考虑它。
代码
我们提供了用于此博客的代码: {{LINE_90}}