我正在尝试以 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
对于 unigram,程序按预期运行。问题是我只有 4G 内存可用,我想知道是否可以用这么少的内存加载像这样的大型模型。
我试图通过将每篇文章的每个单词(在标记化之后)转换为唯一的整数 id 来减小数据的大小,方法是在内存中使用“单词,id”对保持哈希。这种方法设法减少了 25% 的大小,但仍然没有设法建立二元模型分类器。
我想在非常大的数据(网页)上使用 stanford-nlp,所以我真的需要知道我是否可以在合理的内存量下运行它。任何想法将不胜感激!
干杯,迪米特里斯