假设我正在使用tm
包解析英语语料库,并且我会执行常规的清理步骤。
library(tm)
data("crude")
corpus <- Corpus(crude)
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, content_transformer(removeWords)) stopwords("english"))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stemDocument)
corpus <- tm_map(corpus, PlainTextDocument)
# text matrices
tdm <- TermDocumentMatrix(corpus)
dtm<- DocumentTermMatrix(corpus)
如何识别用不同于语料库的语言编写的单词?类似的问题面临Python here,但我的研究没有产生有趣的结果。
答案 0 :(得分:1)
这不是一个完整的解决方案,但我觉得它可能有所帮助。我最近不得不做类似的事情,我不得不用汉字删除语料库中的单词。我最终使用带有正则表达式的自定义转换来删除其中包含非a-z 0-9字符的任何内容。
corpus <- tm_map(corpus, content_transformer(function(s){
gsub(pattern = '[^a-zA-Z0-9\\s]+',
x = s,
replacement = " ",
ignore.case = TRUE,
perl = TRUE)
}))
例如,如果那里有中文单词,则会被删除。
gsub(pattern = '[^a-zA-Z0-9\\s]+',
x = 'English 象形字 Chinese',
replacement = "",
ignore.case = TRUE,
perl = TRUE)
输出:“英文中文”
如果你试图从像西班牙语这样的语言中删除单词,那就太麻烦了,因为有些字母有重音而有些字母没有。例如,这不起作用,但可能是一个开始。
gsub(pattern = '[a-zA-Z0-9]+[^a-zA-Z0-9\\s]+[a-zA-Z0-9]+',
x = 'El jalapeño es caliente',
replacement = "",
ignore.case = TRUE,
perl = TRUE)
输出:“El es caliente”
希望这有帮助!