adr*_*121 6 r corpus text-mining
我正在进行一些文本挖掘(PCA,HC,K-Means),到目前为止,我已经成功地编写了一切.但是,我想解决一个小缺陷.
当我试图阻止我的语料库时,它不能正常工作,因为有不同的词语具有相同的基础,而这些词语没有以正确的方式识别.这些是我特别感兴趣的词(它是西班牙语,意思是"孩子"或相关):
niñera, niños, niñas, niña, niño
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,我发现这些单词仍然是相同的,除了
niña, niño --> niñ
Run Code Online (Sandbox Code Playgroud)
但另一方保持不变,所以我最终只是为了niña/niño,而不是其他人.
这是我创建语料库的代码:
corp <- Corpus(DataframeSource(data.frame(x$service_name)))
docs <- tm_map(corp, removePunctuation)
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, tolower)
docs <- tm_map(docs, removeWords, stopwords("spanish"))
docs <- tm_map(docs, stemDocument, language = "spanish")
docs <- tm_map(docs, PlainTextDocument)
dtm <- DocumentTermMatrix(docs)
dtm
Run Code Online (Sandbox Code Playgroud)
我真的很感激一些建议!谢谢
Rya*_*ker 16
似乎词干变换只能应用于PlainTextDocument类型.见? stemDocument.
sp.corpus = Corpus(VectorSource(c("la niñera. los niños. las niñas. la niña. el niño.")))
docs <- tm_map(sp.corpus, removePunctuation)
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, tolower)
docs <- tm_map(docs, removeWords, stopwords("spanish"))
docs <- tm_map(docs, PlainTextDocument) # needs to come before stemming
docs <- tm_map(docs, stemDocument, "spanish")
print(docs[[1]]$content)
# " niñer niñ niñ niñ niñ"
Run Code Online (Sandbox Code Playgroud)
与
# WRONG
sp.corpus = Corpus(VectorSource(c("la niñera. los niños. las niñas. la niña. el niño.")))
docs <- tm_map(sp.corpus, removePunctuation)
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, tolower)
docs <- tm_map(docs, removeWords, stopwords("spanish"))
docs <- tm_map(docs, stemDocument, "spanish") # WRONG: apply PlainTextDocument first
docs <- tm_map(docs, PlainTextDocument)
print(docs[[1]]$content)
# " niñera niños niñas niña niñ"
Run Code Online (Sandbox Code Playgroud)
在我看来,这个细节并不明显,当在非PlainTextDocument上调用stemDocument时至少得到警告是很好的.