java - 从 CPE 描述符获取 UIMA 类型系统

标签 java uima

我如何从 CPE 描述符 XML 文件获取(或计算)UIMA 类型系统?我查看了用于在 Java 中加载 CPE 描述符的类,但没有看到任何可以让我获得类型系统的内容。

我知道 CAS 有一个 getTypeSystem() 函数,但我需要在运行 CPE 管道之前(即在我拥有 CAS 对象之前)获取类型系统。

最佳答案

最终弄清楚了如何做到这一点......但这并不漂亮!下面的代码适用于遇到类似情况的其他人。

CpeDescription cpeDesc = UIMAFramework.getXMLParser().parseCpeDescription(new XMLInputSource(cpeFile));
File rootFolder = new File(cpeDesc.getSourceUrl().getFile()).getParentFile();
ArrayList<TypeSystemDescription> typeSystems = new ArrayList<>();

for(CpeCollectionReader collReader : cpeDesc.getAllCollectionCollectionReaders()){
    File descFile = new File(rootFolder + System.getProperty("file.separator") + collReader.getDescriptor().getImport().getLocation());

    CollectionReaderDescription crd = UIMAFramework.getXMLParser().parseCollectionReaderDescription(new XMLInputSource(descFile));

    TypeSystemDescription typeSystem = crd.getCollectionReaderMetaData().getTypeSystem();
    typeSystem.resolveImports();

    typeSystems.add(typeSystem);
}

for(CpeCasProcessor casProcessor : cpeDesc.getCpeCasProcessors().getAllCpeCasProcessors()){
    File descFile = new File(rootFolder + System.getProperty("file.separator") + casProcessor.getCpeComponentDescriptor().getImport().getLocation());

    AnalysisEngineDescription aed = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(new XMLInputSource(descFile));

    TypeSystemDescription typeSystem = aed.getAnalysisEngineMetaData().getTypeSystem();
    typeSystem.resolveImports();

    typeSystems.add(typeSystem);
}

TypeSystemDescription mergedTypeSystem = CasCreationUtils.mergeTypeSystems(typeSystems);

请注意,这仅考虑导入,而不考虑 CPE 描述符中的包含。

关于java - 从 CPE 描述符获取 UIMA 类型系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564932/

相关文章:

java - 编程工具栏

java - PriorityQueue 未在添加时排序

java - Resltlet 将资源映射到包含 queryparam 的 URL

java - JDK 1.6 的钻石语法替代品

java - Amazon SES 使用来自 S3ObjectInputStream 对象的 java 读取存储在 s3 存储桶中的电子邮件

nlp - Ruta 中的字符串连接

java - 在 Eclipse 上使用 UIMA Framework 创建注释器

eclipse - UIMA 中的名称实体关系

gpu - 运行 Ruta 脚本时 CPU 使用率过高

java - C++ 中的自然语言处理