首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIMA Ruta -基本示例

UIMA Ruta -基本示例
EN

Stack Overflow用户
提问于 2016-11-19 12:07:46
回答 1查看 1.8K关注 0票数 1

我正在尝试uima的例子:这里

我想要创建ruta脚本并将它应用到我的文本中(来自普通的java,没有任何工作台)。

1.如何从普通java (没有工作台)获取类型系统描述符?(如果我“运行”ruta脚本,就不会有任何描述。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-20 14:00:03

主要问题是脚本是否声明新类型。

如果没有声明新类型,那么文档中的链接示例就足够了。

如果在脚本中声明了新类型,那么在脚本可以应用于CAS之前,需要创建一个类型系统描述并将其包含在CAS的创建过程中。

可以通过以下方式创建脚本的类型系统描述,其中包含脚本中声明的类型的类型说明:

  • 在保存脚本时,Ruta会自动为简单的Ruta中的每个脚本创建类型系统描述。如果没有创建描述,那么脚本很可能是不可解析的,并且包含语法错误。
  • 在maven构建的项目中,可以使用plugin来创建Ruta脚本的类型系统描述。
  • 在普通Java中,可以使用RutaDescriptorFactory以编程方式创建类型系统描述。这是一个代码示例

有几种方法可以在普通java代码中创建和执行基于ruta的分析引擎。下面是一个不使用其他文件的示例:

代码语言:javascript
复制
String rutaScript = "DECLARE MyType; CW{-> MyType};";

RutaDescriptorFactory descriptorFactory = new RutaDescriptorFactory();
RutaBuildOptions options = new RutaBuildOptions();
options.setResolveImports(true);
options.setImportByName(true);
RutaDescriptorInformation descriptorInformation = descriptorFactory
        .parseDescriptorInformation(rutaScript, options);
// replace null values for build environment if necessary (e.g., location in classpath)
Pair<AnalysisEngineDescription, TypeSystemDescription> descriptions = descriptorFactory
        .createDescriptions(null, null, descriptorInformation, options, null, null, null);

AnalysisEngineDescription rutaAnalysisEngineDescription = descriptions.getKey();
rutaAnalysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings().setParameterValue(RutaEngine.PARAM_RULES, rutaScript);
TypeSystemDescription rutaTypeSystemDescription = descriptions.getValue();
// directly set type system description since no file will be created
rutaAnalysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(rutaTypeSystemDescription);

ResourceManager resourceManager = UIMAFramework.newDefaultResourceManager();
AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(rutaAnalysisEngineDescription);

List<TypeSystemDescription> typeSystemDescriptions = new ArrayList<>();
TypeSystemDescription scannedTypeSystemDescription = TypeSystemDescriptionFactory.createTypeSystemDescription();
typeSystemDescriptions.add(scannedTypeSystemDescription);
typeSystemDescriptions.add(rutaTypeSystemDescription);
TypeSystemDescription mergeTypeSystemDescription = CasCreationUtils.mergeTypeSystems(typeSystemDescriptions, resourceManager);

JCas jCas = JCasFactory.createJCas(mergeTypeSystemDescription);
CAS cas = jCas.getCas();
jCas.setDocumentText("This is my document.");
ae.process(jCas);

Collection<AnnotationFS> select = CasUtil.select(cas, cas.getTypeSystem().getType("Anonymous.MyType"));
for (AnnotationFS each : select) {
  System.out.println(each.getCoveredText());
}

免责声明:我是UIMA Ruta的开发人员

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

https://stackoverflow.com/questions/40692682

复制
相关文章

相似问题

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