当前位置: 首页 > 知识库问答 >
问题:

如何从UIMA和简单的NLP任务开始?

车思淼
2023-03-14

我设法获得了一个已经配置好的最小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>
Token
   sofa: _InitialView
   begin: 426
   end: 435
   pos: "NNP"
List<Feature> feats = it.next().getType().getFeatures();

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

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

共有1个答案

柯昱
2023-03-14

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

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

您可以在DKPro核心页面上找到一些快速启动的Groovy脚本和一组UIMA组件。

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

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

 类似资料:
  • UIMA和StanfordNLP在流水线操作之后生成输出,比如如果我们想做词性标记,那么在输入文本中首先进行标记化,然后进行词性标记。 我想使用UIMA的标记化,并在Stanford CoreNLP的POS标记器中使用该标记。但是Stanford CoreNLP的POS标记器需要在POS标记器之前运行标记器。 那么,是否可以在同一管道中使用不同的API?是否可以同时使用UIMA标记器和Stanfo

  • 我的工作是计划使用一个UIMA集群来运行文档,以提取命名实体等等。据我所知,UIMA附带的NLP组件非常少。我已经测试GATE有一段时间了,我对它相当满意。它在普通文本中没有问题,但当我们通过一些有代表性的测试数据运行它时,精确度会下降。我们内部拥有的文本数据有时全是大写,有时全是小写,或者是同一文档中两者的混合。即使使用ANNIE的all caps规则,其准确性仍有许多有待提高的地方。我最近听说

  • 本文向大家介绍一个简单的Android定时任务,包括了一个简单的Android定时任务的使用技巧和注意事项,需要的朋友参考一下 使用AlarmManager来实现定时提醒,它提供了一种访问系统闹钟服务的方式。在全局中,达到设定的时间, 在它上面注册的一个Intent将会被广播,接着启动相应的应用程序,可以通过自定义Receiver来实现。 首先要在AndroidManifest.xml中进行注册

  • 所以我想 是否可以在Cloud Foundry上部署一个应用程序,并像在linux控制台上一样启动这个jar。

  • 问题内容: REST的每一篇教程或解释都太复杂太过复杂-在对CRUD进行了初步解释并假定通过SOAP简化之后,学习曲线就变得如此之快。人们为什么不能再写像样的教程了! 我正在查看Restlet- 它不是最好的,本教程中缺少某些内容,语言/语法有点混乱和不清楚。我花了几个小时才解开他们的“第一步”教程(在另一个Java程序员的帮助下!) RESTlet教程注释 总体而言,我不确定该教程的目标读者是谁