機能として 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 を使用したいので、妥当な量のメモリで実行できるかどうかを知る必要があります。どんなアイデアでも大歓迎です!!
乾杯、ディミトリス