【发布时间】:2015-01-10 01:34:39
【问题描述】:
我正在清理用于文本挖掘的数据。这涉及删除数字、标点符号和停用词(在数据挖掘中只是噪音的常用词),然后进行词干提取。
使用R 中的tm 包,您可以删除停用词,例如使用tm_map(myCorpus, removeWords, stopwords('english'))。 tm 手册本身演示了如何使用 stopwords("english"))。此单词列表包含诸如“I'd”和“I'll”之类的缩写,以及非常常见的单词“I”:
> library(tm)
> which(stopwords('english') == "i")
[1] 1
> which(stopwords('english') == "i'd")
[1] 69
(在删除停用词之前,文本假定为小写。)
但是(大概)因为“i”在列表中排在第一位,所以永远不会删除缩写:
> removeWords("i'd like a soda, please", stopwords('english'))
[1] "'d like soda, please"
快速破解是反转单词表:
> removeWords("i'd like a soda, please", rev.default(stopwords('english')))
[1] " like soda, please"
另一种解决方案是查找/制作更好的单词表。
有没有更好/正确的方式来使用停用词('english')?
【问题讨论】:
-
你只能检查带有
'的单词removeWords("i'd like a soda, please", grep("'", stopwords(), value=TRUE)) -
感谢@richard,这是一个很好的解决方法。
-
没问题。我不确定还有其他“正确”的方法可以使用
tm包
标签: r data-mining text-mining tm