我正在使用 Google Prediction API 构建情绪分析工具。我有一些标记的训练数据,我将使用它们来训练模型。由于这是从社交媒体收集的数据,句子中的大部分单词都是停用词,我想在训练模型之前将其删除,这有助于提高准确性吗?java中是否有任何库可以用来删除这些停用词,而不是构建我自己的停用词集。
问候迪普什
我正在使用 Google Prediction API 构建情绪分析工具。我有一些标记的训练数据,我将使用它们来训练模型。由于这是从社交媒体收集的数据,句子中的大部分单词都是停用词,我想在训练模型之前将其删除,这有助于提高准确性吗?java中是否有任何库可以用来删除这些停用词,而不是构建我自己的停用词集。
问候迪普什
停用词会有所帮助,但恐怕您需要提出自己的专门针对情绪分析的列表(例如,没有现成的列表)。这里还有一些想法,它们可能会提高预测准确性,而无需花费大量工作来创建自己的停用词列表(这些想法来自我们提交给 Kaggle 上的 CrowdFlower OpenData 竞赛的想法):
有关更多想法,还请查看此论坛主题。
除非您的情绪分析是在定义明确的领域,并且使用大型语料库和大型定义的训练集(例如,电影评论)进行研究,否则我建议您构建自己的训练数据。在处理社交媒体数据(尤其是 Twitter)时更是如此。根据您的研究/分析领域,构建自己的训练数据集将使您能够将时间集中在构建特定领域的数据集上,而不是尝试使用非领域集。
我会支持 Matt 的回复 RE:一些建议。我还要补充一点,您应该从数据中删除 url 和用户名,并将它们视为“停用词”。
这取决于 Google Prediction 的算法是如何工作的。我不熟悉它,但在阅读文档时,他们似乎没有考虑单词关联。也就是说,他们不考虑像“not”这样带有情感的停用词是特别修饰哪个词。
例如,
"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 使用这种分析来建立搜索索引。
祝你好运。