1

機能として n-gram(n=>1,2,3) を使用して Stanford-nlp 分類器の20 のニュース テキスト分類の例を実行しようとしていますが、引き続きメモリ不足エラーが発生します。私が使用しているプロパティとそれを実行するコマンドに従ってください:

2.useSplitWordNGrams=true
2.maxWordNGramLeng=3               
2.minWordNGramLeng=1               

java -mx1800m -cp $STANFORD_CLASSIFIER_JAR edu.stanford.nlp.classify.ColumnDataClassifier \
   -trainFile 20news-devtrain.txt -testFile 20news-devtest.txt \
   -2.useSplitWords -2.splitWordsRegexp "\\s+" -prop 20news1.prop

ユニグラムの場合、プログラムは期待どおりに実行されます。問題は、利用可能なメモリが 4G しかないことです。これらのモデルのような大きなモデルを、このような少ないメモリでロードできるかどうか疑問に思っていました。

「単語、ID」のペアでメモリにハッシュを保持することにより、各記事の各単語(トークン化後)を一意の整数IDに変換することにより、データのサイズを削減しようとしました。この方法では、サイズを 25% 縮小することができましたが、バイグラム モデルの分類器を構築することはできませんでした。

非常に大きなデータ (Web ページ) で stanford-nlp を使用したいので、妥当な量のメモリで実行できるかどうかを知る必要があります。どんなアイデアでも大歓迎です!!

乾杯、ディミトリス

4

1 に答える 1

1

Stanford-NLP コードについて話すことはできませんが、n-gram 機能については一般的に答えることができます。ボキャブラリにv個の項目がある場合、単純なバイグラム モデルにはv ^2 個のパラメーターがあります (トライグラム モデルにはv ^3 個のパラメーターがあります)。n-gram 機能が必要な場合は、最も識別力のあるバイグラムを見つけて、それらを機能として使用する必要があります。これを行うには、さまざまな機能選択方法を調べてください。

于 2012-12-03T15:57:07.400 に答える