2013-06-24 1 views
1

Я хочу использовать https://code.google.com/p/heideltime/ в проекте java. Этот код «вписывается в конвейер UIMA», чего я совсем не понимаю. UIMA выглядит так, что она предназначена для решения множества проблем, которых у меня нет, поэтому я просто хотел бы получить минимальное количество UIMA, необходимое для запуска этого кода.Нужно ли переписывать весь проект java, если я хочу использовать одну библиотеку, зависящую от UIMA?

Есть ли простой пример того, как я могу запустить простую программу UIMA?

Я добавил

<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> 

моей pom.xml, но по какой-то причине мавена еще не компилировать это:

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

ли UIMA зависимостями как-то более существенное чем типичная java-библиотека? Недостаточно ли просто вытащить UIMA из Maven Central и начать использовать свои классы в моем существующем коде?

нормально, я как-то получил этот пример работает (я понятия не имею, что это такое, и я до сих пор путают, почему он не работал раньше) Я до сих пор не в состоянии использовать 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()); 
     } 

    } 
} 

редактировать Сейчас пытается:

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); 

Получение:

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

> По какой-то причине maven до сих пор не скомпилирует это: Как насчет журнала ошибок? – cljk

+0

Правильно, это сейчас. – dranxo

+0

Нет импорта для TypeSystemDescription - это класс в том же пакете? – cljk

ответ

2

Это говорит о HeidelTime's homepage

HeidelTime доступен как UIMA комментатора, и как автономная версия.

Существует отдельная версия, которую я сделал mavenized here. Вы должны быть в состоянии взломать de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.java, чтобы он соответствовал вашим потребностям.

+0

Возможно, мне придется попробовать еще одну попытку. Моя проблема в том, что я пытаюсь получить это в задаче mapreduce, и код, отличный от Java, делает это для меня очень трудным. «Автономная» версия Heideltime требует некоторых вещей, которые я еще не понял. – dranxo

+0

Также упоминается, что вы не использовали автономную версию? У вас есть пример? Я могу получить некоторые базовые вещи UIMA, но Heideltime не является заслон, и я все еще не могу понять, написано ли это на Java. – dranxo

+0

См. Выше, например. – Renaud

 Смежные вопросы

  • Нет связанных вопросов^_^