首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果要使用一个依赖于UIMA的库,是否需要重写整个java项目?

如果要使用一个依赖于UIMA的库,是否需要重写整个java项目?
EN

Stack Overflow用户
提问于 2013-06-24 19:31:00
回答 1查看 1.3K关注 0票数 1

我想在java项目中使用https://code.google.com/p/heideltime/。该代码“符合UIMA管道”,这一点我完全不明白。UIMA看起来好像是为了解决很多我没有的问题而设计的,所以我只想得到运行该代码所需的最小数量的UIMA。

有没有一个简单的例子说明我如何运行一个简单的UIMA程序?

我增加了

代码语言:javascript
复制
    <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>

但出于某种原因,maven仍然不会编译以下内容:

代码语言:javascript
复制
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

UIMA依赖关系是否比典型的java库更重要?仅仅从Maven Central中提取UIMA并开始在我现有的代码中使用它们的类还不够吗?

好的,我以某种方式让这个例子起了作用(我不知道它是什么,并且仍然不明白为什么它以前不起作用),我仍然不能使用heideltime:

代码语言:javascript
复制
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());
        }   

    }
}

编辑现在尝试:

代码语言:javascript
复制
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);

得到:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-06-24 21:07:01

上面写着HeidelTime主页

HeidelTime可以作为UIMA注解器和独立版本使用。

有一个独立的版本,我已经把这里混在一起了。您应该能够破解de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.java的主程序,以满足您的需要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17283557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档