繁体   English   中英

使用R从字符中删除StopWords

[英]Removing StopWords from a Character using R

考虑到我有下面提到的字符串;

str_input <- c("Mellanox,Asia, China, India, JAVA, United States, APIs")

我使用了下面提到的gsub代码,它删除了我特定的StopWords。

gsub(paste0("\\b(",paste(location_sw, collapse="|"),")\\b"), "", str_input)

其中,location_sw由我的停用词列表组成,如下所述

location_sw <- c('Rose', 'Java', 'JAVA', 'Mellanox', 'Microsoft', '144GiB', 'West',
                 'Amazon', 'Channel Asia', 'jClarity', 'APIs')

在使用上面提供的gsub代码时,我得到了下面提到的输出

",Asia, China, India, , United States, "

但是,我希望得到以下结果;

"Asia, China, India, United States"

我想在删除停用词后删除现有的逗号。 任何输入都会非常有用。

另一种方法是将字符串strsplit为字符向量,然后相对于location_sw获取setdiff

out <- setdiff(strsplit(str_input, split = ",\\s*")[[1]], location_sw)
out
#> [1] "Asia"          "China"         "India"         "United States"

如有必要,我们可以将其paste回角色:

paste(out, collapse = ", ")
#> [1] "Asia, China, India, United States"

你可以用

str_input <- c("Mellanox,Asia, China, India, JAVA, United States, APIs")
rx <- paste0("(?:,\\s*)*\\b(?:",paste(location_sw, collapse="|"),")\\b")
trimws(gsub(rx, "", str_input), whitespace = "[\\s,]")
## => [1] "Asia, China, India, United States"

(?:,\\\\s*)将匹配0次或更多次逗号,后跟0或更多空格。

带有whitespace = "[\\\\s,]"的trimw将删除前导和尾随空格和逗号。

base选项:

paste(lapply(strsplit(str_input,",|,\\s"), function(x) 
               x[!x %in% location_sw])[[1]],collapse=", ")
    [1] "Asia, China, India, United States"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM