我们无法从XMI文件中检索数据。以下摘录说明了我们要做的事情的一个例子:
<uima:Token xmi:id="28" sofa="1" begin="3" end="6" pos="v-fin" features="PR=1S=IND" lexeme="sou">
<lemma>ser</lemma>
</uima:Token>
我们知道如何获取第一行中包含的信息,例如id,begin,sofa等(这些是属性),可以使用以下代码检索:
IMPORT opennlp.uima.Token FROM TypeSystem AS cgToken;
// ...
cgToken{REGEXP(cgToken.lexeme, "sou", true) -> DO_SOME_ACTION};
// do some action if the lexeme is "sou"
但是,正如我们所说,我们想要知道如何获取前面示例中的子标记(字符串“ser”),即子标记。
显然,我们尝试了cgToken{REGEXP(cgToken.lemma, "ser", true) -> DO_SOME_ACTION};
,因为引理不是cgToken的属性,所以它不起作用。此外,单个cgToken中可能有多个引理。
TypeSystem定义此功能如下:
<featureDescription>
<name>lemma</name>
<description>lemma</description>
<rangeTypeName>uima.cas.StringArray</rangeTypeName>
</featureDescription>
但是,Ruta documentation没有解释如何访问数组字段。