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 Fri, 13 Nov 2015 14:18:16 GMT
Hi Peter,

Thank for your help it works very very well now.
The first time I import your project, it indicates an error for import
tutorial.entity.Date.Date statement. I fixed it following this post here
<http://philip.yurchuk.com/software/eclipse-cannot-be-resolved-to-a-type-error/>
if it can help someone also. These 4 instructions : *Clean, refresh, build,
restart.*
Thank you again.

Regards
Olivier


2015-11-13 14:01 GMT+01:00 Peter Klügl <peter.kluegl@averbis.com>:

> Hi,
>
> I assume that there are several problems, e.g., the missing JCas cover
> classes.
>
> I have taken the liberty to create a project based on your example like
> I would use ruta right now (with 2.3.1):
> http://people.apache.org/~pkluegl/examples/date-example.zip
>
> - the script file are in src/main/ruta
> - the wordlist file is in src/main/resources
> - the descriptors are generated to target/generated-sources/ruta
> - the JCas cover classes are generated to  target/generated-sources/jcasgen
> - src/test/java contains two JUnit tests: one based on the generated
> descriptor and one based on uimaFIT without ae descriptor
>
> Let me know if this helps and/or you have questions about the project
> setup.
>
> Best,
>
> Peter
>
> Am 12.11.2015 um 17:04 schrieb Olivier Austina:
> > 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