Hi,

there are two options to avoid ambiguous references to types by using
their shot name.


This first one is using an alias as you did. However, you have to assign
an unambiguous alias. Ruta should check if the alias is ambiguous but
obviously doesn't. Try something like:

IMPORT org.apache.uima.ruta.type.NUM FROM
org.apache.uima.ruta.engine.BasicTypeSystem AS RutaNum;

Then you can use "RutaNum" for referencing to
org.apache.uima.ruta.type.NUM in your rules.


... or something like IMPORT PACKAGE org.apache.uima.ruta.type FROM
org.apache.uima.ruta.engine.BasicTypeSystem AS ruta;

... then you should be able to use ruta.NUM in your rules.


(I did not test both examples)


The second option is to activate the "strictImports" configuration
parameter. If activated, the type expressions, e.g., by short name, are
only resolved against the types that are imported. Thus, if you do not
import the DKPro Core type system, the NUM of the ruta type system will
be used. If deactivated, the references are resolved against the names
in the type system of the given CAS. If you create the CAS with uimaFIT,
then there are also types that are not imported in you script. Well, you
would not even need to import the types in order to use them in your script.


Both options have their advantages and disadvantages. Using strictImport
in generic scripts where you initialize type variables using
configuration parameters is problematic. If you have a larger pipeline
with unknown components with unknown type systems, strictImports is
often required. There may be a conflict with other components, which
cannot be known when writing the rules.


btw, there is also an updated exemplary project using DKPro Core in ruta:

https://github.com/pkluegl/ruta/tree/master/ruta-german-novel-with-dkpro



Let me know if this helps or if I should provide more information.


Best,


Peter




Am 07.04.2017 um 15:01 schrieb Hugues de Mazancourt:
> Hi,
>
> I’m using Ruta to perform information extraction and I mix it in a pipeline 
> with DKPro-based resources (for POS-tagging and NER). Thus, I have my own 
> type system, Ruta’s basic type system and some DKpro typesystems (especially 
> the one describing Tokens)
>
> I end up with type conflicts such as (Ruta error) :
>
>> java.lang.IllegalArgumentException: NUM is ambiguous, use one of the 
>> following instead : 
>> de.tudarmstadt.ukp.dkpro.core.api.syntax.type.dependency.NUM 
>> org.apache.uima.ruta.type.NUM 
> I tried to use declarations such as :
>
>> IMPORT org.apache.uima.ruta.type.NUM FROM 
>> org.apache.uima.ruta.engine.BasicTypeSystem AS NUM;
> at the top of my Ruta rule files, but this doesn’t help.
>
> I guess using « org.apache.uima.ruta.type.NUM » instead of « NUM » would fix 
> the problem, but this wouldn’t increase readability of rules !
> The other solution I see would be to create my own, non-ambiguous, readable 
> annotation and have a rule that marks all org.apache.uima.ruta.type.NUM with 
> that annotation, but I’m afraid of performance issues due to these redundant 
> annotations.
>
> Is there any other solution for Ruta to mask some types or alias them ?
>
> Best,
>
> Hugues de Mazancourt
> http://about.me/mazancourt
>
>
>
>
>

Reply via email to