我创建了一个名为"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代码库中有更多的例子