文本挖掘 - removePunctuation不删除引号和短划线

时间:2015-06-08 07:19:10

标签: r text-mining tm

我一直在做一些文本挖掘。我使用了创建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这样的词,“有趣,模特” dtm中的等等。在数据

中得到像“”这样的空格

我该怎么办?我不需要这个dahses和额外的引用。

2 个答案:

答案 0 :(得分:2)

我不确定为什么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)

答案 1 :(得分:2)

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

要重新创建问题,您可以将此示例用于两个有问题的文本摘录:

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"

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