2

我正在尝试编写自己的规则,在我的 java 代码中注释作者(来自作者,jape)我已经初始化了我的新处理资源。代码运行正常但没有注释 ma text:输入:谁是 xyz 输出的作者:它应该被注释为作者和 shd 将书名保存在一些临时变量中。我的Java代码:

    Gate.init();
Gate.getCreoleRegister().registerDirectories(
           new File(Gate.getPluginsHome(), "ANNIE").toURI().toURL());
SerialAnalyserController pipeline =
          (SerialAnalyserController)gate.Factory.createResource(
             "gate.creole.SerialAnalyserController");
LanguageAnalyser tokeniser = (LanguageAnalyser)gate.Factory.createResource(
             "gate.creole.tokeniser.DefaultTokeniser");
LanguageAnalyser jape = (LanguageAnalyser)gate.Factory.createResource(
          "gate.creole.Transducer", gate.Utils.featureMap(
              "grammarURL", new File("E:\\GATE_Developer_7.1\\plugins\\ANNIE\\resources\\NE\\Author.jape").toURI().toURL(),
              "encoding", "UTF-8"));
pipeline.add(tokeniser);
pipeline.add(jape);
Corpus corpus = gate.Factory.newCorpus(null);
Document doc = gate.Factory.newDocument("Who is author of Inception");
DocumentContent dc=doc.getContent();        
corpus.add(doc);
pipeline.setCorpus(corpus);
pipeline.execute();
System.out.println("Found annotations of the following types: " +
          doc.getAnnotations().getAllTypes());

在输出中它只给出令牌,空间令牌任何人都可以帮助我解决这个问题。?

4

2 回答 2

1

问题在于您的 JAPE 语法,而不是 Java 代码。您的 Java 代码适用于以下 JAPE 语法:

Phase: Test1 Input: Token Options: control = appelt Rule: testRule ( {Token.kind == "word"} {Token.kind == "word"}):annotate --> :annotate.TwoWords = { string = :annotate.Token.string }

输出是:

Found annotations of the following types: [SpaceToken, TwoWords, Token]

如果你能提供你的 JAPE 语法,我会更多地谈论你的问题。

或者,您可以在 GATE Developer 中使用您的 JAPE 语法,直到它开始匹配您想要的。在此之后,您的 Java 程序将正常工作。

于 2014-03-10T13:10:57.013 回答
1

在这里,您为 Annotations 指定的名称,您可以使用它。所以,你可以使用这个方法。

doc.getAnnotations().get("Name of the annotations which you want to get");
于 2016-08-05T05:55:10.087 回答