Do I need to rewrite the entire java project if I want to use one UIMA dependent library?

I want to use https://code.google.com/p/heideltime/ in a java project. This code "fits into the UIMA pipeline", which I donโ€™t understand at all. UIMA looks like it is designed to solve many problems that I donโ€™t have, so I would like to get the minimum amount of UIMA needed to run this code.

Is there a simple example of how I can run a simple UIMA program?

I added

<dependency> <groupId>org.uimafit</groupId> <artifactId>uimafit</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>org.apache.uima</groupId> <artifactId>uimaj-core</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>org.apache.uima</groupId> <artifactId>uimaj-tools</artifactId> <version>2.4.0</version> </dependency> 

for my pom.xml, but for some reason maven still won't compile this:

 import org.apache.uima.jcas.JCas; import org.apache.uima.util.Level; import org.uimafit.component.JCasAnnotator_ImplBase; import org.uimafit.descriptor.ConfigurationParameter; import org.uimafit.descriptor.TypeCapability; import org.uimafit.examples.tutorial.type.RoomNumber; public class RoomNumberAnnotatorPipeline { public static void main(String[] args) throws Exception { String text = "The meeting was moved from Yorktown 01-144 to Hawthorne 1S-W33."; TypeSystemDescription tsd = createTypeSystemDescription( "org.uimafit.examples.tutorial.type.RoomNumber"); JCas jCas = createJCas(tsd); // jCas.setDocumentText(text); // AnalysisEngine analysisEngine = createPrimitive(RoomNumberAnnotator.class, tsd); // analysisEngine.process(jCas); // // for (RoomNumber roomNumber : select(jCas, RoomNumber.class)) { // System.out.println(roomNumber.getCoveredText() + "\tbuilding = " // + roomNumber.getBuilding()); // } } } [ERROR] symbol : class TypeSystemDescription [ERROR] location: class com.stackoverflow.RoomNumberAnnotatorPipeline 

enter image description here

Are UIMA dependencies more significant than a typical java library? Is it not enough to just pull out UIMA from Maven Central and start using their classes in my existing code?

ok, I somehow got this work example (I have no idea what it is, and I'm still confused why it didn't work before). I still cannot use heideltime:

 package org.ryan; import static org.uimafit.factory.AnalysisEngineFactory.createPrimitive; import static org.uimafit.factory.JCasFactory.createJCas; import static org.uimafit.factory.TypeSystemDescriptionFactory.createTypeSystemDescription; import static org.uimafit.util.JCasUtil.select; import org.apache.uima.UIMAException; import org.apache.uima.analysis_engine.AnalysisEngine; import org.apache.uima.jcas.JCas; import org.apache.uima.resource.metadata.TypeSystemDescription; import org.uimafit.examples.tutorial.ex1.RoomNumberAnnotator; import org.uimafit.examples.tutorial.type.RoomNumber; /** * Hello world! * */ public class UIMAWTF { public static void main( String[] args ) throws UIMAException { String text = "The meeting was moved from Yorktown 01-144 to Hawthorne 1S-W33. Today is May 5, 2013."; TypeSystemDescription tsd = createTypeSystemDescription("org.uimafit.examples.tutorial.type.RoomNumber"); JCas jCas = createJCas(tsd); jCas.setDocumentText(text); AnalysisEngine analysisEngine = createPrimitive(RoomNumberAnnotator.class, tsd); analysisEngine.process(jCas); for (RoomNumber roomNumber : select(jCas, RoomNumber.class)) { System.out.println(roomNumber.getCoveredText() + "\tbuilding = " + roomNumber.getBuilding()); } } } 

edit Now try:

 HeidelTimeStandalone hts_sci = new HeidelTimeStandalone(Language.ENGLISH, DocumentType.NEWS, OutputType.TIMEML);//, configPath); dates = hts_sci.process("19-Nov-2013", new Date(2012,01,05), new TimeMLResultFormatter()); System.out.println(dates); 

Receiving:

 Jul 3, 2013 2:02:41 PM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone initialize INFO: HeidelTimeStandalone initialized with language english Jul 3, 2013 2:02:41 PM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone readConfigFile INFO: trying to read in file config.props java.lang.NullPointerException at java.io.Reader.<init>(Reader.java:61) at java.io.InputStreamReader.<init>(InputStreamReader.java:55) at de.unihd.dbs.uima.annotator.heideltime.resources.GenericResourceManager.readResourcesFromDirectory(GenericResourceManager.java:45) at de.unihd.dbs.uima.annotator.heideltime.resources.NormalizationManager.<init>(NormalizationManager.java:58) at de.unihd.dbs.uima.annotator.heideltime.resources.NormalizationManager.getInstance(NormalizationManager.java:73) at de.unihd.dbs.uima.annotator.heideltime.HeidelTime.initialize(HeidelTime.java:143) at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.initialize(HeidelTimeStandalone.java:153) at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.<init>(HeidelTimeStandalone.java:128) at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.<init>(HeidelTimeStandalone.java:112) at com.hrl.issl.osi.date.LocalHeidelTime.main(LocalHeidelTime.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297) at java.lang.Thread.run(Thread.java:662) Jul 3, 2013 2:02:41 PM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone initialize WARNING: HeidelTime could not be initialized java.lang.NullPointerException at org.apache.uima.util.XMLInputSource.<init>(XMLInputSource.java:118) at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.initialize(HeidelTimeStandalone.java:163) at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.<init>(HeidelTimeStandalone.java:128) at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.<init>(HeidelTimeStandalone.java:112) at com.hrl.issl.osi.date.LocalHeidelTime.main(LocalHeidelTime.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297) at java.lang.Thread.run(Thread.java:662) Jul 3, 2013 2:02:41 PM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone initialize WARNING: JCas factory could not be initialized 
+1
java nlp uima
source share
1 answer

He speaks on the HeidelTime page

HeidelTime is available as a UIMA annotator and as a standalone version.

There is a separate version in which I mavenized here . You should be able to hack de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.java main according to your needs.

+2
source share

All Articles