【问题标题】:Stop Word Library For Sentiment Analysis Tool [closed]情绪分析工具的停止词库[关闭]
【发布时间】:2015-02-12 07:34:45
【问题描述】:
我正在使用 Google Prediction API 构建情绪分析工具。我有一些标记的训练数据,我将使用它们来训练模型。由于这是从社交媒体收集的数据,句子中的大部分单词都是停用词,我想在训练模型之前将其删除,这有助于提高准确性吗? java中是否有任何库可以用来删除这些停用词,而不是构建自己的停用词集。
问候
深深的
【问题讨论】:
标签:
java
sentiment-analysis
stop-words
google-prediction
【解决方案1】:
停用词会有所帮助,但恐怕您需要自己制定专门针对情绪分析的列表(例如,没有现成的列表)。这里还有一些想法,它们可能会在不花费大量工作来创建自己的停用词列表的情况下提高预测准确性(这些想法被 from our submission 带到 Kaggle 上的 CrowdFlower OpenData 竞赛):
-
停用词:删除“RT”、“@”、“#”、“链接”、“google”、“facebook”、“yahoo”、“rt”等停用词
-
字符重复:删除单词中重复的字符集(例如,“hottttt”被替换为“hot”)
-
拼写校正:基于 Levenshtein 距离与给定语料库的拼写校正。
-
表情图标:确保在您的数据清理步骤中没有删除或忽略表情图标(不确定 Google Prediction API 如何处理此问题)。
更多想法,也可以看看这个forum thread。
【解决方案2】:
除非您的情绪分析是在定义明确的领域,并使用大型语料库和大型定义的训练集(例如,电影评论)进行研究,否则我建议您构建自己的训练数据。在处理社交媒体数据(尤其是 Twitter)时更是如此。根据您的研究/分析领域,构建自己的训练数据集可以让您将时间集中在构建特定领域的数据集上,而不是尝试使用非领域集。
我赞同 Matt 的回复 RE:一些建议。我还要补充一点,您应该考虑从您的数据中删除 url 和用户名,并将它们视为“停用词”。
【解决方案3】:
这取决于 Google 预测算法的工作原理。我不熟悉它,但在阅读文档时,他们似乎没有考虑单词关联。也就是说,他们不考虑像“not”这样带有情感的停用词对哪个词有特别的修饰作用。
例如,
"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 使用这种分析来建立搜索索引。
祝你好运。