如何在Gate中创建JAPE文法规则

How to create JAPE grammar rules in Gate

我正在学习使用 Gate 从文档中检索信息。有人能准确地向我解释我必须做什么才能让我的 JAPE 语法规则起作用吗?我已经检查了大多数教程和 Gate 手册,但我仍然不明白这一点。我想提取人、地点和日期作为我的命名实体。

所以我所做的是: 1. 确定我在文件中的日期模式 2.为每个模式创建JAPE语法规则 3. 将 .jape 文件加载到 gate 作为新的 jape 转换器

我的约会模式如下: 1.日期月年 2.月年

因此,如果我理解正确,我将不得不为这些模式中的每一个定义 JAPE 语法规则。这就是我想要做的。我在 .jape 文件中定义了我的规则,但它会加载到 gate 中,它给我一个无法创建资源的错误,.jape 文件如下:

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

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

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

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

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

////////Rule number 1
Rule: ddmmyyyy
priority:50
(
    (
    (DAY_ONEDIGIT|DAY_TWODIGIT)
    ({Token.kind==punctuation}|{SpaceToken})?
    )
    (
    (MONTH)
    ({Token.kind==punctuation}|{SpaceToken})?
    (YEAR)
    )
)  
:ddmmyyyy
-->  
 :ddmmyyyy.DateMonthYear= {rule = "ddmmyyyy"} 

//Rule number 2 
Rule: mmyyyy
priority: 50
(    
    (MONTH)
    ({Token})?
    ({SpaceToken})?
    (YEAR)  
)  
:mmyyyy
-->  
 :mmyyyy.MonthYear= {rule = "mmyyyy"}

我不确定是否需要新的不同注释模式列表(例如 DateMonth)。有人可以告诉我我应该拥有什么,并为此做到 运行。我在这里查看了 gate 手册和其他问题,但我找不到任何关于如何设置整个框架的完整教程。

错误信息是:

gate.creole.ResourceInstantiationException: gate.jape.parser.ParseException: Cannot parse a phase in file:/your_jape_file_path.jape: Encountered " "=" "= "" at line 12, column 19.
Was expecting:
    <attrOp> ...

    at gate.jape.plus.Transducer.init(Transducer.java:642)

看到你的 jape 文件 line 12, column 19 处的拼写错误:({Lookup.MajorType="Month"}),你需要加倍等号:({Lookup.MajorType=="Month"}).

更正后,另见留言:

Rule ddmmyyyy contains unlisted annotation type Toke

第 6 行还有一个错字:({Toke.kind == number,...。应该是 ({Token.kind == number,....