これは、これに対するフォローアップの質問です。そこで、たとえばバイグラムが 2 つの個別のユニグラムになるような方法で、ドキュメント機能マトリックス (quanteda パッケージの dfm クラス) で ngram 機能を分割することが可能かどうかを尋ねました。
理解を深めるために、機能をドイツ語から英語に翻訳して、dfm の ngram を取得しました。化合物 ("Emissionsminderung") はドイツ語では静かに一般的ですが、英語では一般的ではありません ("emission reduction")。
library(quanteda)
eg.txt <- c('increase in_the great plenary',
'great plenary emission_reduction',
'increase in_the emission_reduction emission_increase')
eg.corp <- corpus(eg.txt)
eg.dfm <- dfm(eg.corp)
この例には素晴らしい答えがありました。これは、上記のような比較的小さな行列に対して完全にうまく機能します。ただし、マトリックスが大きくなるとすぐに、次のメモリエラーが常に発生します。
> #turn the dfm into a matrix
> DF <- as.data.frame(eg.dfm)
Error in asMethod(object) :
Cholmod-error 'problem too large' at file ../Core/cholmod_dense.c, line 105
したがって、この ngram 問題を解決したり、大きな (スパース) 行列/データ フレームを処理したりするための、よりメモリ効率の良い方法はありますか? 前もって感謝します!