我们是否需要在一个新的注释器中创建process() ?



我创建了一个名为"NewAnnotator"的注释器,并尝试使其与ClearTK中的其他注释器一起工作,如:SentenceAnnotator, PosTaggerAnnotator等。所以我希望能够运行pipeline:

aggregate.add(SentenceAnnotator.getDescription());
aggregate.add(PosTaggerAnnotator.getDescription());
aggregate.add(NewAnnotator.getDescription());   
// run the classification pipeline on the new texts
SimplePipeline.runPipeline(reader, aggregate.createAggregateDescription());

我写的代码没有错误,但是在运行时它返回了很多错误,我认为从我的NewAnnotator代码的这一部分:

  public static AnalysisEngineDescription getDescription() throws ResourceInitializationException {
    return AnalysisEngineFactory.createPrimitiveDescription(
          NewAnnotator.class,
          PARAM_POSTAG_MODEL_FILE,
          ParamUtil.getParameterValue(PARAM_POSTAG_MODEL_FILE,  "/somepath")); 
  }
  public static final String PARAM_POSTAG_MODEL_FILE = ConfigurationParameterFactory.createConfigurationParameterName(
      PosTaggerAnnotator.class,
      "postagModelFile");

我几乎是从PosTaggerAnnotator中复制这部分,但它在我的NewAnnotator中没有用处,我只是添加进去,这样我就可以使用:

aggregate.add(NewAnnotator.getDescription());   

因为我不知道任何其他方法来添加聚合没有.getDescription();,我也不知道如何在我的注释器中声明正确的getDescription(),即使没有它也可以正常工作。所以如果你有过这样的经历,请给我一些建议!谢谢你!

getDescription()是为注释器创建默认描述的方便方法。它使用AnalysisEngineFactory.createPrimitiveDescription(),需要为其提供正确的参数,如下所示:

  public static AnalysisEngineDescription getDescription() throws ResourceInitializationException {
    return AnalysisEngineFactory.createPrimitiveDescription(
          NewAnnotator.class,
          first_parameter_name,  first_parameter_value, 
          second_parameter_name, second_parameter_value,
          ... ); 
  }

在uimaFIT代码库中有更多的例子

最新更新