【问题标题】:Gate- setting text for annotation注释的门设置文本
【发布时间】:2016-08-11 13:22:59
【问题描述】:

我正在尝试为 Gate 中的特定注释设置内容。有一些方法可以为文档中的给定注释提取内容/文本。我想更改给定注释显示的文本,这意味着最终它应该更改文档的实际文本。 Gate 是否可以更改注释的内容?

gate.Utils.stringFor(document, annotation) 或 contentFor 方法给出由给定注释突出显示的文本。找不到任何可以设置内容的方法。

DocumentContent documentContent = new DocumentContentImpl(value);
        Long start = getAnnotation(annotation).getStartNode().getOffset();
        Long end = getAnnotation(annotation).getEndNode().getOffset();
        doc.edit(start, end, documentContent);

我想编辑文档的内容。我已经尝试了上述方法,我还在文档中添加了 documentListener。控制进入 contentEdited 方法,但文档的实际内容不会被新内容替换。相反,文件根本不会受到影响。有人可以建议我为此做什么还是我在这里做错了什么?

【问题讨论】:

    标签: annotations gate


    【解决方案1】:

    Document 接口对此有一个方法,其机制在DocumentImpl 中有描述。

    但是,您确定确实需要更新文档内容吗?这就是注释的意义——把你需要的任何东西作为注释放在文本本身的顶部。然后只需使用注释功能而不是文档内容。例如,如果您获得 Token 字符串,您可以重建文本,如果您使用 Token stems,您将获得一个词干版本。只需使用 Token.newstring 而不是更改内容。

    此外,这是一个繁琐的操作,因为它必须移动所有的注释偏移量。

    【讨论】:

    • 谢谢@Yasen。我已经使用了 DocumentImpl 本身。但是该编辑功能对实际文档没有任何作用。我需要更新文档,还想通过代码添加新的注释。这就是我必须更新特定注释的字符串内容并将一些内容添加到文档然后对其进行注释的用例。真的有可能吗?如何提供偏移量以添加特定注释?
    • Edit 方法在 xml 文档中进行更改。我只需要在 xml 文件中再次写入内容。但正如@Yasen 所说。这是一个繁琐的操作。它不能正常工作。当我从特定的开始和结束偏移量更改内容时,它会删除这些偏移量之间的所有节点并在其间添加文本,这会导致错误的文档并且没有给出预期的结果。
    【解决方案2】:

    终于找到了解决办法。我需要使用以下方法来编写 xml

    File f = new File("/path/to/output.xml");
    DocumentStaxUtils.writeDocument(doc, f)
    

    这会在编辑文档后给出正确的 xml 输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      相关资源
      最近更新 更多