我正在使用Google Prediction API构建情感分析工具。我有一些标记的训练数据,我将用它来训练模型。由于这是从社交媒体收集的数据,句子中的大多数单词都是停用词,我想在训练模型之前将其删除,这有助于提高准确性吗?我是否可以使用java中的任何库来删除这些停用词,而不是构建我自己的一组停用词。
此致 Deepesh
答案 0 :(得分:2)
停止词语会有所帮助,但我担心您需要提出专门针对情绪分析的自己的列表(例如,没有现成的列表)。这里有一些更多的想法,可能会提高你的预测准确性,而不会在你自己的禁用词列表的创建中投入大量的工作(想法在Kaggle的CrowdFlower OpenData竞赛中获取from our submission):
有关更多提示,请参阅此forum thread。
答案 1 :(得分:2)
除非您的情绪分析位于定义明确且使用大型语料库和大型定义的训练集(例如电影评论)进行研究的区域,否则我建议您构建自己的数据进行培训。使用社交媒体数据(尤其是Twitter)时更是如此。根据您的研究/分析领域,构建您自己的训练数据集将使您能够专注于构建特定于域的数据集,而不是尝试使用非域集。
我第二次马特的回答RE:一些建议。我还要补充一点,您应该从数据中删除网址和用户名,并将其视为“停用词”。
答案 2 :(得分:1)
这取决于Google Prediction算法的工作原理。我不熟悉它,但在阅读文档时,似乎他们不考虑单词关联。也就是说,他们不会考虑一个像“不”这样充满情感的停止词是哪一个词特别修改。
例如,
"Cake is not close to being as good as french fries!"
"French fries are not cake, but are not bad."
在上面的句子中,将它们视为一个“词袋”(一个词序无关紧要的句子模型)并没有给我们带来太多的洞察力。
我的建议是试验并让您的数据结果成为您的指南。
我怀疑使用停用词不会产生太大的影响。它们应该低于Google匹配算法的“噪音”阈值,假设我正在分析它的正常工作方式。
您可以谷歌查找多种语言的停用词列表。您还可以提取许多自然语言处理库。 词干可能有所帮助。尝试用谷歌搜索Porter Stemming或Snowball Stemming“和Java.Lucene / Solr使用这种分析来构建搜索索引。
祝你好运。