gpt4 book ai didi

java - 无法使用通过 Ruta DECLARE 声明的变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:03 26 4
gpt4 key购买 nike

我正在尝试编写一些 Ruta 规则来捕获事物之间的“is-a”关系。我有一个 Relation 类,其中包含实体 1 和实体 2 属性,它们指向关系中涉及的两个事物。

我的理解是,我必须使用已声明的注释“捕获”这两个元素,以便稍后将它们设置为关系注释的属性。

所以我的规则是这样的:

 DECLARE Token Thing1;
DECLARE Token Thing2;

但不知何故,当我尝试将 token 标记为 Thing1 或 Thing2 时,Ruta 告诉我它无法访问该类型。

这是一个说明问题的测试

@Test
public void test__Ruta__BUG__DeclareNotWorking() throws UIMAException, IOException, URISyntaxException {
final class RulesRunner {
public void applyRules(JCas cas, String[] rules) throws AnalysisEngineProcessException, InvalidXMLException, ResourceInitializationException, ResourceConfigurationException, IOException, URISyntaxException {
for (String aRule: rules) {
Ruta.apply(cas.getCas(), aRule);
}
}
}

RulesRunner runner = new RulesRunner();

JCas cas = JCasFactory.createJCas();
cas.setDocumentText("A cat is a kind of mammal.");

// Tokenize the string
String[] rules = new String[] {
"ANY{REGEXP(\"[a-zA-Z0-9]+\") -> Token};",
"ANY{REGEXP(\"[^ a-zA-Z0-9]+\") -> Token};"
};
runner.applyRules(cas, rules);

// Capture the "is-a" relation between 'cat' and 'mammal' and 'car' and 'vehicle'
rules = new String[] {
"DECLARE Token Thing1; \n" +
"DECLARE Token Thing2; \n" +
// This results in: 'not able to resolve type: Thing1'
"Token{ -> MARK(Thing1)} " +
"Token{REGEXP(\"is\") -> RutaNevermind} " +
"Token{REGEXP(\"a\") -> RutaNevermind} " +
"Token{REGEXP(\"kind\") -> RutaNevermind} " +
"Token{REGEXP(\"of\") -> RutaNevermind} " +
"Token{ -> MARK(Relation, 1, 6)} " +
";"
};
runner.applyRules(cas, rules);

for (Relation aRelation: JCasUtil.select(cas, Relation.class)) {
System.out.println("Got Relation="+aRelation.getCoveredText());
}
}

请注意,我还尝试使用以下声明:

DECLARE Thing1;
DECLARE Thing2;

DECLARE Thing1 Token;
DECLARE Thing2 Token;

DECLARE Token thing1; // Obviously, changed the MARK statement accordingly
DECLARE Token thing2;

最佳答案

尚未找到使空操作起作用的方法,但我确实找到了解决方法。基本上,我有一个注释类 RutaNull,每当我需要使用空操作时,我都会使用 MARK(RutaNull)。但如果有人知道如何使空操作发挥作用,我仍然很想听听。

关于java - 无法使用通过 Ruta DECLARE 声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43265485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com