我对NLP很新,我正在使用GATE.如果我运行大数据集(包含7K +记录)的代码,我会收到OOM异常.下面是发生异常的代码.
/**
* Run ANNIE
*
* @param controller
* @throws GateException
*/
public void execute(SerialAnalyserController controller)
throws GateException {
TestLogger.info("Running ANNIE...");
controller.execute(); /**** GateProcessor.java:217 ***/
// controller.cleanup();
TestLogger.info("...ANNIE complete");
}
Run Code Online (Sandbox Code Playgroud)
这是日志:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at java.util.HashMap.putAll(Unknown Source)
at gate.annotation.AnnotationSetImpl.<init>(AnnotationSetImpl.java:111)
at gate.jape.SinglePhaseTransducer.attemptAdvance(SinglePhaseTransducer.java:448)
at gate.jape.SinglePhaseTransducer.transduce(SinglePhaseTransducer.java:287)
at gate.jape.MultiPhaseTransducer.transduce(MultiPhaseTransducer.java:168)
at gate.jape.Batch.transduce(Batch.java:352)
at gate.creole.Transducer.execute(Transducer.java:116)
at gate.creole.SerialController.runComponent(SerialController.java:177)
at gate.creole.SerialController.executeImpl(SerialController.java:136)
at gate.creole.SerialAnalyserController.executeImpl(SerialAnalyserController.java:67)
at gate.creole.AbstractController.execute(AbstractController.java:42)
at in.co.test.GateProcessor.execute(GateProcessor.java:217)
Run Code Online (Sandbox Code Playgroud)
我想知道执行函数究竟发生了什么以及如何解决它.谢谢.
在GATE中处理大型(或多个)文档可能需要大量内存,GATE需要大量空间来存储注释.另一方面,各种处理资源也需要大量内存:地名索引,基于统计模型的标记等.
Gate开发人员GUI中的一个技巧是将文档语料库存储在数据存储中,然后仅加载语料库并运行管道.GATE非常聪明,可以一次加载一个文档,处理它,然后在打开下一个文档之前保存并关闭它.(您可以先在数据存储中存储一个空语料库,然后从文件夹中"填充"它,这将再次逐个加载文档而不会浪费内存.)
这正是您在打开下一个代码,打开文档,处理,保存和关闭之前应该执行的操作.如果您有一个大型文档,则应将其拆分(以不会破坏注释性能的方式).
以下是"Advanced GATE Embedded"模块的代码示例:
// for each piece of text:
Document doc = (Document)Factory.createResource("gate.corpora.DocumentImpl",
Utils.featureMap("stringContent", text, "mimeType", mime));
Corpus corpus = Factory.newCorpus("webapp corpus");
try {
corpus.add(doc);
application.execute();
...
finally {
corpus.clear();
Factory.deleteResource(doc);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |