uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Olivier Austina <olivier.aust...@gmail.com>
Subject Re: how to call UIMA Ruta from uimaFIT
Date Thu, 12 Nov 2015 16:04:56 GMT
Hi Peter,


Thank you for you reply. To answer to your questions:


- who created DateTypeSystem.xml? Was it the ruta-maven-plugin or the
build process of the Ruta Workbench? Did you move the type system
descriptor, e.g., making the import in the AE descriptor invalid?

DateTypeSystem.xml is created by the Ruta Workbench. I have created the
project with Ruta Workbench and then try to use it in java program with
maven. This is the DateTypeSystem.xml file content :

<?xml version="1.0" encoding="UTF-8"?>
<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
    <name>tutorial.entity.DateTypeSystem</name>
    <imports>
        <import location="../../BasicTypeSystem.xml"/>
    </imports>
    <types>
        <typeDescription>
            <name>tutorial.entity.Date.Month</name>
            <description>Type defined in tutorial.entity.Date</description>
            <supertypeName>uima.tcas.Annotation</supertypeName>
        </typeDescription>
        <typeDescription>
            <name>tutorial.entity.Date.Year</name>
            <description>Type defined in tutorial.entity.Date</description>
            <supertypeName>uima.tcas.Annotation</supertypeName>
        </typeDescription>
        <typeDescription>
            <name>tutorial.entity.Date.Date</name>
            <description>Type defined in tutorial.entity.Date</description>
            <supertypeName>uima.tcas.Annotation</supertypeName>
        </typeDescription>
    </types>
</typeSystemDescription>

- did you include the jcasgen-maven-plugin in your pom? Or did you use
the Component Descriptor Editor to create JCas cover classes.

No I didn't use it. I have only create a simple maven project with eclipse
and try to call UIMA Ruta with uimaFIT.

- the error messages indicate that the type system import of your
analysis engine has some problems and that the Month type is not
resolved. Furthermore,tThe Month class (JCas cover class for the type)
is missing. Either there was already a class or JCasGen was not executed.

Can you provide the complete pom and a short description of the layout
of your project?

This is the pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>tuto</groupId>
  <artifactId>tuto-step0</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>tuto-step0</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
       <groupId>org.apache.uima</groupId>
       <artifactId>ruta-core</artifactId>
       <version>2.3.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimafit-core</artifactId>
      <version>2.1.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

This is java code with imports:

package tuto.tuto_step0;

import java.io.File;
import java.io.IOException;

import org.apache.uima.UIMAFramework;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.cas.text.AnnotationIndex;
import org.apache.uima.fit.util.ContainmentIndex.Type;
import org.apache.uima.fit.util.JCasUtil;
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceSpecifier;
import org.apache.uima.util.InvalidXMLException;
import org.apache.uima.util.XMLInputSource;



