文本挖掘 - removePunctuation 不删除引号和破折号

Text Mining - removePunctuation not removing quotes and dashes

我一直在做一些文本挖掘。我使用创建了 DTM 矩阵 以下步骤。

corpus1<-VCorpus(VectorSource(resume1$Dat1)) 

corpus1<-tm_map(corpus1,content_transformer(tolower)) 
corpus1<-tm_map(corpus1,content_transformer(trimWhiteSpace))

dtm<-DocumentTermMatrix(corpus1, 
                           control = list(removePunctuation = TRUE, 
                                          removeNumbers = TRUE, 
                                          removeSparseTerms=TRUE, 
                                            stopwords = TRUE)) 

在 运行 之后,我仍然会收到像 -quotation 这样的词,"fun, model" , 等等 dtm.Also 在数据

中得到像 " " 这样的空白

我该怎么办?我不需要这个破折号和额外的引文。

我不确定为什么 DocumentTermMatrix 对您不起作用,但您可以尝试使用 tm_map 在将语料库转换为 dtm 之前对其进行预处理。这对我有用(请注意,我重新排序了默认的非索引字表,否则它会删除整个单词之前的撇号单词的词干,留下搁浅 's'):

corpus1 <- VCorpus(VectorSource(resume1$dat))

reorder.stoplist <- c(grep("[']", stopwords('english'), value = TRUE), 
                      stopwords('english')[!(1:length(stopwords('english')) %in% grep("[']", stopwords('english')))])

corpus1 <- tm_map(corpus1, content_transformer(tolower))
corpus1 <- tm_map(corpus1, removeWords, reorder.stoplist)
corpus1 <- tm_map(corpus1, removePunctuation)
corpus1 <- tm_map(corpus1, removeNumbers)
corpus1 <- tm_map(corpus1, stripWhitespace)

corpus1 <- DocumentTermMatrix(corpus1)

我知道我可能来不及回复了,但我遇到了类似的问题并且没有轻易找到答案。我希望这可以帮助其他面临同样问题的人。

要重现该问题,您可以将此示例与两个有问题的文本摘录一起使用:

library("tm")
library("textclean")
dt <- c("Vi ville också att husmodellen skulle ” ta in” det fina älvläget så mycket som möjligt.”",
    "Det är betydligt trivsammare att jobba härifrån än att sitta och ” arbeta” i ett kontorsrum i centrum.")

dt 看起来像这样:

> dt
[1] "Vi ville också att husmodellen skulle ” ta in” det fina älvläget så mycket som möjligt.”"              
[2] "Det är betydligt trivsammare att jobba härifrån än att sitta och ” arbeta” i ett kontorsrum i centrum."

在我的例子中,问题出现是因为我在文本中有花括号。 removePunctuation 不会将这种类型的大括号识别为标点符号,因此在将它应用到我的文本后我仍然有大括号。

> removePunctuation(dt)
[1] "Vi ville också att husmodellen skulle ” ta in” det fina älvläget så mycket som möjligt”"              
[2] "Det är betydligt trivsammare att jobba härifrån än att sitta och ” arbeta” i ett kontorsrum i centrum"

我发现包 textclean (2018) 有一个函数可以用 \" 替换大括号,然后可以使用 removePunctuation:

删除
> removePunctuation(replace_curly_quote(dt))
[1] "Vi ville också att husmodellen skulle  ta in det fina älvläget så mycket som möjligt"               
[2] "Det är betydligt trivsammare att jobba härifrån än att sitta och  arbeta i ett kontorsrum i centrum"

如果您仍然需要帮助来解决您提到的其他问题,请为您的数据集添加代码示例,以便我们重现错误并可能修复它们。