【问题标题】:Can we grouping Annotations in GATE我们可以在 GATE 中对注释进行分组吗
【发布时间】:2014-01-06 14:51:41
【问题描述】:

我们如何在两个注解之间对所有注解进行分组?

我是 GATE 的新手,正在尝试将注释组合在一起,不确定我们是否可以这样做,请帮忙。 例如在以下文本中:

Page-1
Age:53 
Person: Nathan

Page-2
Treatment : Initial Evaluation
History: Yes

Page-3
..........

如果我的地名词典列表包含不同的标签,每个页码的页面标签,年龄,人,治疗,历史等。我想将所有标签从第 1 页到第 2 页分组在第 1 页注释和所有标签下在 Page-2 下的 Page-2 和 Page-3 之间。

如果需要有关此问题的更多信息,请告诉我。

提前致谢。

【问题讨论】:

    标签: java text-mining gate


    【解决方案1】:

    我不完全确定您所说的“组合在一起”是什么意思,但您当然可以创建跨越每个“页面”内容的注释。假设您在每个“Page-1”、“Page-2”等上都有一个 PageNumber 注释,那么您可以使用类似这样的东西来创建从一个 PageNumber 到下一个的注释。我正在使用control = once JAPE 来执行此操作,您可以等效地使用 Groovy 脚本或自定义 PR

    Imports: { import static gate.Utils.*; }
    Phase: PageSpans
    Input: PageNumber
    Options: control = once
    
    Rule: PageSpan
    ({PageNumber})
    -->
    {
      try {
        List<Annotation> numbers = inDocumentOrder(inputAS.get("PageNumber"));
        for(int i = 0; i < numbers.size(); i++) {
          outputAS.add(start(numbers.get(i)), // from start of this PageNumber, to...
                       (i+1 < numbers.size()
                         ? start(numbers.get(i+1)) // start of the next number, or...
                         : end(doc) // ...if no more PageNumbers then end of document
                       ),
                       "Page",
                       // store the text under the PageNumber as a feature of Page
                       featureMap("id", stringFor(doc, numbers.get(i))));
        }
      } catch(InvalidOffsetException e) {
        throw new JapeException("Invalid offset from existing annotation", e);
      }
    }
    

    在您的评论中,您询问将每个“页面”下的所有注释移动到单独的注释集中。完成上述操作后,这将相对简单,并且如果您将页码作为 Page 注释上的功能,就像我对“id​​”功能所做的那样。然后你可以定义另一个 JAPE 来做这样的事情:

    Imports: { import static gate.Utils.*; }
    Phase: SetPerPage
    Input: Age X Y // and whatever other annotation types you want to copy
    Options: control = all
    
    Rule: MoveToPageSet
    ({Age}|{X}|{Y}):entity
    -->
    :entity {
      try {
        for(Annotation e : entityAnnots) {
          // find the (only) Page annotation that covers this entity
          Annotation thePage = getOnlyAnn(getCoveringAnnotations(inputAS, e, "Page"));
          // get the corresponding annotation set
          AnnotationSet pageSet = doc.getAnnotations(
                  (String)thePage.getFeatures().get("id"));
          // and copy the annotation into it
          pageSet.add(start(e), end(e), e.getType(), e.getFeatures());
        }
      } catch(InvalidOffsetException e) {
        throw new JapeException("Invalid offset from existing annotation", e);
      }
      // optionally remove from input set
      // inputAS.removeAll(entityAnnots);
    }
    

    【讨论】:

    • 谢谢你,伊恩,你一直都是很大的帮助。让我给你更多关于我正在尝试做的事情的细节。我正在使用以下文本 'PAGE-1 医生/提供者提供的姓名和年龄专业 医生/提供者提供服务的 TIN 号。第 2 页 颈部旋转 X 光检查 下腿 X 光检查 手指 X 光检查 急诊部就诊 第 3 页需求账单年龄 第 4 页 ----- 我想创建单独的注释集名称为 PAGE-1、PAGE-2 等,并在每个集合中包含所有注释。例如 Age 应该在 Annotation Set Page-1 和 Page-3 中
    • @user2752734 我假设您已经有一种方法来创建您感兴趣的注释(听起来它应该是地名词典和您喜欢的那种基本 JAPE 规则的简单组合)可以在gate.ac.uk/wiki 的教程材料中找到),但我添加了一个示例,说明如何将它们移动到每页动态命名的注释集中。
    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 2017-09-10
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多