【发布时间】:2017-01-30 21:08:30
【问题描述】:
我是 Ruta 的初学者,我现在想要掌握的想法是如何在 UIMA 环境中(在纯 Java 中)处理类变量/集合。我尝试按照documentation 中给出的示例进行操作;但是 Ruta 规则可以作为脚本文件在外部应用,也可以使用 Ruta.apply(cas, rule) 在“现场”应用。例如,这些选项都不允许我使用文件词典或任何预定义的 java 集合。你能给我一些提示/解决我的问题吗?
一般来说,我使用 UIMA AE 来解析句子,然后使用在 Ruta 脚本中创建的注释根据句法结构匹配特定类型的句子。因此,我编写的 Ruta 规则相当简单,但由于 POSTtags 集而显得笨重。所以我想在 Ruta 内部获得一些灵活性。如果对此主题也有任何建议,我将不胜感激。
编辑:例如,我有一个规则考虑由 AE(斯坦福解析器)创建的一组 POSTag。因此,为了匹配所需的句子结构,我将按以下方式对其进行硬编码(我意识到这是最幼稚的方式):
String rutaSampleRule = "BLOCK(ForEach) Sentence{}{Document{-> Asyndeton} "
+ "<- {((Constituent.label==\"NN\" COMMA Constituent.label==\"NN\") |"
+ " (Constituent.label==\"NNP\" COMMA Constituent.label==\"NNP\") |"
+ " (Constituent.label==\"NNPS\" COMMA Constituent.label==\"NNPS\") |"
+ " (Constituent.label==\"NNS\" COMMA Constituent.label==\"NNS\"));};}";
Ruta.apply(cas, rutaSampleRule);
现在,我想要的是声明一个此类 POSTtags 的集合(即 NNS、NN),在 Ruta 中对其进行迭代并匹配相应的句子结构(此处为连续名词)。这将使我的规则更加灵活和实用。
第二种选择是使用词典而不是集合,但我认为它们只能在 Ruta 中单独使用(与 MARKFAST 一起)(不是纯 Java);至少我找不到任何例子。
所以,总结一下我的问题:在简单的 Ruta 脚本(不引入任何新类型)中,是否有可能(以及如何)在纯 Java 中使用外部定义的集合/词典?
我希望,我设法以更好的方式解释它。提前致谢。
编辑 1: 我通过在指南中使用路径和 example 来了解如何在纯 Java 中使用词典。不过,我想知道如何使用配置参数将值分配给变量?
【问题讨论】:
-
我不完全明白你想做什么以及限制是什么。文件词典可以包含在例如 WORDTABLE/MARKFAST 中。你想用 ruta 中的预定义 java 集合做什么?您要么需要将信息存储在特征结构中,要么使用配置参数将值分配给变量。您能否详细说明您的问题,例如,举例说明?
-
我重新提出了我的问题;希望现在很清楚。谢谢。