我正在研究一个文本挖掘项目并尝试清理文本 - 单数/复数形式的单词,不同时态的动词和拼写错误的单词。我的示例如下所示:
test <- c("apple","apples","wife","wives","win","won","winning","winner","orange","oranges","orenge")
我尝试在SnowballC包中使用wordStem函数。但结果是错误的:
"appl" "appl" "wife" "wive" "win" "won" "win" "winner" "orang" "orang" "oreng"
我希望看到的是:
"apple" "apple" "wife" "wife" "win" "win" "win" "winner" "orange" "orange" "orange"
答案 0 :(得分:3)
这就是Porter Stemmer的工作原理。这样做的原因是它允许相当简单的规则来创建词干,而不必存储大量的英语词汇。例如,我认为您不希望change
和changing
转到chang
。似乎更自然的是,它们都应该阻止change
。那么你会制定一个规则,如果你从一个单词的末尾开始ing
,你应该加回e
来获得词干吗?那么clang
和clanging
会发生什么? Porter Stemmer给出了clang
。添加e
会给出非单词clange
。要么使用简单的处理规则,有时会创建不是单词的词干,或,您必须包含大词汇表,并且具有更复杂的规则,这些规则取决于单词的含义。 Porter Stemmer使用简单的规则方法。