删除除某些标点字符以外的所有字符以生成词频?

Remove all except for certain punctuation characters to generate word frequency?

我想从一个字符向量中删除除这四个特定标点字符之外的所有标点符号:+, ., -, /

我知道有类似的问题,但是,我已经尝试了相应的解决方案,但没有得到我想要的答案。

当前字符向量 item 有很多我想去掉的圆括号和方括号。

下面是 item 变量的示例:

item
BOYS S SLV MOCK LAYER TEE
BOYS S SLV PRINTED TEE
CHEAP MONDAY TEE (SAD TOP)
LOPPAN S SLV TEE (STRIPE)
FREE PRINTED SLV LESS TEE-ZEBRALOGO & SNAKE
LST-[REVISED]

最终,我想针对变量 item 生成唯一的词频。

word          freq
boys          2
s             3
slv           4
tee           4
tee-zebralogo 1
mock          1
layer         1
printed       2
cheap         1
...           ...

这是我当前使用 tm 包的代码:

item_names <- df1$item
item_names <- tolower(item_names)
item_names <- removePunctuation(item_names)
myCorpus <- Corpus(VectorSource(item_names))
myTDM <- TermDocumentMatrix(myCorpus)
findFreqTerms(myTDM)

m <- as.matrix(myTDM)
v <- sort(rowSums(m),decreasing=TRUE)
df4 <- data.frame(word = names(v),freq=v)

从上面的代码来看,我可以把所有的标点符号都去掉,但是我想保留上面的四个标点符号,但我做不到。

我也尝试过 R 的基本函数:

item_names <- df1$item
item_names <- tolower(item_names)
item_names <- gsub(pattern = "[^[:alnum:][:space:][-\.\+\/]]", "", 
item_names)
item_names <- gsub(pattern = "\s+", " ", item_names)

table(do.call(c, lapply(item_names, function(x) unlist(strsplit(x, " ")))))
df4 <- as.data.frame(table(do.call(c, lapply(item_names, function(x) 
unlist(strsplit(x, c(" ")))))))
View(df4)

上面的代码似乎不起作用,因为它仍然无法消除标点符号,例如 ()

最后,我想去掉除+, ., -, /以外的所有标点符号,并使用以上两个选项生成词频。

如有任何帮助,我们将不胜感激。

举个例子:

item_names <- c(
  "BOYS S SLV MOCK LAYER TEE",
  "BOYS S SLV PRINTED TEE",
  "CHEAP MONDAY TEE (SAD TOP)",
  "LOPPAN S SLV TEE (STRIPE)",
  "FREE PRINTED SLV LESS TEE-ZEBRALOGO & SNAKE",
  "LST-[REVISED]",
  "(lot of round and square brackets that I would like to get rid [of]. )"
)

我们可以做到:

gsub("([-\.\+\/])|[[:punct:]]", "\1", item_names)
[1] "BOYS S SLV MOCK LAYER TEE"                                         
[2] "BOYS S SLV PRINTED TEE"                                            
[3] "CHEAP MONDAY TEE SAD TOP"                                          
[4] "LOPPAN S SLV TEE STRIPE"                                           
[5] "FREE PRINTED SLV LESS TEE-ZEBRALOGO  SNAKE"                        
[6] "LST-REVISED"                                                       
[7] "lot of round and square brackets that I would like to get rid of. "