Skip to content

Sección XIII – Xerando unha oración con múltiples cláusulas

andrea.cascallar edited this page Jul 11, 2018 · 1 revision

Frases unidas por unha conxunción

Unha forma de xerar unha oración con múltiples cláusulas é empregar a clase CoordinatedPhraseElement.

    SPhraseSpec s1 = nlgFactory.createClause("o meu gato", "quere", "peixe");
    SPhraseSpec s2 = nlgFactory.createClause("o meu can", "quere", "ósos grandes");
    SPhraseSpec s3 = nlgFactory.createClause("o meu cabalo", "quere", "herba");

    CoordinatedPhraseElement c = nlgFactory.createCoordinatedPhrase();
    c.addCoordinate(s1);
    c.addCoordinate(s2);
    c.addCoordinate(s3);

A continuación, o obxecto CoordinatedPhraseElement c pode realizarse como unha oración:

    String output = realiser.realiseSentence(c);
    System.out.println(output);

Se non se proporciona unha conxunción empregando o método setConjunction, a conxunción 'e' utilizarase automaticamente por ser o valor predeterminado. Neste caso, a oración resultante sería:

    O meu gato quere peixe, o meu can quere ósos grandes e o meu cabalo quere herba.

Oracións subordinadas

As oracións subordinadas pódense agregar á oración principal empregando o método addComplement, onde se establece o tipo de complemento ("porque", "mentres", etc.) que se utiliza mediante o método setFeature.

    SPhraseSpec p = nlgFactory.createClause("eu", "estar", "feliz");
    SPhraseSpec q = nlgFactory.createClause(null, "comer", "peixe");
    
    q.setFeature(Feature.COMPLEMENTISER, "porque");
    q.setFeature(Feature.TENSE, Tense.PAST);
    p.addComplement(q);
            
    String output4 = realiser.realiseSentence(p); 
    System.out.println(output4);

A saída é:

    Eu estou feliz porque comín peixe.