R中的stemDocument是否删除" ed"结尾?

时间:2017-03-01 02:17:27

标签: r suffix snowball

以下是我如何阻止我的语料库和我的文件。但是,例如" work"并且"工作"显示了大量的时间,这些在我的分析中对于所有意图和目的来说都是相同的词。是否有一个软件包或一些代码段来删除" -ed"结尾?谢谢!

library(tm)
docs<-Corpus(DirSource(cname))

summary(docs)

library(SnowballC)   
docs <- tm_map(docs, stemDocument) 

1 个答案:

答案 0 :(得分:1)

这是一个你可能会想到的更复杂的问题。

如果您使用词干,那么将从单词中删除ed,而不考虑单词的含义或上下文。所以你可以将许多过去时的单词减少到他们的根词,或复数到单数。

但是,您也可能失去上下文。词汇的真正根源,即词汇,具有其自身的含义,并且有时在词干中丢失,因为不同的词语从同一个词根演变而来。

想象一下,你以复数形式删除并删除了s:

所以在这句话中...... &#34;她走得很慢。&#34;

这句话...... &#34;他们来自各行各业。&#34;

...你得到 行走 这个词。

虽然它们是从相同的词根演变而来的,但它们具有不同的词汇含义,并且阻止第二个版本会产生语境不匹配。

在这种情况下,词形还原是一个更好的选择(如果算法是可靠的并且适合你的语料库),因为它将保留词汇的基本含义,隐藏在两个不同词语的明显相同之处。

词形化不同于词干,因为使用上下文来试图决定词根的含义是什么,它的词汇,而词干只是修剪回假定词根。

对于非常敏感的用途,可能是必要的。但是,如果没有巧妙处理,它在大型语料库中通常也不会更准确。

如果上下文很重要,请尝试使用Wordnet词形还原包:

Wordnet for R

如果您需要的只是阻止,请尝试以最简单的形式使用雪球,看看它是否能满足您的需求:

docsStemmed<-wordStem(docs, language = "english")
来自&#34; SnowballC&#34;包,请注意您的文档必须在字符向量中,以此方式返回另一个词干的向量。它应该删除过去的紧张结局。如上所示,您可以将其与tm一起使用。

可能如果你没有得到你想要的那种方法的结果,你需要在词干之前更多地修饰语料库。

  • 将其缩小为小写。
  • 删除标点符号。
  • 转换为纯文本。
  • 清除表情符号和任何奇怪的不符合符号。

一旦你的文档结构正确,词干就更可靠了。如果您需要帮助tm&amp; SnowballC尝试在这里筛选方法并使用这些方法搜索堆栈以便清晰:

tm & SnowballC docs