0

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

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

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 中的文档数量也是 300,000。

任何帮助将非常感激。

4

2 回答 2

1

您需要在矢量paste上使用该功能。corpus_sample

粘贴,其值设置为collapse获取一个包含许多文本元素的向量并将其转换为具有一个文本元素的向量,其中元素由您指定的字符串分隔。

text <- c('a', 'b', 'c')
text <- paste(text, collapse = " ")
text
# [1] "a b c"
于 2015-07-15T09:01:00.607 回答
0

您也可以使用该quanteda包作为tm. 在您创建之后,这将在以下步骤中执行您想要的操作corpus_sample

require(quanteda)
myDfm <- dfm(corpus_sample, ngrams = 2)
bigramTotals <- colSums(myDfm)

我也怀疑它会更快。

于 2015-07-20T09:34:41.410 回答