Rプログラミング環境で「quanteda」パッケージを使用して、大きな(1GB)テキストファイルからトリグラムとバイグラムを作成しようとしています。私のコードを一度に実行しようとすると(以下のように)Rがハングします(3行目 - myCorpus < -toLower(...))。小さなデータセット< 1MBでコードを正常に使用したので、ファイルが大きすぎると思います。おそらく、「チャンク」にテキストをロードし、その後にバイグラムとトリグラムの結果の周波数を組み合わせる必要があることがわかります。しかし、私はどのように扱いやすい 'チャンク(chunks)'でテキストをロードして処理するのかを考えることはできません。この問題へのアプローチに関するアドバイスは大歓迎です。私のコードは下に貼り付けられます。私のコードを改善するための他のアプローチの提案も歓迎するでしょう。多くの頭痛の後Rで大きなテキストファイルを使ってnグラムを作成する
folder.dataset.english <- 'final/corpus'
myCorpus <- corpus(x=textfile(list.files(path = folder.dataset.english, pattern = "\\.txt$", full.names = TRUE, recursive = FALSE))) # build the corpus
myCorpus<-toLower(myCorpus, keepAcronyms = TRUE)
#bigrams
bigrams<-dfm(myCorpus, ngrams = 2,verbose = TRUE, toLower = TRUE,
removeNumbers = TRUE, removePunct = TRUE, removeSeparators = TRUE,removeTwitter = TRUE, stem = FALSE)
bigrams_freq<-sort(colSums(bigrams),decreasing=T)
bigrams<-data.frame(names=names(bigrams_freq),freq=bigrams_freq,stringsAsFactors =FALSE)
bigrams$first<- sapply(strsplit(bigrams$names, "_"), "[[", 1)
bigrams$last<- sapply(strsplit(bigrams$names, "_"), "[[", 2)
rownames(bigrams)<-NULL
bigrams.freq.freq<-table(bigrams$freq)
saveRDS(bigrams,"dictionaries/bigrams.rds")
#trigrams
trigrams<-dfm(myCorpus, ngrams = 3,verbose = TRUE, toLower = TRUE,
removeNumbers = TRUE, removePunct = TRUE, removeSeparators = TRUE,
removeTwitter = TRUE, stem = FALSE)
trigrams_freq<-sort(colSums(trigrams),decreasing=T)
trigrams<-data.frame(names=names(trigrams_freq),freq=trigrams_freq,stringsAsFactors =FALSE)
trigrams$first<-paste(sapply(strsplit(trigrams$names, "_"), "[[", 1),sapply(strsplit(trigrams$names, "_"), "[[", 2),sep="_")
trigrams$last<-sapply(strsplit(trigrams$names, "_"), "[[", 3)
rownames(trigrams)<-NULL
saveRDS(trigrams,"dictionaries/trigrams.rds")
どの時点でコードがハングしますか? – emilliman5
myCorpusでハングします<-toLower(myCorpus、keepAcronyms = TRUE) – AndyC
小規模なデータセットでコードが正常に実行されますか? – emilliman5