以下是我如何阻止我的语料库和我的文件。但是,例如" work"并且"工作"显示了大量的时间,这些在我的分析中对于所有意图和目的来说都是相同的词。是否有一个软件包或一些代码段来删除" -ed"结尾?谢谢!
library(tm)
docs<-Corpus(DirSource(cname))
summary(docs)
library(SnowballC)
docs <- tm_map(docs, stemDocument)
答案 0 :(得分:1)
这是一个你可能会想到的更复杂的问题。
如果您使用词干,那么将从单词中删除ed,而不考虑单词的含义或上下文。所以你可以将许多过去时的单词减少到他们的根词,或复数到单数。
但是,您也可能失去上下文。词汇的真正根源,即词汇,具有其自身的含义,并且有时在词干中丢失,因为不同的词语从同一个词根演变而来。
想象一下,你以复数形式删除并删除了s:
所以在这句话中...... &#34;她走得很慢。&#34;
这句话...... &#34;他们来自各行各业。&#34;
...你得到 行走 这个词。
虽然它们是从相同的词根演变而来的,但它们具有不同的词汇含义,并且阻止第二个版本会产生语境不匹配。
在这种情况下,词形还原是一个更好的选择(如果算法是可靠的并且适合你的语料库),因为它将保留词汇的基本含义,隐藏在两个不同词语的明显相同之处。
词形化不同于词干,因为使用上下文来试图决定词根的含义是什么,它的词汇,而词干只是修剪回假定词根。
对于非常敏感的用途,可能是必要的。但是,如果没有巧妙处理,它在大型语料库中通常也不会更准确。
如果上下文很重要,请尝试使用Wordnet词形还原包:
如果您需要的只是阻止,请尝试以最简单的形式使用雪球,看看它是否能满足您的需求:
docsStemmed<-wordStem(docs, language = "english")
来自&#34; SnowballC&#34;包,请注意您的文档必须在字符向量中,以此方式返回另一个词干的向量。它应该删除过去的紧张结局。如上所示,您可以将其与tm
一起使用。
可能如果你没有得到你想要的那种方法的结果,你需要在词干之前更多地修饰语料库。
一旦你的文档结构正确,词干就更可靠了。如果您需要帮助tm
&amp; SnowballC
尝试在这里筛选方法并使用这些方法搜索堆栈以便清晰: