【问题标题】:Train NER model avoiding outofmemory error训练 NER 模型避免内存不足错误
【发布时间】:2017-11-19 00:44:54
【问题描述】:

我正在尝试使用 stanford-nlp library 训练 NER 模型。我有一个所需格式的文件,大小为 6GB。配置文件:

usePrevSequences=true
useClassFeature=true
useTypeSeqs2=true
useSequences=true
wordShape=chris2useLC
useTypeySequences=true
useDisjunctive=true
noMidNGrams=true
serializeTo=ner-model50.ser.gz
maxNGramLeng=6
useNGrams=true
usePrev=true
useNext=true
maxLeft=1
trainFile=trainData
map=word=0,answer=1
useWord=true
useTypeSeqs=true

按照文档中的建议,每个句子都用空行分隔。所以当我用mx25g运行命令时:

java -mx25g -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop config.prop

我得到了错误:

线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间

从库的FAQ page 建议将文件拆分为多个文件以防内存错误。

为此,您需要使用trainFileList 选项而不是trainFile 选项来更改配置文件。现在我有多个文件,每个文件大约 250MB。运行相同的命令时出现以下错误:

线程“主”java.lang.OutOfMemoryError 中的异常:超出 GC 开销限制

因此,拆分文件似乎没有帮助。你认为分割成更小的文件会有帮助吗?还是没关系?有什么办法可以解决这个问题吗?任何见解都是有用的。提前致谢。

【问题讨论】:

    标签: stanford-nlp


    【解决方案1】:

    我也遇到了和你一样的问题,我的一位学长建议我使用 -Xmx 而不是 -mx 以根据您的计算机 RAM 和交换大小指定最大堆大小。
    你也可以减少没有。如果使用 IOB 编码,则使用实体类或 mergeTags,因为使用的空间随着实体类的增加呈指数增长。

    java -Xmx**g -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop ner.prop

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2020-05-28
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2022-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多