There is a fundamental issue here, and the mapper you describe addresses the symptom, but not the root problem. The problem is that everyone creates their own schema, ontology, or type system, and is unwilling to learn or use other type systems until they have been forced to (e.g. by a standardization process). So, it is inevitable that many different type systems will be created -- hampering the interoperability of components. So, a mapper is an essential component that everyone will continue to re-invent. UIMA definitely needs such a tool.

An alternative way of using a mapper is to consider it a wrapper for a component. A wrapper would allow a pipeline to be constructed in a single type system using heterogeneous components. This would be a useful way of looking at the mapping functionality when adding a limited number of external components to an existing pipeline. The mapper as you described would be more useful in an ad hoc construction of pipelines from pre-existing components. I think both are valid use cases.

Dave


Michael Baessler wrote:
Is there some interest/need in the UIMA community to have an annotation mapping 
annotator?

I think some of you might know the issue that different UIMA components work on 
different
annotations and type systems. A mapping annotator component could be used to 
translate the
annotations between these different requirements. E.g. we have a tokenizer 
component at the
beginning of the analysis flow that produces example.Token annotations with a 
POS feature set. Later
in the flow have a component that needs that information, but expects an 
example.Noun annotation.
Unfortunately there is no way to configure both components to produce or read 
different annotation
types, so in that case we need a mapping.

Tokenizer creates:

  example.Token (2,8)
     POS = NN

Mapping annotator translates this to:

  example.Noun (2,8)
     posTag = NN


If there is a need for such a component we can reuse some of the code developed 
for the UIMA
SimpleServer. The SimpleServer has a mapping syntax with additional filtering 
as shown below.

The mapping for the example above looks like:

<type name="example.Token" outputTag="example.Noun">
  <filters>
      <filter featurePath="POS" operator="=" value="NN" />
  </filters>
  <outputs>
      <output featurePath="pos" outputAttribute="posTag"/>                    
  </outputs>
</type>

Any feedback/comments for such a component?
Are there any implementations available?

-- Michael


Reply via email to