gpt4 book ai didi

r - 将 R 与 tm 包一起使用时如何准确删除标点符号

转载 作者:行者123 更新时间:2023-12-03 21:36:05 24 4
gpt4 key购买 nike

更新:

我想我可能有解决此问题的方法,只需添加一个代码:dtms = removeSparseTerms(dtm,0.1)它将去除语料库中的稀疏字符。但我认为这只是一种解决方法,仍然等待专家的回答!

最近我正在使用 tm 包学习 R 中的文本挖掘。我有一个想法,以最大频率为我的 ABAP 程序中的单词绘制一个词云。所以我写了一个R程序来实现这一点。

library(tm)
library(SnowballC)
library(wordcloud)

# set path
path = system.file("texts","abapcode",package = "tm")

# make corpus
code = Corpus(DirSource(path),readerControl = list(language = "en"))

# cleanse text
code = tm_map(code,stripWhitespace)
code = tm_map(code,removeWords,stopwords("en"))
code = tm_map(code,removePunctuation)
code = tm_map(code,removeNumbers)

# make DocumentTermMatrix
dtm = DocumentTermMatrix(code)

#freqency
freq = sort(colSums(as.matrix(dtm)),decreasing = T)

#wordcloud(code,scale = c(5,1),max.words = 50,random.order = F,colors = brewer.pal(8, "Dark2"),rot.per = 0.35,use.r.layout = F)
wordcloud(names(freq),freq,scale = c(5,1),max.words = 50,random.order = F,colors = brewer.pal(8, "Dark2"),rot.per = 0.35,use.r.layout = F)

但是在我的 ABAP 代码中,某些变体在变体名称中包含“_”和“-”,因此如果我执行此操作:
code = tm_map(code,removePunctuation)

语料内容不太对,所以词云是这样的:
enter image description here

如果删除“_”或“-”,有些词会很奇怪。

然后我评论那个代码和词云是这样的:
enter image description here

这次说对了,但是出现了一些意想不到的字符,比如我的ABAP代码commet...

那么我们是否有一些方法可以准确地删除我们不想要的标点符号并保留我们想要的标点符号?

最佳答案

作为代码格式的答案发布,但它改编自 content_transformer 的文档来自 getTransformtionstm_map 中找到文档:

主要是使用 gsubcontent_transformer做同样的事情 removePunctuation_- ([:punct:] 正则表达式类)。 removePunctuation可以选择保留破折号 -但不要保留下划线 _ .

f <- content_transformer(function(x, pattern) gsub(pattern, "", x))
code <- tm_map(code, f, "[!\"#$%&'*+,./)(:;<=>?@\][\\^`{|}~]")

在字符类中,您必须转义 \ , "和右括号 ] .

关于r - 将 R 与 tm 包一起使用时如何准确删除标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113634/

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