Package simplenlg.test.syntax

Source Code of simplenlg.test.syntax.FPTest

/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is "Simplenlg".
*
* The Initial Developer of the Original Code is Ehud Reiter, Albert Gatt and Dave Westwater.
* Portions created by Ehud Reiter, Albert Gatt and Dave Westwater are Copyright (C) 2010-11 The University of Aberdeen. All Rights Reserved.
*
* Contributor(s): Ehud Reiter, Albert Gatt, Dave Wewstwater, Roman Kutlak, Margaret Mitchell.
*/
package simplenlg.test.syntax;

import junit.framework.Assert;

import org.junit.Test;

import simplenlg.features.Feature;
import simplenlg.features.Tense;
import simplenlg.framework.CoordinatedPhraseElement;
import simplenlg.framework.DocumentElement;
import simplenlg.framework.LexicalCategory;
import simplenlg.framework.NLGElement;
import simplenlg.framework.NLGFactory;
import simplenlg.framework.PhraseElement;
import simplenlg.phrasespec.SPhraseSpec;

/**
* Test added to break the realiser
*
* @author portet
*/

public class FPTest extends SimpleNLG4Test {
 
 
  NLGFactory docFactory = new NLGFactory(this.lexicon);
 
  /**
   * Instantiates a new text spec test.
   *
   * @param name
   *            the name
   */
  public FPTest(String name) {
    super(name);
  }

  /**
   * Basic tests.
   */
  @Test
  public void testHerLover() {
    this.phraseFactory.setLexicon(this.lexicon);
    this.realiser.setLexicon(this.lexicon);
   
    // Create the pronoun 'she'
    NLGElement she = phraseFactory.createWord("she",LexicalCategory.PRONOUN);

    // Set possessive on the pronoun to make it 'her'
    she.setFeature(Feature.POSSESSIVE, true);

    // Create a noun phrase with the subject lover and the determiner
    // as she
    PhraseElement herLover = phraseFactory.createNounPhrase(she,"lover");

    // Create a clause to say 'he be her lover'
    PhraseElement clause = phraseFactory.createClause("he", "be", herLover);

    // Add the cue phrase need the comma as orthography
    // currently doesn't handle this.
    // This could be expanded to be a noun phrase with determiner
    // 'two' and noun 'week', set to plural and with a premodifier of
    // 'after'
    clause.setFeature(Feature.CUE_PHRASE, "after two weeks,");

    // Add the 'for a fortnight' as a post modifier. Alternatively
    // this could be added as a prepositional phrase 'for' with a
    // complement of a noun phrase ('a' 'fortnight')
    clause.addPostModifier("for a fortnight");

    // Set 'be' to 'was' as past tense
    clause.setFeature(Feature.TENSE,Tense.PAST);

    // Add the clause to a sentence.
    DocumentElement sentence1 = docFactory.createSentence(clause);

    // Realise the sentence
    NLGElement realised = this.realiser.realise(sentence1);

    // Retrieve the realisation and dump it to the console
//    System.out.println(realised.getRealisation());    
    Assert.assertEquals("After two weeks, he was her lover for a fortnight.",
        realised.getRealisation());
  }

  /**
   * Basic tests.
   */
  @Test
  public void testHerLovers() {
    this.phraseFactory.setLexicon(this.lexicon);

    // Create the pronoun 'she'
    NLGElement she = phraseFactory.createWord("she",LexicalCategory.PRONOUN);

    // Set possessive on the pronoun to make it 'her'
    she.setFeature(Feature.POSSESSIVE, true);

    // Create a noun phrase with the subject lover and the determiner
    // as she
    PhraseElement herLover = phraseFactory.createNounPhrase(she,"lover");
    herLover.setPlural(true);

    // Create the pronoun 'he'
    NLGElement he = phraseFactory.createNounPhrase(LexicalCategory.PRONOUN,"he");
    he.setPlural(true);

    // Create a clause to say 'they be her lovers'
    PhraseElement clause = phraseFactory.createClause(he, "be", herLover);
    clause.setFeature(Feature.POSSESSIVE, true);

    // Add the cue phrase need the comma as orthography
    // currently doesn't handle this.
    // This could be expanded to be a noun phrase with determiner
    // 'two' and noun 'week', set to plural and with a premodifier of
    // 'after'
    clause.setFeature(Feature.CUE_PHRASE, "after two weeks,");

    // Add the 'for a fortnight' as a post modifier. Alternatively
    // this could be added as a prepositional phrase 'for' with a
    // complement of a noun phrase ('a' 'fortnight')
    clause.addPostModifier("for a fortnight");

    // Set 'be' to 'was' as past tense
    clause.setFeature(Feature.TENSE,Tense.PAST);
   
    // Add the clause to a sentence.
    DocumentElement sentence1 = docFactory.createSentence(clause);

    // Realise the sentence
    NLGElement realised = this.realiser.realise(sentence1);

    // Retrieve the realisation and dump it to the console
//    System.out.println(realised.getRealisation());

    Assert.assertEquals("After two weeks, they were her lovers for a fortnight.", //$NON-NLS-1$
        realised.getRealisation());
  }

