创建 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)
我也怀疑它会更快。
我正在尝试使用一个文本文件创建一个术语文档矩阵,该文件包含大约 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)
我也怀疑它会更快。