我目前正在做一个文本处理过程,我希望将类似的单词(表格,表格等)转换成一个单词(表格).我看到tm包提供了一个工具,但这个不支持我正在寻找的语言.因此,我想自己创造一些东西.
对于我希望有一个链接表的函数 - >
a <- c("Table", "Tables", "Tree", "Trees")
b <- c("Table", "Tree", "Chair", "Invoice")
df <- data.frame(b, a)
Run Code Online (Sandbox Code Playgroud)
这样我就可以自动将所有"表"值转换为"表"
有关如何做到这一点的任何想法?
在R中搜索词干,您可以在这里查看,您可以尝试:
a <- c("Table", "Tables", "Tree", "Trees")
b <- c("Table", "Tree", "Chair", "Invoice")
library("SnowballC")
wordStem(words = a, language = "porter")
##[1] "Tabl" "Tabl" "Tree" "Tree"
library("tm") # tm use wordStem
stemCompletion(x = stemDocument(x = a), dictionary = b)
## Tabl Tabl Tree Tree
##"Table" "Table" "Tree" "Tree"
Run Code Online (Sandbox Code Playgroud)
或者使用起来更复杂但更完整,您可以查看包korPus并使用TreeTagger处理您的文本:
library("koRpus")
tagged.results <- treetag(tolower(a), treetagger="manual", format="obj",
TT.tknz=FALSE , lang="en",
TT.options=list(path="./TreeTagger", preset="en"))
tagged.results@TT.res
## token tag lemma lttr wclass desc stop stem
##1 table NN table 5 noun Noun, singular or mass NA NA
##2 tables NNS table 6 noun Noun, plural NA NA
##3 tree NN tree 4 noun Noun, singular or mass NA NA
##4 trees NNS tree 5 noun Noun, plural NA NA
Run Code Online (Sandbox Code Playgroud)
你想要的是:
tagged.results@TT.res$lemma
##[1] "table" "table" "tree" "tree"
Run Code Online (Sandbox Code Playgroud)