GATE 如何注释除列表中的每个动词
GATE how to annotate each verb except those in the list
我有这个任务:我在 GATE 中有包含动词列表的 .lst 文件。有注释 Inner_predicates。我需要将其他动词注释为Outer_predicates。你能帮我写这条规则吗?
我试过这个:
Phase: Outer_Pred
Input: Morph Inner_Pred
Options: control = appelt
Rule: Outer_Pred
(
({Morph.pos == verb}, Morph.baseForm !=Inner_Pred)
):tag
-->
:tag.Outer_Pred = {rule = "Outer_Pred"}
但是没有用。我怎样才能找到一个动词,检查它是否已经有注释 Inner_Pred,如果没有,将这个动词注释为 Outer_Pred?
在 inner_pred.lst 中,我有基本形式的动词列表。
提前致谢。如果你能告诉我在哪里可以自己查看这些信息,那就太好了。我只找到 GATE Jape Manual,但它很短,没有提供很多答案。
您可以在 RHS 中使用 Java 编写一个简单的 JAPE 规则,它将:
a) 取任何动词(Token.category==VB | Token.category==VBD | 等等)。您可以在 GATE tao.pdf
末尾找到可能的动词 POS 标签列表
b) 获取此 Token 的开始和停止节点并检查覆盖当前 Token
的 Inner_Pred 注释
c) 如果为 Inner_Pred 返回的 AnnotationSet 为空,则创建一个新的 Annotation Outer_Verb,其边界来自 b)
如果您有基本形式的动词列表,您应该尝试 flexible gazetteer。它将在匹配的地方创建 "Lookup" 个注释(不仅在动词上)。
然后匹配不在列表中的每个动词:
Phase: Outer_Pred
Input: Morph Lookup
Options: control = appelt
Rule: Outer_Pred (
{Morph.pos == "verb", !Lookup.majorType == "yourInnerPredType"}
):tag
-->
:tag.Outer_Pred = {rule = "Outer_Pred"}
这将匹配每个 "verb" 与主要类型 "yourInnerPredType".
的查找不在相同偏移量处开始的每个 "verb"
此外,请确保您的 Morph 注释具有正确的位置特征。
这是JAPE规则的源代码:
Phase: Verb
Input: Token
Options: control = appelt
Macro:VERB
(
({Token.category==VBD}|{Token.category==VBG}|{Token.category==VBN}|{Token.category==VBP}|{Token.category==VB}|{Token.category==VBZ})
)
Rule:Verb
(
(VERB)
):verb
-->
{
AnnotationSet set = (AnnotationSet) bindings.get("verb");
Node startNode = set.firstNode();
Node stopNode = set.lastNode();
AnnotationSet innerAnnotations = outputAS.get(startNode.getOffset(), stopNode.getOffset()).get("Inner_Pred");
if (innerAnnotations == null || innerAnnotations.isEmpty()) {
outputAS.add(startNode, stopNode, "Outer_Pred", Factory.newFeatureMap());
}
}
我有这个任务:我在 GATE 中有包含动词列表的 .lst 文件。有注释 Inner_predicates。我需要将其他动词注释为Outer_predicates。你能帮我写这条规则吗?
我试过这个:
Phase: Outer_Pred
Input: Morph Inner_Pred
Options: control = appelt
Rule: Outer_Pred
(
({Morph.pos == verb}, Morph.baseForm !=Inner_Pred)
):tag
-->
:tag.Outer_Pred = {rule = "Outer_Pred"}
但是没有用。我怎样才能找到一个动词,检查它是否已经有注释 Inner_Pred,如果没有,将这个动词注释为 Outer_Pred? 在 inner_pred.lst 中,我有基本形式的动词列表。
提前致谢。如果你能告诉我在哪里可以自己查看这些信息,那就太好了。我只找到 GATE Jape Manual,但它很短,没有提供很多答案。
您可以在 RHS 中使用 Java 编写一个简单的 JAPE 规则,它将:
a) 取任何动词(Token.category==VB | Token.category==VBD | 等等)。您可以在 GATE tao.pdf
末尾找到可能的动词 POS 标签列表b) 获取此 Token 的开始和停止节点并检查覆盖当前 Token
的 Inner_Pred 注释c) 如果为 Inner_Pred 返回的 AnnotationSet 为空,则创建一个新的 Annotation Outer_Verb,其边界来自 b)
如果您有基本形式的动词列表,您应该尝试 flexible gazetteer。它将在匹配的地方创建 "Lookup" 个注释(不仅在动词上)。
然后匹配不在列表中的每个动词:
Phase: Outer_Pred
Input: Morph Lookup
Options: control = appelt
Rule: Outer_Pred (
{Morph.pos == "verb", !Lookup.majorType == "yourInnerPredType"}
):tag
-->
:tag.Outer_Pred = {rule = "Outer_Pred"}
这将匹配每个 "verb" 与主要类型 "yourInnerPredType".
的查找不在相同偏移量处开始的每个 "verb"此外,请确保您的 Morph 注释具有正确的位置特征。
这是JAPE规则的源代码:
Phase: Verb
Input: Token
Options: control = appelt
Macro:VERB
(
({Token.category==VBD}|{Token.category==VBG}|{Token.category==VBN}|{Token.category==VBP}|{Token.category==VB}|{Token.category==VBZ})
)
Rule:Verb
(
(VERB)
):verb
-->
{
AnnotationSet set = (AnnotationSet) bindings.get("verb");
Node startNode = set.firstNode();
Node stopNode = set.lastNode();
AnnotationSet innerAnnotations = outputAS.get(startNode.getOffset(), stopNode.getOffset()).get("Inner_Pred");
if (innerAnnotations == null || innerAnnotations.isEmpty()) {
outputAS.add(startNode, stopNode, "Outer_Pred", Factory.newFeatureMap());
}
}