public class App
{
    public static void main( String[] args ) throws IOException,
InvalidXMLException, ResourceInitializationException,
AnalysisEngineProcessException, CASException
    {
        //System.out.println( "Hello World!" );
        File specFile = new
File("/home/olhome/software/workspace/rutatest1/dateproject/descriptor/tutorial/entity/DateEngine.xml");
            XMLInputSource in = new XMLInputSource(specFile);
            ResourceSpecifier specifier = UIMAFramework.getXMLParser().
                parseResourceSpecifier(in);
            // for import by name... set the datapath in the ResourceManager
            AnalysisEngine ae =
UIMAFramework.produceAnalysisEngine(specifier);
            CAS cas = ae.newCAS();
            cas.setDocumentText("This is my document. March  June
December");
            ae.process(cas);
            // For plain UIMA
            /*
            org.apache.uima.cas.Type monthType =
cas.getTypeSystem().getType("tutorial.entity.Date.Month");
            AnnotationIndex<AnnotationFS> annotationIndex =
            cas.getAnnotationIndex(monthType);
            for (AnnotationFS each : annotationIndex) {
              System.out.println(each.getCoveredText());
            }
            */

            JCas jcas = cas.getJCas();
            for (Month month : JCasUtil.select(jcas, Month.class)) {
                   System.out.println(month.getCoveredText());
                }


    }
}

Thank you.

Regards
Olivier


2015-11-12 14:35 GMT+01:00 Peter Kl├╝gl <peter.kluegl@averbis.com>:

> Hi,
>
> here a few fast comments and questions:
> - the example code uses uimaFIT only for the select, but not for the
> creation/initialization of the components/CAS. Thus,
> org.apache.uima.fit/types.txt won't help much. However, the types should
> be included by the import in the AE.
> - who created DateTypeSystem.xml? Was it the ruta-maven-plugin or the
> build process of the Ruta Workbench? Did you move the type system
> descriptor, e.g., making the import in the AE descriptor invalid?
> - did you include the jcasgen-maven-plugin in your pom? Or did you use
> the Component Descriptor Editor to create JCas cover classes.
> - the error messages indicate that the type system import of your
> analysis engine has some problems and that the Month type is not
> resolved. Furthermore,tThe Month class (JCas cover class for the type)
> is missing. Either there was already a class or JCasGen was not executed.
>
> Can you provide the complete pom and a short description of the layout
> of your project?
>
> Best,
>
> Peter
>
> PS: a uimaFIT like approach for creating a Ruta engine could look like
> (whereas direct initialization of AE should be avoided in general):
> AnalysisEngine ae = createEngine(RutaEngine.class,
>             RutaEngine.PARAM_MAIN_SCRIPT,
> "org.apache.uima.ruta.engine.UimafitTest",
>             RutaEngine.PARAM_SCRIPT_PATHS, new String[] {
> "src/test/resources" });
>
>
> Am 12.11.2015 um 14:12 schrieb Olivier Austina:
> > Hi,
> >
> > I try to call a simple UIMA ruta script from uimaFIT in java. It works in
> > plain UIMA but it didn't work in uimaFIT for me.  Here is the script:
> >
> > PACKAGE tutorial.entity;
> > WORDLIST MonthsList = 'month.txt';
> > DECLARE Month;
> > DECLARE Year;
> > DECLARE Date;
> > Document{-> MARKFAST(Month, MonthsList )};
> > NUM{REGEXP("19..|20..") -> MARK(Year,1,2)};
> > Month Year {-> MARK(Date,1,2)};
> >
> > Here is the java code (based on Ruta doc example):
> >
> > //System.out.println( "Hello World!" );
> >         File specFile = new
> >
> File("/home/olhome/software/workspace/rutatest1/dateproject/descriptor/tutorial/entity/DateEngine.xml");
> >             XMLInputSource in = new XMLInputSource(specFile);
> >             ResourceSpecifier specifier = UIMAFramework.getXMLParser().
> >                 parseResourceSpecifier(in);
> >             // for import by name... set the datapath in the
> ResourceManager
> >             AnalysisEngine ae =
> > UIMAFramework.produceAnalysisEngine(specifier);
> >             CAS cas = ae.newCAS();
> >             cas.setDocumentText("This is my document. March  June
> > December");
> >             ae.process(cas);
> >
> >             JCas jcas = cas.getJCas();
> >             for (Month month : JCasUtil.select(jcas, Month.class)) {
> >                    System.out.println(month.getCoveredText());
> >                 }
> >
> >   This is the pom dependencies:
> >
> >     <dependency>
> >        <groupId>org.apache.uima</groupId>
> >        <artifactId>ruta-core</artifactId>
> >        <version>2.3.1</version>
> >     </dependency>
> >
> >     <dependency>
> >       <groupId>org.apache.uima</groupId>
> >       <artifactId>uimafit-core</artifactId>
> >       <version>2.1.0</version>
> >     </dependency>
> >
> >
> > I have the following error:
> >
> > Exception in thread "main" java.lang.Error: Unresolved compilation
> > problems:
> >     Month cannot be resolved to a type
> >     Bound mismatch: The generic method select(FSArray, Class<T>) of type
> > JCasUtil is not applicable for the arguments (JCas, Class<Month>). The
> > inferred type Month is not a valid substitute for the bounded parameter
> <T
> > extends TOP>
> >     Month cannot be resolved to a type
> >     at tuto.tuto_step0.App.main(App.java:51)
> >
> >
> > It seems that I am not able to correctly import types like in the maven
> > example. I am not so familiar with maven. I have put the
> DateTypeSystem.xml
> > in a folder called tuto under src folder and add the line
> > "classpath*:/tuto/DateTypeSystem.xml" in the text file
> > src/META-INF/org.apache.uima.fit/types.txt.
> >
> > Any suggestion is welcome. Thank you.
> >
> > Regards
> > Olivier
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message