我尝试在DocumentTermMatrix
中R
,使用参数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_transformer
和gsub
将有问题的表情符号更改为单词。但是,我想知道DocumentTermMatrix
甚至Corpus
如何将标点符号视为单词。
答案 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