文本挖掘 - 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"
如果您仍然需要帮助来解决您提到的其他问题,请为您的数据集添加代码示例,以便我们重现错误并可能修复它们。
我一直在做一些文本挖掘。我使用创建了 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"
如果您仍然需要帮助来解决您提到的其他问题,请为您的数据集添加代码示例,以便我们重现错误并可能修复它们。