Prokopis Prokopidis created UIMA-3368:
-----------------------------------------

             Summary: Ruta and UIMA-AS
                 Key: UIMA-3368
                 URL: https://issues.apache.org/jira/browse/UIMA-3368
             Project: UIMA
          Issue Type: Bug
          Components: Async Scaleout, ruta
    Affects Versions: 2.1.0ruta, 2.4.0AS
            Reporter: Prokopis Prokopidis
            Priority: Minor


Hi,

I get errors when applying Ruta rules from an Annotator deployed as a UIMA-AS 
service. Here's my situation.

I have a SimpleAnnotator class that assigns tags to Tokens. So, when I have a 
test.txt in my input with this content:

$ more test.txt
A room . 

... I get, among other things, the following output

{code:xml}<examples:Token xmi:id="21" sofa="1" begin="1" end="2" pos="aTag"/>
<examples:Token xmi:id="26" sofa="1" begin="3" end="7" pos="anotherTag"/>
{code}

To get the tags, I use java code as in the attached SimpleAnnotator.java and 
ruta rules.
All's fine when I run this a standard UIMA pipeline. But, if I deploy the 
annotator in UIMA-AS and I send the same text to the queue created, I get 
NullPointerException's similar to those:

Caused by: java.lang.NullPointerException
        at 
org.apache.uima.cas.impl.FSIndexRepositoryImpl.getIndex(FSIndexRepositoryImpl.java:1334)
        at 
org.apache.uima.cas.impl.CASImpl.getAnnotationIndex(CASImpl.java:3935)
        at org.apache.uima.ruta.RutaStream.updateIterators(RutaStream.java:131)
        at org.apache.uima.ruta.RutaStream.<init>(RutaStream.java:94)
        at org.apache.uima.ruta.RutaStream.<init>(RutaStream.java:138)
        at 
org.apache.uima.ruta.engine.RutaEngine.initializeStream(RutaEngine.java:580)
        at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:440)
        at 
org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:375)
}}
and rules are not applied.

I can provide an eclipse project including a typesystem and a deployment 
descriptor if needed.

Many thanks for looking into this,

Prokopis 

{code:java}
package org.apache.uima.examples;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.uima.analysis_component.JCasAnnotator_ImplBase;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.jcas.JCas;
import org.apache.uima.ruta.engine.Ruta;
import org.apache.uima.ruta.engine.RutaEngine;

public class SimpleAnnotator extends JCasAnnotator_ImplBase {
        public void process(JCas aJCas) throws AnalysisEngineProcessException {
                String text = aJCas.getDocumentText();
        Matcher matcher = Pattern.compile("\\w+").matcher(text);
        while(matcher.find()){
            Token token = new Token(aJCas, matcher.start(), matcher.end());
            token.setPos("aTag");
            token.addToIndexes();
        }
                Map<String, Object> parameters = null;
                parameters = new HashMap<String, Object>();
                parameters.put(RutaEngine.PARAM_REMOVE_BASICS, true);
                parameters.put(RutaEngine.PARAM_SEEDERS, new String[0]);
                String rules = 
                                "Token{REGEXP(\"room\")-> Token.pos=\"STOP\"};  
 \n"
                                + "Token{REGEXP(Token.pos, \"STOP\")-> 
Token.pos=\"anotherTag\"};";
                try {
                        Ruta.apply(aJCas.getCas(), rules, parameters);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}
{code}




--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to