0

即使在 UIMA 和 uimaFIT 中,我也是 DKPro Core 的新手。我正在尝试运行一个项目但收到错误:de.tudarmstadt.ukp.dkpro.core.discourse.pdtb.DiscourseArgumentJava 代码中使用了 JCas 类型“”,但未在 XML 类型描述符中声明

在代码中,描述符:

AnalysisEngineDescription preprocessing = createEngineDescription(
                        createEngineDescription(LanguageToolSegmenter.class),
                        createEngineDescription(ParagraphAnnotator.class),
                        createEngineDescription(MateLemmatizer.class, MateLemmatizer.PARAM_LANGUAGE, "en"),
                        createEngineDescription(SnowballStemmer.class),
                        createEngineDescription(StanfordParser.class, StanfordParser.PARAM_WRITE_PENN_TREE, true),
                        createEngineDescription(StanfordSentimentAnnotator.class),
                                createEngineDescription(PDTBDiscourseAnnotator.class)
                );

de.tudarmstadt.ukp.dkpro.core.discourse.pdtb.DiscourseArgument在以下行中的 PDTBDiscourseAnnotator.class 中使用:

 DiscourseArgument discourseArgument = new DiscourseArgument(jCas);

并且错误从那里开始。

据我从 uimaFIT 文档中了解到,如果我们使用 createEngineDescription(class_name),则使用 uimaFIT 我们不需要 XML 描述符,如果是这样,那么为什么错误会说: "not declared in the XML type descriptor"

其他类例如:“ SnowballStemmer.class”使用相同类型的调用,例如用 jcas 参数实例化另一个类

Stem stemAnnot = new Stem(jcas, fs.getBegin(), fs.getEnd());

但在这些情况下不会发生错误。

关于这个错误的任何想法或线索?我的理解正确吗

4

1 回答 1

2

当您生成一个给定类型的 JCas 类并在您的代码中使用它时会出现此错误,但同时,(J)CAS 尚未使用包含该类型的类型系统进行初始化。

在实践中意味着什么?

  • 您在某处有一些 UIMA 类型系统描述 XML 文件来定义您的类型DiscourseArgument
  • 您已经使用 JCasGen 从该类型系统创建了一个 JCas Java 类。
  • 您正在使用 uimaFIT 来构建您的管道(即createEngineDescription(...))。
  • uimaFIT 在初始化管道时自动扫描 UIMA 类型系统描述 XML 文件的类路径。
  • 但是,您没有让 uimaFIT 知道您自己的类型描述文件,因此 uimaFIT 没有找到它并且您收到错误消息。

如何解决?

您需要遵循一些约定,以便 uimaFIT 能够检测和加载您的自定义类型:

  • 在源文件夹中创建一个文件META-INF/org.apache.uima.fit/types.txt(如果您使用的是 Maven,则在src/main/resources.
  • 将您的类型描述 xml 文件的位置放入其中,例如classpath*:some/package/my-custom-type-description.xml

一旦你这样做了,uimaFIT 应该会自动检测你的类型并且错误应该消失。

为什么 DKPro Core 自己的类不会发生这种情况?

因为 DKPro Core 工件包含META-INF/org.apache.uima.fit/types.txt允许 uimaFIT 自动检测类型的文件。

于 2019-03-12T13:53:57.740 回答