0

我使用 gradle 配置了 heidelTime。我正在获取值,但无法迭代字符串结果。

result = heidelTime.process(sentence, new Date());
JCas cas = JCasFactory.createJCas();
FSIterator it = cas.getAnnotationIndex(Timex3.type).iterator(); // Here I am getting error

错误是由于JCasImpl.class->TOP_Type getType(int i)

if (this.casImpl.getTypeSystem().getType(typeName) == null) {
            // no - report error that JCAS type was not defined in XML
            // descriptor
            CASRuntimeException casEx = new CASRuntimeException(
                CASRuntimeException.JCAS_TYPE_NOT_IN_CAS, new String[] { typeName });
            throw casEx;
          }

我检查了 github 项目,我看到 HeidelTime_TypeSystem.xml 文件在那里定义类型 System。

摇篮配置

compile group: 'com.github.heideltime', name: 'heideltime', version: '2.2.1'
compile group: 'org.apache.uima', name: 'uimaj-core', version: '2.3.1'

堆栈跟踪

org.apache.uima.cas.CASRuntimeException: JCas type de.unihd.dbs.uima.types.heideltime.Timex3" used in Java code,  but was not declared in the XML type descriptor.
            at org.apache.uima.jcas.impl.JCasImpl.getType(JCasImpl.java:412) ~[uimaj-core-2.3.1.jar:2.3.1]
            at org.apache.uima.jcas.impl.JCasImpl.getCasType(JCasImpl.java:436) ~[uimaj-core-2.3.1.jar:2.3.1]
            at org.apache.uima.jcas.impl.JCasImpl.getAnnotationIndex(JCasImpl.java:1531) ~[uimaj-core-2.3.1.jar:2.3.1]

我是否需要手动添加任何文件才能使其正常工作?

types.txt 文件位置

在此处输入图像描述

4

1 回答 1

0

当使用 UIMA 类型的 JCas 类而没有为此类型配置 CAS 时,会发生这种情况。

呼吁

JCas cas = JCasFactory.createJCas();

扫描类路径以查找在其types.txt下调用的文件META-INF/org.apache.uima.fit/(因此一个名为的文件夹带META-INF有一个名为的子文件夹org.apache.uima.fit,然后包含该types.txt文件)并加载其中引用的所有 UIMA 类型描述符。示例types.txt文件如下所示:

classpath*:org/apache/uima/fit/type/Token.xml

这告诉 uimaFIT 加载Token.xml位于包中的类型描述符文件org.apache.uima.fit.type(替换为您自己的包和文件名)。

请注意,如果您使用 Maven,这些所有这些文件和文件夹通常必须位于src/main/resources(而不是src/main/java)下。根据您设置 Gradle 的方式,这也可能适用于您。

uimaFIT 的类型自动检测也在uimaFIT 文档中有更详细的描述。

因此,对于您的特定情况:尝试使用 contentdesc/type/HeidelTime_TypeSystem.xml放入src/main/resources/desc/type/HeidelTime_TypeSystem.xml并创建src/main/resources/META-INF/org.apache.uima.fit/types.txt文件classpath*:desc/type/HeidelTime_TypeSystem.xml

注意:在撰写本文时,我是 Apache uimaFIT 的维护者。

于 2019-05-17T07:38:21.723 回答