GATE:JAPE规则javarhs特征映射

GATE:JAPE规则javarhs特征映射,java,nlp,grammar,gate,Java,Nlp,Grammar,Gate,我试图在一个句子注释中获得现有注释及其特征,即对于每个句子,可能有多个注释,它们具有一个,即majorType、string和type特征 我想要一个新的“句子包含”注释,带有包含注释及其各自特征的特征图 我认为这应该是优秀的盖特日语语法教程pdf中以下规则的延伸: Phase:usingJAVAinRHS Input: Lookup Options: control = all Rule: javainRHS1 ( {Lookup.majorType == Team}

我试图在一个句子注释中获得现有注释及其特征,即对于每个句子,可能有多个注释,它们具有一个,即majorType、string和type特征

我想要一个新的“句子包含”注释,带有包含注释及其各自特征的特征图

我认为这应该是优秀的盖特日语语法教程pdf中以下规则的延伸:

Phase:usingJAVAinRHS  
Input:  Lookup  
Options: control = all  
Rule: javainRHS1  
(  
{Lookup.majorType == Team}  
)  
:team  
-->  
{  
gate.AnnotationSet team = (gate.AnnotationSet)bindings.get("team");       
gate.Annotation teamAnn = (gate.Annotation)team.iterator().next();   
gate.FeatureMap features = Factory.newFeatureMap(); 
features.put("teamOfSport", teamAnn.getFeatures().get("minorType"));  
features.put("rule","javainRHS1");  
outputAS.add(team.firstNode(), team.lastNode(), "Team",features); }
除了在我的新规则中,我希望对句子进行注释,然后获得包含的注释:

Phase:usingJAVAinRHS  
Input:  Lookup Sentence  
Options: control = all  
Rule: javainRHS1  
(  
{Sentence contains {Lookup.majorType == Team}}  
)  
:team  
-->  
{  
gate.AnnotationSet team = (gate.AnnotationSet)bindings.get("team");   
gate.Annotation teamAnn = (gate.Annotation)team.iterator().next();   
gate.FeatureMap features = Factory.newFeatureMap(); 
features.put("teamOfSport",   teamAnn.getFeatures().get("minorType"));  
features.put("rule","javainRHS1");  
outputAS.add(team.firstNode(), team.lastNode(), "Team",features); }  
如何获得包含注释的特征图


非常感谢

您可以使用foreach获取包含在句子中的所有注释,并根据它们的主要类型或种类存储在特征图中

Imports: {
import static gate.Utils.*;
}
Phase:usingJAVAinRHS  
Input:  Lookup Sentence  
Options: control = appelt
Rule: javainRHS1  
(  
{Sentence contains {Lookup.majorType == Team}}  
)  
:team  
-->  
{  
    gate.AnnotationSet team = (gate.AnnotationSet)bindings.get("team"); 
    gate.FeatureMap features = Factory.newFeatureMap(); 
    for(Annotation annotation:team.inDocumentOrder())  
    {
        if(annotation.getType() == "Lookup"){
            features.put(annotation.getFeatures().get("majorType"),stringFor(doc,annotation));
        }
        else{
            features.put(annotation.getType(), stringFor(doc,annotation));
        }
    }
    features.put("rule","javainRHS1");  
    outputAS.add(team.firstNode(), team.lastNode(), "Team",features); 
}  

您可以使用foreach获取句子中包含的所有注释,并根据它们的主要类型或种类存储在特征图中

Imports: {
import static gate.Utils.*;
}
Phase:usingJAVAinRHS  
Input:  Lookup Sentence  
Options: control = appelt
Rule: javainRHS1  
(  
{Sentence contains {Lookup.majorType == Team}}  
)  
:team  
-->  
{  
    gate.AnnotationSet team = (gate.AnnotationSet)bindings.get("team"); 
    gate.FeatureMap features = Factory.newFeatureMap(); 
    for(Annotation annotation:team.inDocumentOrder())  
    {
        if(annotation.getType() == "Lookup"){
            features.put(annotation.getFeatures().get("majorType"),stringFor(doc,annotation));
        }
        else{
            features.put(annotation.getType(), stringFor(doc,annotation));
        }
    }
    features.put("rule","javainRHS1");  
    outputAS.add(team.firstNode(), team.lastNode(), "Team",features); 
}  

谢谢你。我添加了你的建议,它不会抛出错误,只会将句子注释、句子字符串和规则名称作为特征。它不会输出“Team”注释的主要类型。还有什么我需要改变的吗?我找不到你。。。你能告诉我吗?谢谢你。我添加了你的建议,它不会抛出错误,只会将句子注释、句子字符串和规则名称作为特征。它不会输出“Team”注释的主要类型。还有什么我需要改变的吗?我找不到你。。。你能告诉我吗?