1

これは、これに対するフォローアップの質問です。そこで、たとえばバイグラムが 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 問題を解決したり、大きな (スパース) 行列/データ フレームを処理したりするための、よりメモリ効率の良い方法はありますか? 前もって感謝します!

4

1 に答える 1