如何在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,...
.
我正在学习使用 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,...
.