我正在学习使用Gate从文档中检索信息。有人可以向我确切说明如何使我的JAPE语法规则起作用。我已经检查了大多数教程和Gate手册,但我仍然不明白这一点。我想提取人,位置和日期作为我的命名实体。

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

我的约会模式如下:
1. DateMonthYear
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"})处的错字,您需要将等号()符号加倍。

更正后,请参阅另一条消息:

Rule ddmmyyyy contains unlisted annotation type Toke


第6行还有另一个错别字:({Lookup.MajorType=="Month"})。它应该是({Toke.kind == number,...

关于java - 如何在Gate中创建JAPE语法规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45120694/

10-11 01:23