停止情绪分析工具的字库



我正在使用Google Prediction API构建一个情绪分析工具。我有一些标记的训练数据,我将使用这些数据来训练模型。由于这是从社交媒体收集的数据,句子中的大多数单词都是停止词,我想在训练模型之前删除它,这有助于提高准确性吗?java中有没有任何库可以用来删除这些停止字,而不是构建自己的一组停止字。

问候加深

停止语会有所帮助,但恐怕您需要制定专门针对情绪分析的列表(例如,没有现成的列表)。以下是一些更多的想法,这些想法可能会提高预测的准确性,而无需在创建自己的停止语列表时投入大量工作(这些想法取自我们提交给Kaggle上的CrowdFlower OpenData竞赛):

  • 停止语:删除停止语,如"RT"、"@"、"#"、"link"、"oogle"、"facebook"、"yahoo"、"t"
  • 字符重复:删除单词中重复的字符集(例如,将"hottttt"替换为"hot")
  • 拼写校正:基于给定语料库的Levenstein距离的拼写校正
  • 表情图标:确保在数据清理步骤中不会删除或忽略表情图标(不确定Google Prediction API是如何处理的)

想了解更多想法,也可以看看这个论坛的帖子。

除非你的情绪分析是在使用大型语料库和大型定义训练集(如电影评论)进行定义和研究的领域,否则我建议你建立自己的训练数据。在使用社交媒体数据(尤其是Twitter)时更是如此。根据您的研究/分析领域,构建自己的训练数据集将使您能够将时间集中在构建特定领域的数据集上,而不是尝试使用非领域集。

我赞同马特的回答回复:一些建议。我还想补充一点,您应该从数据中删除url和用户名,并将其视为"停止语"。

这取决于谷歌预测算法的工作方式。我不熟悉它,但在阅读文档时,他们似乎没有考虑单词联想。也就是说,他们不考虑哪一个词像"不是"这样充满感情的停止词是特别修饰的。

例如,

"Cake is not close to being as good as french fries!"
"French fries are not cake, but are not bad."

在上面的句子中,把它们当作一个"单词袋"(一种语序无关紧要的句子模型)并不能让我们有太多的洞察力。

我的建议是进行实验,让你的数据结果成为你的指南。

我怀疑使用停止语不会有多大区别。它们应该低于谷歌匹配算法的"噪音"阈值,假设我猜到它是如何正确工作的。

你可以在谷歌上搜索几种语言的停止词列表。您还可以提取许多自然语言处理库填词可能会有所帮助。尝试在谷歌上搜索Porter Stemming或Snowball Stemming和Java。Lucene/Solr使用这种分析来建立搜索索引。

祝你好运。

最新更新