4

有没有办法在 WORDLIST 中使用正则表达式?我需要实现与https://issues.apache.org/jira/browse/UIMA-3382中提到的相同。

或者有没有其他方法可以解决它?

编辑:WORDLIST 被定义为文本项的列表。如果我有一个想要标记为相同类型的正则表达式列表怎么办。有没有办法做到这一点?

例如 - 我想在文档中查找日期,但日期有多种格式,因此正则表达式是涵盖所有可能情况的更简洁的方法。所以我试图使用下面的语法,但唯一的匹配是那些没有特殊正则表达式语法的单词的情况。

DECLARE Date;
WORDLIST DateFormatList='DateFormat.regex';
Document{-> MARKFAST(Date, DateFormat, true,1)};

我可以在规则中进行哪些更改,以便将 DateFormatList 中的项目视为正则表达式?

谢谢

4

1 回答 1

1

近期将不支持词表中的正则表达式,如果没有志愿者实现的话。问题是单词列表使用 trie 而不是 FST 进行查找过程,这使得所需的功能难以实现。

在一些罕见的情况下,例如,对于可选序列,可以使用单词表模拟所需的功能。

如果您想检测日期,我建议您使用 UIMA Ruta 中的常规规则。组合和利用东西更容易。常见的例子是一个非常简单的规则:

ANY{INLIST(MonthsList) -> MARK(Month), MARK(Date,1,3)} 
PERIOD? NUM{REGEXP(".{2,4}") -> MARK(Year)};

如果您想坚持使用正则表达式,那么您可以使用简单的正则表达式规则列表:

"regexp1" -> Date;
"regexp2" -> Date;
"regexp3" -> Date;

这些规则还支持特征分配和捕获组。您想要使用的功能的区别在于语法(几个规则而不是简单的列表)和性能(正则表达式按顺序应用)。

(我是 UIMA Ruta 的开发者)

于 2014-07-03T07:29:16.640 回答