注释器依赖项:UIMA 类型功能?

Annotator dependencies: UIMA Type Capabilities?

在我的 UIMA 应用程序中,我有一些注释器必须在某个注释器具有 运行 之后 运行。

起初,我考虑过将这些注释器聚合在一起,但我还有其他注释器也依赖于此(和其他)注释器,这使得聚合变得困难 and/or 不切实际。

我阅读了类型功能,如果我理解正确,它会告诉 UIMA 某些类型(注释)必须存在,当用作 Input Type 时。我希望 UIMA 会在 运行 宁管道没有注释器时给我类似警告的东西,这些注释器有一些输出类型被声明为所用注释器的输入类型。 相反,注释器像往常一样保持 running/processing。

有没有办法实现我想要的,或者这只是不必要的? 如果重要的话,我目前正在使用 SimplePipeline。

TL;DR:我的目标是,如果在这些注释器

之后的 Pipeline/scheduled 中缺少某些其他注释器,则注释器拒绝 运行

提前致谢。

在 UIMA 中,确保您需要的注释存在于您的注释器中的主要方法是将注释器聚集在一起。所以回答你的问题,这就是你将如何实现你想要的,因为你想做的事情(让 UIMA 通过类型功能计算出我们所有的依赖关系并提供警告)对于独立注释器的集合既不可能也不实用.

我的问题是,为什么通过聚合注释器来计算我们的依赖关系如此困难?你知道你可以聚合聚合管道吗?如果它们正常运行,它们应该具有完整的所有注释依赖项,并提供它们输出的列表,以便您可以将它们用作构建自己的管道的输入。

UIMA 不强制要求必须存在某些类型(注释)。这是一个允许灵活性的功能。

但是,您可以使用@TypeCapability 注释记录您的 UIMAfit 注释器。此注释的典型用法可能类似于:

@TypeCapability(
  inputs="org.apache.uima.fit.type.Token", 
  outputs="org.apache.uima.fit.type.Token:pos")

不过,这并没有强制类型依赖。我在 UIMA 之上 one project was to implement my own checking system 上做了什么。

UIMA 是一个非常灵活的框架。默认情况下,不使用功能,如果存在,则纯粹是信息性的。但是,请查看例如CapabilityLanguageFlowController:

FlowController for the CapabilityLanguageFlow, which uses a linear flow 
but may skip some of the AEs in the flow if they do not handle the language
of the current document or if their outputs have already been produced by
a previous AE in the flow.

您可以将聚合配置为使用这样的流量控制器,然后您就可以从这些功能中获益。

披露:我正在从事 Apache UIMA 项目(但到目前为止我没有使用 CapabilityLanguageFlowController)