在 R 文档术语矩阵中保留标点符号
Keeping punctuation in R Document Term Matrix
我正在尝试在 R
中创建一个 DocumentTermMatrix
,使用参数 control = list()
将术语限制为基于文本的表情符号的预定义列表 (:D , :), :(, ETC。)。但是,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
如何将标点符号视为单词。
两个问题(参见 ?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
我正在尝试在 R
中创建一个 DocumentTermMatrix
,使用参数 control = list()
将术语限制为基于文本的表情符号的预定义列表 (:D , :), :(, ETC。)。但是,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
如何将标点符号视为单词。
两个问题(参见 ?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