【问题标题】:How start with UIMA and simple NLP tasks?如何从 UIMA 和简单的 NLP 任务开始?
【发布时间】:2013-11-07 15:58:06
【问题描述】:

我最近发现了 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"

我试图从 toString() 方法使用的每个 Annotation 对象中获取相同的信息。我已经查看了 UIMA 的源代码以了解这些值的来源。我试图检索它们的工作,但它们无论如何都不聪明。

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

我正在寻找一种方法来获取例如由我的 PosTagger 或 SentenceSplitter 生成的所有注释以供进一步使用。

我猜

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

是一个取值的开始,但是由于UIMA拥有原始类型的类,即使是注解类中toString方法的源代码读起来也像一记耳光。

我在哪里可以找到使用基本 UIMA 内容的 java 代码,哪里有好的教程(框架本身的 javadoc 除外)?

【问题讨论】:

    标签: java nlp uima


    【解决方案1】:

    为您的注释类型生成 JCas 包装类(您可以使用 UIMA 附带的用于 Eclipse 的类型系统编辑器 UIMA 插件来执行此操作)。这将为您提供可用于访问注释的 Java 类 - 这些为特性提供 getter 和 setter。

    你应该看看uimaFIT,它提供了一个更方便的 API,包括从 JCas 中检索注释的便捷方法,例如select(jcas, Token.class)(其中 Token.class 是您使用类型系统编辑器生成的类之一)。

    您可以在DKPro Core 页面上找到一些快速入门的Groovy scripts 和一组 UIMA 组件。

    UIMA@GSCL 2013 教程(幻灯片和示例代码)中的材料可能对您有用。转到here 并向下滚动到“教程”。

    披露:我是 UIMA、uimaFIT、DKPro Core 的开发人员,也是 UIMA@GSCL 2013 研讨会的联合组织者。

    【讨论】:

    • Ruta 教程的幻灯片现已发布here
    • 我修复了 Google Doc 中幻灯片的链接。这些例子也在某个地方吗?
    猜你喜欢
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2011-09-01
    • 2011-07-17
    相关资源
    最近更新 更多