r语言 - 从多语言文本中删除停止词



我正在对来自医疗保健部门的多语言文本文件进行文本和情感分析,我想立即从所有语言中删除停止词。我不想在代码中写下每种语言的名称来删除停止词。有什么办法能让我快点做吗?

下面是我的代码:文件总数为596
files = list.files(path = getwd(), pattern = "txt", all.files = FALSE,
full.names = TRUE, recursive = TRUE)
txt = {}
for (i in 1:596) 
try( 
{
txt[[i]] <- readLines(files[i], warn = FALSE) 

filename <- txt[[i]]
filename <- trimws(filename)
corpus <- iconv(filename, to = "utf-8")
corpus <- Corpus(VectorSource(corpus))

# Clean Text
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
cleanset <- tm_map(corpus, removeWords, stopwords("english"))
cleanset <- tm_map(cleanset, removeWords, stopwords("spanish"))
cleanset <- tm_map(cleanset, content_transformer(tolower))
cleanset <- tm_map(cleanset, stripWhitespace)

# Remove spaces and newlines
cleanset <- tm_map("n", " ", cleanset)
cleanset <- tm_map("^\s+", "", cleanset)
cleanset <- tm_map("\s+$", "", cleanset)
cleanset <- tm_map("[ |t]+", " ", cleanset)
}, silent = TRUE) 

我想一次从所有语言中删除停止词。

合并每个stopwords(cc)呼叫的结果,并将其传递给单个tm_map(corpus, removeWords, allStopwords)呼叫。

我不想在代码中写下每种语言的名称来删除停止词

您可以使用stopwords_getlanguages()获取所有支持语言的列表,并将其作为循环执行。示例见https://www.rdocumentation.org/packages/stopwords/versions/2.3

不管它的价值,我认为这是一个坏主意(使用所有语言的停顿词)。在一种语言中的停词在另一种语言中可能是高信息词。例如,在浏览https://github.com/stopwords-iso/stopwords-es/blob/master/stopwords-es.txt时,我发现了& embargo", &;final", &;mayor", &;salvo", &;sea",这些词不在英语停词列表中,并且可以携带信息。

当然,这取决于你在删除所有这些单词后对数据做了什么。

但是,如果像搜索药物名称或其他关键字这样的事情,只需在原始数据上执行,而不删除停止词。

在有超过15种语言模型的情况下使用空格。

最新更新