gpt4 book ai didi

r - tm_map 和停用词无法从 R 中创建的语料库中删除不需要的词

转载 作者:行者123 更新时间:2023-12-01 08:13:50 25 4
gpt4 key购买 nike

我有一个包含以下数据的结果数据框:

                   word freq
credit credit 790
account account 451
xxxxxxxx xxxxxxxx 430
report report 405
information information 368
reporting reporting 345
consumer consumer 331
accounts accounts 300
debt debt 170
company company 152
xxxxxx xxxxxx 147

我想做以下事情:

  • 删除所有包含两个以上x的词,如xx, xxx, xxx等等,因为这些词可以是小写或大写,所以必须先变成小写再去掉

我正在使用 tm_map 删除停用词,但它似乎没有用,我仍然在数据框中得到了上面不需要的词。

myCorpus <- Corpus(VectorSource(df$txt))
myStopwords <- c(stopwords('english'),"xxx", "xxxx", "xxxxx",
"XXX", "XXXX", "XXXXX", "xxxx", "xxx", "xx", "xxxxxxxx",
"xxxxxxxx", "XXXXXX", "xxxxxx", "XXXXXXX", "xxxxxxx", "XXXXXXXX", "xxxxxxxx")
myCorpus <- tm_map(myCorpus, tolower)
myCorpus<- tm_map(myCorpus,removePunctuation)
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus, removeWords, myStopwords)

myTdm <- as.matrix(TermDocumentMatrix(myCorpus))
v <- sort(rowSums(myTdm), decreasing=TRUE)
FreqMat <- data.frame(word = names(v), freq=v, row.names = F)
head(FreqMat, 10)

上面的代码无法从语料库中删除不需要的词。

有没有其他方法可以解决这个问题?

最佳答案

涉及 dplyrstringr 的一种可能性是:

df %>%
mutate(word = tolower(word)) %>%
filter(str_count(word, fixed("x")) <= 1)

word freq
1 credit 790
2 account 451
3 report 405
4 information 368
5 reporting 345
6 consumer 331
7 accounts 300
8 debt 170
9 company 152

或者使用类似逻辑的 base R 可能性:

df[sapply(df[, 1], 
function(x) length(grepRaw("x", tolower(x), all = TRUE, fixed = TRUE)) <= 1,
USE.NAMES = FALSE), ]

关于r - tm_map 和停用词无法从 R 中创建的语料库中删除不需要的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57656674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com