2017-03-01 59 views
0

下面是我如何幹掉我的語料庫和我的文檔。然而,例如「工作」和「工作」顯示了大量的時間,而且在我的分析中,這些對於所有意圖和目的來說顯然是相同的。有沒有一個包或一些代碼片段去除「-ed」結尾?謝謝!是否在stem中刪除「ed」結尾的文檔?

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

summary(docs) 

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

做搜索棧清晰度努力工作,或者只是想在Word中刪除編工作? –

+0

這是一個很好的問題。我想我想讓他們成爲同一個詞。理想情況下,我希望刪除所有單詞的「ed」,如果問題再次出現,我不會重複計算根詞 – agunner

回答

1

這是一個更復雜的問題,你可能會想。

如果使用詞幹,那麼ed將從單詞中刪除,而不考慮詞的含義或上下文。所以你可以把許多過去時的單詞縮減爲單詞,或者複數單數。

但是,您也可能會丟失上下文。詞的真正根源,詞位,有它自己的意義,它有時在詞幹中丟失,因爲不同的詞從同一根發展而來。

想象一下,你去梗和刪除在S在複數:

所以在這句話...... 「她走得慢。」

和這句話...... 「他們來自各行各業。」

...你得到這個詞散步

儘管它們是從相同的詞根演變而來,但它們具有不同的詞彙含義,並且第二個版本會產生上下文不匹配。

在這種情況下,詞形將是一個更好的選擇(如果算法對你的語料庫是固體和適當的),因爲它將保留兩個不同單詞的明顯相同性背後的詞位的潛在含義。

詞義化與使用上下文來試圖確定詞根的意義是什麼,它的詞位是否不同,而詞幹只是修剪回假定的詞根。

對於非常敏感的用途,可能有必要。但是,如果處理不當,它在大型語料庫中通常也不會更準確。

如果背景的重要性,嘗試WORDNET詞形還原包:

Wordnet for R

如果你需要的是詞幹,請嘗試使用最簡單的形式雪球,看它是否得到你想要的東西:

docsStemmed<-wordStem(docs, language = "english") 

來自「SnowballC」包,請注意您的文檔必須位於一個字符向量中,以阻止這種方式返回另一個詞幹的向量。它應該刪除過去時的結局。如上所示,您可以使用tm

如果你沒有得到你想要的結果,你需要在發音之前修改語料庫。

  • 將其縮小爲小寫。
  • 刪除標點符號。
  • 轉換爲純文本。
  • 清除表情符號和任何奇怪的不符合符號。

一旦您獲得了正確的文檔結構,詞幹更加可靠。如果您需要tm & SnowballC幫助試圖通過此方法篩選和使用這些方法:要轉換

tm & SnowballC docs