  /**
   * combine two S's using cue phrase and gerund.
   */
  @Test
  public void testDavesHouse() {
    this.phraseFactory.setLexicon(this.lexicon);

    PhraseElement born = phraseFactory.createClause("Dave Bus", "be", "born");
    born.setFeature(Feature.TENSE,Tense.PAST);
    born.addPostModifier("in");
    born.setFeature(Feature.COMPLEMENTISER, "which");

    PhraseElement theHouse = phraseFactory.createNounPhrase("the", "house");
    theHouse.addComplement(born);

    PhraseElement clause = phraseFactory.createClause(theHouse, "be", phraseFactory.createPrepositionPhrase("in", "Edinburgh"));
    DocumentElement sentence = docFactory.createSentence(clause);
    NLGElement realised = realiser.realise(sentence);
//    System.out.println(realised.getRealisation());

    // Retrieve the realisation and dump it to the console
    Assert.assertEquals("The house which Dave Bus was born in is in Edinburgh.",
        realised.getRealisation());
  }

  /**
   * combine two S's using cue phrase and gerund.
   */
  @Test
  public void testDaveAndAlbertsHouse() {
    this.phraseFactory.setLexicon(this.lexicon);

    NLGElement dave = phraseFactory.createWord("Dave Bus", LexicalCategory.NOUN);
    NLGElement albert = phraseFactory.createWord("Albert", LexicalCategory.NOUN);
   
    CoordinatedPhraseElement coord1 = new CoordinatedPhraseElement(
        dave, albert);
   
    PhraseElement born = phraseFactory.createClause(coord1, "be", "born");
    born.setFeature(Feature.TENSE,Tense.PAST);
    born.addPostModifier("in");
    born.setFeature(Feature.COMPLEMENTISER, "which");

    PhraseElement theHouse = phraseFactory.createNounPhrase("the", "house");
    theHouse.addComplement(born);

    PhraseElement clause = phraseFactory.createClause(theHouse, "be", phraseFactory.createPrepositionPhrase("in", "Edinburgh"));
    DocumentElement sentence = docFactory.createSentence(clause);
   
    NLGElement realised = realiser.realise(sentence);
//    System.out.println(realised.getRealisation());

    // Retrieve the realisation and dump it to the console
    Assert.assertEquals("The house which Dave Bus and Albert were born in is in Edinburgh.",
        realised.getRealisation());
  }

 
  @Test
  public void testEngineerHolidays() {
    this.phraseFactory.setLexicon(this.lexicon);

    // Inner clause is 'I' 'make' 'sentence' 'for'.
    PhraseElement inner = phraseFactory.createClause("I","make", "sentence for");
    // Inner clause set to progressive.
    inner.setFeature(Feature.PROGRESSIVE,true);
   
    //Complementiser on inner clause is 'whom'
    inner.setFeature(Feature.COMPLEMENTISER, "whom");
   
    // create the engineer and add the inner clause as post modifier
    PhraseElement engineer = phraseFactory.createNounPhrase("the engineer");
    engineer.addComplement(inner);
   
    // Outer clause is: 'the engineer' 'go' (preposition 'to' 'holidays')
    PhraseElement outer = phraseFactory.createClause(engineer,"go",phraseFactory.createPrepositionPhrase("to","holidays"));

    // Outer clause tense is Future.
    outer.setFeature(Feature.TENSE, Tense.FUTURE);
   
    // Possibly progressive as well not sure.
    outer.setFeature(Feature.PROGRESSIVE,true);
   
    //Outer clause postmodifier would be 'tomorrow'
    outer.addPostModifier("tomorrow");
    DocumentElement sentence = docFactory.createSentence(outer);
    NLGElement realised = realiser.realise(sentence);
//    System.out.println(realised.getRealisation());

    // Retrieve the realisation and dump it to the console
    Assert.assertEquals("The engineer whom I am making sentence for will be going to holidays tomorrow.",
        realised.getRealisation());
  }

 
  @Test
  public void testHousePoker() {
    setUp();
    this.realiser.setLexicon(this.lexicon);
   
    PhraseElement inner = phraseFactory.createClause("I", "play", "poker");
    inner.setFeature(Feature.TENSE,Tense.PAST);
    inner.setFeature(Feature.COMPLEMENTISER, "where");
   
    PhraseElement house = phraseFactory.createNounPhrase("the", "house");
    house.addComplement(inner);
   
    SPhraseSpec outer = phraseFactory.createClause(null, "abandon", house);
   
    outer.addPostModifier("since 1986");
   
    outer.setFeature(Feature.PASSIVE, true);
    outer.setFeature(Feature.PERFECT, true);
   
    DocumentElement sentence = docFactory.createSentence(outer);
    NLGElement realised = realiser.realise(sentence);
//    System.out.println(realised.getRealisation());

    // Retrieve the realisation and dump it to the console
    Assert.assertEquals("The house where I played poker has been abandoned since 1986.",
        realised.getRealisation());
  }
 
 
  @Test
  public void testMayonnaise() {
    this.phraseFactory.setLexicon(this.lexicon);

    NLGElement sandwich = phraseFactory.createNounPhrase(LexicalCategory.NOUN, "sandwich");
    sandwich.setPlural(true);
    //
    PhraseElement first = phraseFactory.createClause("I", "make", sandwich);
    first.setFeature(Feature.TENSE,Tense.PAST);
    first.setFeature(Feature.PROGRESSIVE,true);
    first.setPlural(false);
   
    PhraseElement second = phraseFactory.createClause("the mayonnaise", "run out");
    second.setFeature(Feature.TENSE,Tense.PAST);
    //
    second.setFeature(Feature.COMPLEMENTISER, "when");
   
    first.addComplement(second);
   
    DocumentElement sentence = docFactory.createSentence(first);
    NLGElement realised = realiser.realise(sentence);
//    System.out.println(realised.getRealisation());

    // Retrieve the realisation and dump it to the console
    Assert.assertEquals("I was making sandwiches when the mayonnaise ran out.",
        realised.getRealisation());
  }
 
 
 
}
TOP

Related Classes of simplenlg.test.syntax.FPTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.