我想注释文本的第一个标记,并在以下规则中使用该注释。我尝试了不同的模式:
Token.begin == 0(虽然肯定有一个从0开始的令牌,但是无效)
令牌{STARTSWITH(DocumentMetaData)}; (也不起作用)
唯一有效的模式是:
文档{-> MARKFIRST(First)};
但是如果我尝试使用该注释,例如通过以下方式:
第一{-> MARK(FirstAgain)};
它不再起作用。这对我来说绝对没有意义。注释从0开始似乎真的很奇怪。
答案 0 :(得分:0)
这项琐碎的任务确实有些棘手,主要是因为可见性设置。我不知道为什么您在问题中的规则如果不看待处理的文本就无法使用。
对于UIMA Ruta 2.7.0,我更喜欢这样的规则:
# Token{->First};
还有其他关于问题规则的想法:
Token.begin == 0;
通常,因为文档以某些空格或换行符开头,所以没有以0开头的标记。如果实际上有一个从偏移量0开始的令牌并且该规则不匹配,则不可见的内容将覆盖令牌的末尾。当然,这取决于过滤设置,但是如果您没有更改它们,则可能是不正确的。
Token{STARTSWITH(DocumentMetaData)};
在这里,以上问题适用,或者开始偏移量不相同。如果DocumentMetaData涵盖了完整的文档,那么我敢打赌领先的空格。另一个原因可能是内部索引被破坏,例如,令牌或DocumentMetaData是由外部分析引擎创建的,该引擎使用EXEC
进行了调用,并且未在操作中配置任何重新索引。使用config参数进行不幸的优化也会出现这种情况。
Document{->MARKFIRST(First)};
First{->MARK(FirstAgain)};
MARKFIRST使用匹配上下文IIRC中第一个RutaBasic的偏移量创建注释。如果文档以不可见的内容(例如换行符)开头,则第二个规则将不匹配。
作为这样的一般建议,当某些明显的简单规则无法按预期正常工作时,我建议添加一些其他规则,并在解释视图中使用调试配置。像Token;
这样的规则可以直接突出显示对于给定令牌而言可见性设置是否有问题。
免责声明:我是UIMA Ruta的开发人员