在 GATE 中创建新的注释集

Creating new annotation sets in GATE

我已经开始学习 GATE 应用程序,我想用它从非结构化文档中提取信息。我感兴趣的信息是日期、地点、事件信息和人名。我想获取有关特定日期特定位置发生的事件的信息以及 person/s 名称。我一直在阅读 GATE 手册,这就是我如何了解如何构建管道的方式。但是,我不知道如何创建我的新注释类型并确保它们被注释到一个新的注释集,该注释集应该出现在右侧的注释集下。我发现了类似 的问题,但它也没有帮助我。

让我解释一下到目前为止我做了什么:

  1. 为我的新 NE 创建了 .lst 文件并将它们放在 ANNIE resources/gazetteer 目录下
  2. 我在 list.def 文件中添加了 .lst 文件描述
  3. 我在文档中确定了我的模式,例如像 ddmm 这样的日期格式,dd.mm.yyyy

  4. 我在单独的 .jape 文件中为每个模式编写了 JAPE 规则

  5. 将 JAPE 文件名添加到 main.jape 文件中
  6. 将 PR 和我的文档加载到 GATE
  7. 运行 申请

对于一种日期格式,我的 JAPE 规则是这样的:

    Phase: datesearching
    Input: Token Lookup SpaceToken
    Options: control = appelt

    ////////////////////////////////////Macros
    //Initialization of regular expressions
    Macro: DAY_ONE
    ({Token.kind == number,Token.category==CD, Token.length == "1"})

    Macro: C
    ({Token.kind == number,Token.category==CD, Token.length == "2"})

    Macro: YEAR
    ({Token.kind == number,Token.category==CD, Token.length == "4"})

    Macro: MONTH
    ({Lookup.majorType=="Month"})

    Rule: ddmmyyydash
    (
        (DAY_ONE|DAY_TWO)
        ({Token.string == ","}|{Token.string == "."} |{Token.string == "-"})
        (MONTH)
        ({Token.string == ","}|{Token.string == "."} |{Token.string == "-"})
        (YEAR)
    )
    :ddmmyyyydash
    -->
        :ddmmyyyydash.DateMonthYearDash= {rule = "ddmmyyyydash"}

有人可以帮我做些什么来确保 DateMonthYearDash 被创建为一个新的注释集吗?我该怎么做?非常感谢。

当我更改 Jape Transducer 的 outputAsName 时,新设置与其他设置不同。这是它的样子:

如您提到的问题 () 所述、链接或引用,您有两个选择:

  1. 更改 JAPE 转换器 PR 的 outputASName
  2. 使用 Annotation Set Transfer PR 将所需的注释从一个注释集复制或移动到另一个注释集。

JAPE 函数 - 说明

JAPE transducer(与许多其他 GATE PR 类似)仅获取一些输入注释,并基于它们创建一些新的输出注释。输入输出注解集names可以通过inputASNameoutputASName运行-时间参数配置。 inputASName 表示应该在哪里查找输入注释,outputASName 表示应该在哪里放置输出注释。

什么应该在哪里

输入注释集必须包含必要的输入注释,然后才能执行 JAPE 换能器 PR。这些注释通常由管道中的前面的 PR 创建。否则它不会看到必要的输入注释,也不会产生任何东西。

输出注释集可能为空,也可能包含 JAPE 执行前的任何内容。没关系。重要的是,当 JAPE 转换器 PR 执行完成时,会在那里创建新的输出注释(DateMonthYearDash 在你的例子中)。
所以在成功执行 JAPE 之后你应该会在那里看到新的注释

一些术语

请注意,注释集名称
注释typeidoffsetsfeatures注释集他们属于。


日文修正

我在你的 JAPE 语法中发现了一些问题:

  1. 不要包含 SpaceToken,除非您在语法中明确使用它们,或者您确定模式中会有 none...另请参阅:Concept of Space Token in JAPE
  2. ({Lookup.majorType=="Month"}) -> ({Lookup.minorType=="month"})
  3. (DAY_ONE|DAY_TWO) -> (DAY_ONE)

更正后 + 文档 9 - January - 2017 的 ANNIE 管道后:

更正后的 JAPE 语法:

Phase: datesearching
    Input: Token Lookup
    Options: control = appelt

    Macro: DAY_ONE
    ({Token.kind == number,Token.category==CD, Token.length == "1"})

    Macro: YEAR
    ({Token.kind == number,Token.category==CD, Token.length == "4"})

    Macro: MONTH
    ({Lookup.minorType=="month"})

    Rule: ddmmyyydash
    (
        (DAY_ONE)
        ({Token.string == ","}|{Token.string == "."} |{Token.string == "-"})
        (MONTH)
        ({Token.string == ","}|{Token.string == "."} |{Token.string == "-"})
        (YEAR)
    )
    :ddmmyyyydash
    -->
        :ddmmyyyydash.DateMonthYearDash= {rule = "ddmmyyyydash"}

JAPE什么都不产生怎么办

您必须调查输入注释并“调试”您的 JAPE 语法。通常缺少一些预期的输入注释,或者有一些您没有预料到的额外注释。为此,GATE 中有一个不错的视图:annotation stack。此外,输入注释的某些特征可能具有与您预期不同的名称或值(例如,正确的是:{Lookup.majorType=="Month"}{Lookup.minorType=="month"}?)。

“调试”JAPE 语法的意思是:尽量简化规则,使其开始工作。继续在一个简单的文档上尝试它应该匹配的地方。因此,在您的情况下,您可以在没有 (DAY_ONE) 部分的情况下尝试。如果还是不行,就只试(MONTH)({Token.string == "-"})(YEAR),甚至只试(MONTH),等等。直到你发现语法错误...