HeidelTime: параметр языка был указан как NULL
Я пытаюсь включить HeidelTime в свой uimaFIT-Pipeline.
Вот мой конвейер:
AggregateBuilder builder = new AggregateBuilder();
CollectionReaderDescription reader = createReaderDescription(TextReader.class,
TextReader.PARAM_SOURCE_LOCATION, dateTimePath, TextReader.PARAM_LANGUAGE, "en",
TextReader.PARAM_PATTERNS, "*.txt");
AnalysisEngineDescription treeTagger = createEngineDescription(TreeTaggerWrapper.class,
TreeTaggerWrapper.PARAM_LANGUAGE, "english",
TreeTaggerWrapper.PARAM_ANNOTATE_PARTOFSPEECH, true,
TreeTaggerWrapper.PARAM_ANNOTATE_SENTENCES, true,
TreeTaggerWrapper.PARAM_ANNOTATE_TOKENS, true);
builder.add(treeTagger);
AnalysisEngineDescription heidelTime = createEngineDescription(HeidelTime.class);
builder.add(heidelTime);
AnalysisEngineDescription intervalTagger = createEngineDescription(IntervalTagger.class);
builder.add(intervalTagger);
AnalysisEngineDescription xmiWriter = createEngineDescription(XmiWriter.class,
XmiWriter.PARAM_TARGET_LOCATION, outputPath,
XmiWriter.PARAM_OVERWRITE, true);
builder.add(xmiWriter);
SimplePipeline.runPipeline(reader, builder.createAggregateDescription());
Но при его выполнении возникает следующее исключение:
Language parameter was specified as NULL.
org.apache.uima.resource.ResourceInitializationException: Initialization of annotator class "de.unihd.dbs.uima.annotator.heideltime.HeidelTime" failed. (Descriptor: <unknown>)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:268)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:175)
at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:435)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:379)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:192)
at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:407)
at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:435)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:379)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:192)
at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:331)
at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:448)
at org.apache.uima.fit.pipeline.SimplePipeline.runPipeline(SimplePipeline.java:166)
...
Caused by: java.lang.NullPointerException
at de.unihd.dbs.uima.annotator.heideltime.resources.Language.getLanguageFromString(Language.java:65)
at de.unihd.dbs.uima.annotator.heideltime.HeidelTime.initialize(HeidelTime.java:141)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:261)
... 80 more
Как я могу установить язык и все другие параметры в моем конвейере? Я не нашел способа. Когда я использую автономную версию HeidelTime, я могу указать параметры в конструкторе, и он отлично работает.
1 ответ
Решение
Я решил проблему, загрузив heideltime-master с GitHub и поместив следующие папки в мою папку /src/main/resources:
desc.annotator
desc.comsumer
desc.reader
desc.type
После этого я создал AnalysisEngineDescriptions следующим образом:
AnalysisEngineDescription heidelTime = createEngineDescriptionFromPath(
"src/main/resources/desc/annotator/HeidelTime.xml");
builder.add(heidelTime);
AnalysisEngineDescription intervalTagger = createEngineDescriptionFromPath(
"src/main/resources/desc/annotator/IntervalTagger.xml");
builder.add(intervalTagger);
Благодаря этому я, наконец, заставил свой конвейер работать, и я могу видеть аннотации Timex3 в моем xmi-файле в Ruta Workbench.