我已经开始学习GATE应用程序了,我想用它从非结构化文档中提取信息。我感兴趣的信息包括日期,地点,活动信息和人名。我想获得有关特定日期特定位置发生的事件和人名的信息。我一直在阅读GATE手册,这就是我如何了解如何构建管道。但是,我没有弄清楚如何创建我的新注释类型并确保它们被注释到一个新的注释集,该注释集应该出现在右侧的注释集下面。我发现类似的问题,如GATE - How to create a new annotation SET?,但它也没有帮助我。
让我解释一下到目前为止我做了什么:
我在文档中确定了我的模式,例如日期格式,如ddmm,dd.mm.yyyy
我在单独的.jape文件中为每个模式编写了JAPE规则
这就是我的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时,新的设置不会像其他设置一样出现。这是它的外观:
答案 0 :(得分:0)
如上所述,您提到的问题(GATE - How to create a new annotation SET?)中链接或引用,您有两种选择:
JAPE传感器(类似于许多其他GATE PR)只需要一些输入注释,并基于它们创建一些新的输出注释。可以通过inputASName
和outputASName
运行时参数配置输入和输出注释集名称。 inputASName
说明应该在哪里查找输入注释,outputASName
说明应该将输出注释放在哪里。
输入注释集必须在执行JAPE传感器PR之前包含必要的输入注释。这些注释通常由管道中的前面的PR创建。否则它将不会看到必要的输入注释,也不会产生任何结果。
输出注释集可能为空,也可能在JAPE执行之前包含任何内容。没关系。导入的事情是,当JAPE传感器PR执行完成时,会在那里创建新的输出注释(在您的情况下为DateMonthYearDash
)。
因此,在成功执行JAPE 之后,您应该会看到新的注释。
请注意,注释集具有名称。
当注释具有类型时, id ,抵消,功能和注释集。
我在你的JAPE语法中发现了一些问题:
SpaceToken
,除非您在语法中明确使用它们,或者您确定模式中没有这些内容...另请参阅:Concept of Space Token in JAPE ({Lookup.majorType=="Month"})
- > ({Lookup.minorType=="month"})
(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语法。通常会丢失一些预期的输入注释,或者有一些您不希望存在的额外注释。为此目的,GATE有一个很好的观点:annotation stack。此外,输入注释的某些功能可能与您预期的名称或值不同(例如,什么是正确的:{Lookup.majorType=="Month"}
或{Lookup.minorType=="month"}
?)。
通过“调试”JAPE语法我的意思是:尝试简化规则,只要它开始工作。继续在一个简单的文档上尝试它,它应该匹配肯定。因此,在您的情况下,您可以在没有(DAY_ONE)
部分的情况下进行尝试。如果它仍然不起作用,请仅尝试(MONTH)({Token.string == "-"})(YEAR)
,甚至仅(MONTH)
等。直到您在语法中发现错误...