在GATE

时间:2017-07-22 04:29:00

标签: java annotations nlp gate

我已经开始学习GATE应用程序了,我想用它从非结构化文档中提取信息。我感兴趣的信息包括日期,地点,活动信息和人名。我想获得有关特定日期特定位置发生的事件和人名的信息。我一直在阅读GATE手册,这就是我如何了解如何构建管道。但是,我没有弄清楚如何创建我的新注释类型并确保它们被注释到一个新的注释集,该注释集应该出现在右侧的注释集下面。我发现类似的问题,如GATE - How to create a new annotation SET?,但它也没有帮助我。

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

  1. 为我的新网元创建了.lst文件,并将它们放在ANNIE资源/地名词典目录下
  2. 我在list.def文件中添加了.lst文件说明
  3. 我在文档中确定了我的模式,例如日期格式,如ddmm,dd.mm.yyyy

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

  5. 将JAPE文件名添加到main.jape文件
  6. 将PR和我的文档加载到GATE
  7. 运行应用程序
  8. 这就是我的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传感器的outputAsName时,新的设置不会像其他设置一样出现。这是它的外观:

    annotation set list

1 个答案:

答案 0 :(得分:0)

如上所述,您提到的问题(GATE - How to create a new annotation SET?)中链接或引用,您有两种选择:

  1. 更改 JAPE传感器的 outputASName PR。
  2. 使用注释设置转移PR 将所需注释从一个注释集复制或移动到另一个注释集。
  3. JAPE功能 - 说明

    JAPE传感器(类似于许多其他GATE PR)只需要一些输入注释,并基于它们创建一些新的输出注释。可以通过inputASNameoutputASName运行时参数配置输入和输出注释集名称inputASName说明应该在哪里查找输入注释,outputASName说明应该将输出注释放在哪里。

    应该在哪里

    输入注释集必须在执行JAPE传感器PR之前包含必要的输入注释。这些注释通常由管道中的前面的PR创建。否则它将不会看到必要的输入注释,也不会产生任何结果。

    输出注释集可能为空,也可能在JAPE执行之前包含任何内容。没关系。导入的事情是,当JAPE传感器PR执行完成时,会在那里创建新的输出注释(在您的情况下为DateMonthYearDash)。
    因此,在成功执行JAPE 之后,您应该会看到新的注释

    一些术语

    请注意,注释集具有名称
    注释具有类型时, id 抵消功能注释集

    JAPE更正

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

    1. 请不要包含SpaceToken,除非您在语法中明确使用它们,或者您确定模式中没有这些内容...另请参阅:Concept of Space Token in JAPE
    2. ({Lookup.majorType=="Month"}) - > ({Lookup.minorType=="month"})
    3. (DAY_ONE|DAY_TWO) - > (DAY_ONE)
    4. 在文件9 - January - 2017的ANNIE管道之后的更正+之后: GATE doc output

      更正后的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)等。直到您在语法中发现错误...