我按如下方法计算了来自语料库和DTM的测试文档的词频。但是他们彼此不匹配。 谁能告诉我不匹配来自何处?是因为我使用了错误的方法来提取词频吗?
library("tm")
library("stringr")
library("dplyr")
test1 <- VCorpus(DirSource("test_papers"))
mytable1 <- lapply(test1, function(x){str_extract_all(x, boundary("word"))}) %>% unlist() %>% table() %>% sort(decreasing=T)
test2 <- DocumentTermMatrix(test1)
mytable2 <- apply(test2, 2, sum) %>% sort(decreasing=T)
head(mytable1)
.
and of the to in on
148 116 111 69 61 54
head(mytable2)
and the this that are political
145 120 35 34 33 33
答案 0 :(得分:0)
所用方法的差异。
str_extract_all
与boundary("word")
一起删除句子中的标点符号。无需将文本转换为文档术语矩阵。要获得相同的数字,您需要使用DocumentTermMatrix(test1, control = list(removePunctuation = TRUE))
。
详细说明:
在第一种情况下:“这是文本。”将返回不带句点的四个单词。在第二种情况下,您将在文档术语矩阵中获得带句点的文本(“ text。”)。现在,如果文本显示如下:“文本和文本”。第一种情况将计算“文本” = 2,而文档术语矩阵会将其计算为“文本” = 1和“文本”。 = 1。
使用removePunction将删除句点,并且计数将相等。
您可能还希望先删除数字,因为removePunctuation将从数字中删除点和逗号。