GATE: JAPE rule Карта функций Java RHS - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь получить существующие аннотации и их функции в аннотации предложения, т. Е. Для каждого предложения может быть несколько аннотаций, которые имеют свойства MajorType, string и type.

Я хочу новую аннотацию «Предложение содержит» с картой объектов содержащихся аннотаций и их соответствующих функций.

Я полагаю, что это должно быть расширением нижеследующего правила из превосходного учебника по грамматике Gate Jape 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); }  

Как получить карту объектов из аннотаций?

Большое спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете использовать foreach, чтобы получить все аннотации, содержащиеся в предложении, и сохранить их в карте объектов на основе их MajorType или вида.

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); 
}  
...