我最近发现了有关UIMA的信息(http://uima.apache.org/)。对于简单的NLP任务,例如令牌化,句子分裂,词性词性标签等看起来很有希望。

我已经设法将自己的最小Java样品用于使用OpenNLP组件进行管道。

代码看起来像这样:

public void ApplyPipeline() throws IOException, InvalidXMLException,
        ResourceInitializationException, AnalysisEngineProcessException {

    XMLInputSource in = new XMLInputSource(
            "opennlp/OpenNlpTextAnalyzer.xml");
    ResourceSpecifier specifier = UIMAFramework.getXMLParser()
            .parseResourceSpecifier(in);

    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);

    JCas jcas = ae.newJCas();
    jcas.setDocumentText("This is my text.");

    ae.process(jcas);
    this.doSomethingWithResults(jcas);

    jcas.reset();
    ae.destroy();
}

private void doSomethingWithResults(JCas jcas) {
    AnnotationIndex<Annotation> idx = jcas.getAnnotationIndex();
    FSIterator<Annotation> it = idx.iterator();

    while (it.hasNext()) {
        System.out.println(it.next().toString());
    }

}

摘录摘自Opennlptextanalyzer.xml:

<delegateAnalysisEngine key="SentenceDetector">
    <import location="SentenceDetector.xml" />
</delegateAnalysisEngine>
<delegateAnalysisEngine key="Tokenizer">
    <import location="Tokenizer.xml" />
</delegateAnalysisEngine>

Java代码产生这样的输出:

Token
   sofa: _InitialView
   begin: 426
   end: 435
   pos: "NNP"

我正在尝试从每个注释对象中获取相同的信息,该对象()方法使用。我已经研究了UIMA的源代码,以了解值的来源。我试图检索他们的作品,但它们并不聪明。

我正在努力寻找简单的示例,从JCAS对象中提取信息。

我正在寻找一种方法,例如,我的Postagger或句子Plitter产生了所有注释以进一步使用。

我猜

List<Feature> feats = it.next().getType().getFeatures();

是开始获得值的开始,但是由于UIMA拥有原始类型的类,甚至注释类中的ToString方法的源代码也像面部的巴掌一样。

我在哪里可以找到使用基本UIMA东西的Java代码,在哪里有好的教程(框架本身的Javadoc除外)?

有帮助吗?

解决方案

为您的注释类型生成JCAS包装类别(您可以使用UIMA随附的Eclipse的类型系统编辑器UIMA插件来执行此操作)。这将为您提供可用于访问注释的Java类 - 这些提供了功能的Getters和Setters。

你应该看看 Uimafit, ,它提供了更方便的API,包括便利方法从JCAS检索注释,例如Select(JCAS,Token.Class)(其中Token.Class是您使用类型系统编辑器生成的类)。

您可以找到一些快速启动 令人愉悦的脚本 以及一系列UIMA组件 DKPRO核心 页。

UIMA@GSCL 2013教程(幻灯片和示例代码)中有材料可能对您有用。去 这里 然后向下滚动到“教程”。

披露:我是UIMA,UIMAFIT,DKPRO CORE和联合组织者的开发人员,UIMA@GSCL 2013研讨会。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top