创建 TermDocumentMatrix:文档数量问题

Creating TermDocumentMatrix: issue with number of documents

我正在尝试使用一个文本文件创建一个术语文档矩阵,该文件包含大约 3+ 百万行文本。我创建了一个随机的文本样本,结果大约有 300,000 行。

不幸的是,当使用以下代码时,我最终得到了 300,000 个文档。我只想要 1 个文档,其中包含每个二元组的频率:

library(RWeka)
library(tm)

corpus <- readLines("myfile")
numberLinesCorpus <- 3000000
corpus_sample <- text_corpus[sample(1:numberLinesCorpus, numberLinesCorpus*.1, replace = FALSE)]
myCorpus <- Corpus(VectorSource(corpus_sample))
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 1, max = 2))
tdm <- TermDocumentMatrix(myCorpus, control = list(tokenize = BigramTokenizer))

示例包含大约 300,000 行。但是tdm里面的文档数也是30万

如有任何帮助,我们将不胜感激。

您需要在 corpus_sample 向量上使用 paste 函数。

Paste,为 collapse 设置了一个值,它接受一个包含许多文本元素的向量,并将其转换为一个包含一个文本元素的向量,其中元素由您指定的字符串分隔。

text <- c('a', 'b', 'c')
text <- paste(text, collapse = " ")
text
# [1] "a b c"

您也可以使用 quanteda 包来替代 tm。在您创建 corpus_sample:

之后,这将在以下步骤中执行您想要的操作
require(quanteda)
myDfm <- dfm(corpus_sample, ngrams = 2)
bigramTotals <- colSums(myDfm)

我也怀疑它会更快。