在R文档术语矩阵中保留标点符号

时间:2017-04-21 08:09:21

标签: r text-mining tm

我尝试在DocumentTermMatrixR,使用参数control = list()将条款限制为预定义的基于文本的表情符号列表(:D ,:),:(等)。但是,dtm并没有获取某些表情符号(例如":D"":)"),但其他一些效果很好(":))")。我的代码:

text = c(":D", ":))" ) 
corpus <- Corpus(VectorSource(text)
corpus = tm_map(corpus, PlainTextDocument)
dtm = DocumentTermMatrix(corpus, list(dictionary = c(":D" , ":))" )))
emojidf <- as.data.frame(as.matrix(dtm))

  :D :))
1  0   0
2  0   1

要解决此问题,我可以使用content_transformergsub将有问题的表情符号更改为单词。但是,我想知道DocumentTermMatrix甚至Corpus如何将标点符号视为单词。

1 个答案:

答案 0 :(得分:0)

两个问题(请参阅?DocumentTermMatrix?termFreq):默认情况下,wordLengths过滤器要求最小字长为3个字符。默认情况下,tolower会将:D变为:d。所以试试:

library(tm)
text <- c(":D", ":))" ) 
corpus <- Corpus(VectorSource(text))
dtm <- DocumentTermMatrix(
  corpus, 
  control = list(
    dictionary = c(":D" , ":))"), 
    wordLengths=c(-Inf,Inf), 
    tolower=FALSE
  )
)
as.matrix(dtm)
#     Terms
# Docs :)) :D
#    1   0  1
#    2   1  0