使用UIMA,Standford Core NLP

Ksh*_*tij 2 nlp tokenize stanford-nlp uima opennlp

UIMA和StanfordNLP在操作流程之后产生输出,如果我们想要进行POS标记,那么在输入文本中首先进行标记化,然后进行POS标记.

我想使用UIMA的标记化,并在Standford CoreNLP的POS标记器中使用该标记.但是Standford CoreNLP的POS标签需要在POS标记之前运行标记器.

那么,是否可以在同一管道中使用不同的API?是否可以将UIMA tokenizer和Standford CoreNLP一起使用?

请帮忙.

rec*_*rec 5

在UIMA中组合来自不同工具链(例如OpenNLP,Stanford CoreNLP等)的分析步骤的典型方法是将它们中的每一个包装为UIMA分析引擎.分析引擎充当UIMA数据结构(CAS)之间的适配器,并且使用的数据结构是各个工具(例如OpenNLP POS标记器或CoreNLP解析器).在UIMA层面,这些组件可以组合成管道.

UIMA组件有各种包装这样的工具链,例如ClearTK,DKPro CoreU-Compare.

以下示例组合了OpenNLP分段器(标记器/句子分割器)和Stanford CoreNLP解析器(在本示例中也创建了POS标签).该示例实现为Groovy脚本,该脚本使用uimaFIT API从DKPro Core集合的组件创建和运行管道.

#!/usr/bin/env groovy
@Grab(group='de.tudarmstadt.ukp.dkpro.core', 
      module='de.tudarmstadt.ukp.dkpro.core.opennlp-asl', 
      version='1.5.0')
@Grab(group='de.tudarmstadt.ukp.dkpro.core', 
      module='de.tudarmstadt.ukp.dkpro.core.stanfordnlp-gpl', 
      version='1.5.0')

import static org.apache.uima.fit.pipeline.SimplePipeline.*;
import static org.apache.uima.fit.util.JCasUtil.*;
import static org.apache.uima.fit.factory.AnalysisEngineFactory.*;
import org.apache.uima.fit.factory.JCasFactory;

import de.tudarmstadt.ukp.dkpro.core.opennlp.*;
import de.tudarmstadt.ukp.dkpro.core.stanfordnlp.*;
import de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.*;
import de.tudarmstadt.ukp.dkpro.core.api.syntax.type.*;

def jcas = JCasFactory.createJCas();
jcas.documentText = "This is a test";
jcas.documentLanguage = "en";

runPipeline(jcas,
  createEngineDescription(OpenNlpSegmenter),
  createEngineDescription(StanfordParser,
    StanfordParser.PARAM_WRITE_PENN_TREE, true));

select(jcas, Token).each { println "${it.coveredText} ${it.pos.posValue}" }

select(jcas, PennTree).each { println it.pennTree }
Run Code Online (Sandbox Code Playgroud)

它的输出(在大量日志记录输出之后)应该如下所示:

This DT
is VBZ
a DT
test NN
(ROOT
  (S
    (NP (DT This))
    (VP (VBZ is)
      (NP (DT a) (NN test)))))
Run Code Online (Sandbox Code Playgroud)

我以Groovy脚本为例,因为它开箱即用.Java程序看起来非常相似,但通常会使用例如Maven或Ivy来获取所需的库.

如果您想尝试脚本并需要有关安装Groovy和潜在故障排除的更多信息,可以在此处找到更多信息.

披露:我正在开发DKPro Core和Apache UIMA uimaFIT项目.