如何在Gate

时间:2017-07-15 17:00:26

标签: java gate

我正在学习使用Gate从文档中检索信息。有人可以向我解释一下我必须做些什么来让我的JAPE语法规则起作用。我已经检查了大多数教程和Gate手册,但我仍然没有明白这一点。我想提取人,位置和日期作为我的命名实体。

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

我的约会模式如下: 1. DateMonthYear 2. MonthYear

因此,如果我理解正确,我将不得不为每个模式定义JAPE语法规则。这就是我想要做的。我已经在.jape文件中定义了我的规则,但是它不会加载到门中,它会给我一个错误,即无法创建资源,.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)。有人可以告诉我我应该拥有什么,并为了让它运行。我在这里检查了门手册和其他问题,但是我找不到任何能够提供关于如何设置整个框架的完整教程的内容。

1 个答案:

答案 0 :(得分:0)

错误消息是:

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,...