【问题标题】:re-init method of ontoRootGazetteer is not workingonRootGazetteer 的重新初始化方法不起作用
【发布时间】: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


【解决方案1】:

我使用了Flexible_Gazetteer,所以它有参数gazetteerInst,它只是一个处理资源OntoRootGazetteer。因此,首先您需要获取您在管道中使用的所有处理资源。对其进行迭代并从中提取 OntoRootGazetteer。之后OntoRootGazetteer 有一个属性gazetterInst,其值实际上是ontology。因此,您只需要更新该本体或为其提供本体的路径。然后对从flexibleGazettteer 中提取的ontoRootGazettter 使用reinit 方法。

通过编码-

application = CorpusControllerSingleton.getInstance(gapFilePath).getApplicationObject();
            Iterator<ProcessingResource> it = application.getPRs().iterator();
            while (it.hasNext()) {
                ProcessingResource pr = it.next();
                if(pr.getName().equals(FLEXIBLE_GAZETTEER)){
                    onto_Root_gazetteer = (ProcessingResource)  pr.getParameterValue(ONTOROOT_PROPERTY);
                    onto_Root_gazetteer.setParameterValue(ONTOROOT_PARAMETER, OntoLoader.getInstance().getOntology());
                    onto_Root_gazetteer.init();
                }
                if(pr.getName().equals(ANNIE_GAZETTEER_CASEINSENSITIVE)) {
                    pr.reInit();
                }
                if(pr.getName().equals(ANNIE_GAZETTEER_CASESENSITIVE)) {
                    pr.reInit();
                }
            }

这里

private static final String ONTOROOT_PROPERTY = "gazetteerInst";
private static final String ONTOROOT_PARAMETER = "ontology";

使用它,将解决您的问题。

【讨论】:

  • 我很好奇OntoLoader.getInstance().getOntology(),它有什么作用? OntoLoader 类从何而来?
  • 嘿它是我创造的。你只需要给本体他们的。那个方法只是返回本体。
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多