0

約 300 万行以上のテキスト ファイルを使用して用語ドキュメント マトリックスを作成しようとしています。テキストのランダム サンプルを作成したところ、約 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 のドキュメント数も 300,000 です。

どんな助けでも大歓迎です。

4

2 に答える 2

1

ベクターでpaste関数を使用する必要があります。corpus_sample

値が設定された貼り付けは、collapse多くのテキスト要素を持つベクトルを取得し、指定した文字列で要素が区切られた 1 つのテキスト要素を持つベクトルに変換します。

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 に答える