有没有办法在WORDLIST中使用正则表达式? 我需要实现与https://issues.apache.org/jira/browse/UIMA-3382中提到的相同。
或者有其他方法可以解决吗?
编辑: WORDLIST被定义为文本项列表。如果我有一个正则表达式列表,我想将其标记为相同类型,该怎么办?有办法吗?
例如 - 我想在文件中找到日期, 但是日期有多种格式,因此正则表达式是一种更简洁的方式来涵盖所有可能的情况。 所以我试图使用下面的语法,但唯一的匹配是那些没有特殊正则表达式语法的单个单词的情况。
DECLARE Date;
WORDLIST DateFormatList='DateFormat.regex';
Document{-> MARKFAST(Date, DateFormat, true,1)};
我可以在规则中更改哪些内容,以便将DateFormatList中的项目视为正则表达式?
由于
答案 0 :(得分:0)
如果没有志愿者实施,将在不久的将来不支持单词表中的正则表达式。问题是单词列表使用trie而不是FST进行查找过程,这使得所需的功能不能直接实现。
在某些罕见的情况下,可以使用单词列表模拟所需的功能,例如,对于可选序列。
如果你想检测日期,我会建议使用UIMA Ruta中的常规规则。组合和利用东西更容易。常见的例子是一个非常简单的规则:
ANY{INLIST(MonthsList) -> MARK(Month), MARK(Date,1,3)}
PERIOD? NUM{REGEXP(".{2,4}") -> MARK(Year)};
如果您想坚持正则表达式,那么您可以使用simple regexp rules列表:
"regexp1" -> Date;
"regexp2" -> Date;
"regexp3" -> Date;
这些规则还支持功能分配和捕获组。您要使用的功能的不同之处在于语法(多个规则而不是简单列表)和性能(正则表达式按顺序应用)。
(我是UIMA Ruta的开发人员)