【发布时间】:2016-11-26 04:40:44
【问题描述】:
我是 GATE NLP 的新手。我正在开发一个适用于GATE NLP 的应用程序。
所以,我创建了一个管道,我通过创建单例对象在应用程序中只加载一次。因此,由于应用程序的这种性能有所提高,但是当我对本体或地名词典进行任何更改并重新运行应用程序时,它不会考虑新添加的单词,因为我通过加载管道使我的对象成为单例所以它考虑以前加载的地名词典和本体。所以,
我使用了以下代码,它使用的是更新的地名词典,而不是本体。
application = CorpusControllerSingleton.getInstance(gapFilePath).getApplicationObject();
Iterator<ProcessingResource> it = application.getPRs().iterator();
if(isReload){
System.out.println("processing resources------>"+it.next());
while(it.hasNext()){
ProcessingResource pr = it.next();
if(pr.getName().equals("RzCIS") || pr.getName().equals("RzCs")) {
System.out.println("PR initialization--->" +pr.getFeatures());
pr.reInit();
}
}
}
谁能解释我如何重新初始化本体?
【问题讨论】:
-
好问题。经过一些搜索,在我看来,实际上不可能重新加载本体:-(
-
您可以尝试在本体上调用
cleanup()和init(),但我不保证它会起作用...... -
嘿,@dedek 这个问题可以通过 -Iterator
it = application.getPRs().iterator(); while (it.hasNext()) { ProcessingResource pr = it.next(); if(pr.getName().equals(FLEXIBLE_GAZETTEER)){ on_Root_gazetteer = (ProcessingResource) pr.getParameterValue(ONTOROOT_PROPERTY); on_Root_gazetteer.setParameterValue(ONTOROOT_PARAMETER, OntoLoader.getInstance().getOntology()); on_Root_gazetteer.init(); } -
如果它适合您,请将其发布为答案,我会投票;-)
标签: nlp stanford-nlp gate