示例#1
0
	    /**
	     * Realise.
	     * 
	     * @param wt
	     *            the wt
	     * @return the string
	     * @throws XMLRealiserException
	     *             the xML realiser exception
	     */
		public static string realise(wrapper.XmlDocumentElement wt)
		{
			string output = "";
			if (wt != null)
			{
				try
				{
					if (lexicon == null)
					{
						lexicon = Lexicon.DefaultLexicon;
					}
					UnWrapper w = new UnWrapper(lexicon);
					DocumentElement t = w.UnwrapDocumentElement(wt);
					if (t != null)
					{
						Realiser r = new Realiser(lexicon);
						r.initialise();

						NLGElement tr = r.realise(t);

						output = tr.Realisation;
					}

				}
				catch (Exception e)
				{
					throw new XMLRealiserException("NLG XMLRealiser Error", e);
				}
			}

			return output;
		}
示例#2
0
        public void enumeratedList()
        {
            var lexicon    = Lexicon.getDefaultLexicon();
            var nlgFactory = new NLGFactory(lexicon);
            var realiser   = new Realiser(lexicon);

            realiser.setFormatter(new HTMLFormatter());
            var document  = nlgFactory.createDocument("Document");
            var paragraph = nlgFactory.createParagraph();
            var list      = nlgFactory.createEnumeratedList();
            var item1     = nlgFactory.createListItem();
            var item2     = nlgFactory.createListItem();
            // NB: a list item employs orthographical operations only until sentence level;
            // nest clauses within a sentence to generate more than 1 clause per list item.
            var sentence1 = nlgFactory.createSentence("this", "be", "the first sentence");
            var sentence2 = nlgFactory.createSentence("this", "be", "the second sentence");

            item1.addComponent(sentence1);
            item2.addComponent(sentence2);
            list.addComponent(item1);
            list.addComponent(item2);
            paragraph.addComponent(list);
            document.addComponent(paragraph);
            var expectedOutput = "<h1>Document</h1>" + "<p>" + "<ol>" + "<li>This is the first sentence.</li>"
                                 + "<li>This is the second sentence.</li>" + "</ol>" + "</p>";

            var realisedOutput = realiser.realise(document).getRealisation();

            Assert.AreEqual(expectedOutput, realisedOutput);
        }
示例#3
0
        public virtual void section8_Test()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;  // default simplenlg lexicon
            NLGFactory nlgFactory = new NLGFactory(lexicon); // factory based on lexicon
            Realiser   realiser   = new Realiser(lexicon);

            NPPhraseSpec subject = nlgFactory.createNounPhrase("Mary");
            NPPhraseSpec @object = nlgFactory.createNounPhrase("the monkey");
            VPPhraseSpec verb    = nlgFactory.createVerbPhrase("chase");

            subject.addModifier("fast");

            SPhraseSpec p = nlgFactory.createClause();

            p.setSubject(subject);
            p.setVerb(verb);
            p.setObject(@object);

            string outputA = realiser.realiseSentence(p);

            Assert.AreEqual("Fast Mary chases the monkey.", outputA);

            verb.addModifier("quickly");

            string outputB = realiser.realiseSentence(p);

            Assert.AreEqual("Fast Mary quickly chases the monkey.", outputB);
        }
示例#4
0
        public void section8_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);
            //realiser.setDebugMode(true);
            var subject = nlgFactory.createNounPhrase("Mary");
            var obj     = nlgFactory.createNounPhrase("the monkey");
            var verb    = nlgFactory.createVerbPhrase("chase");

            subject.addModifier("fast");

            var p = nlgFactory.createClause();

            p.setSubject(subject);
            p.setVerb(verb);
            p.setObject(obj);

            var outputA = realiser.realiseSentence(p);

            Assert.AreEqual("Fast Mary chases the monkey.", outputA);

            verb.addModifier("quickly");

            var outputB = realiser.realiseSentence(p);

            Assert.AreEqual("Fast Mary quickly chases the monkey.", outputB);
        }
        public virtual void xmlLexiconImmutabilityTest()
        {
            NLGFactory factory  = new NLGFactory(lexicon);
            Realiser   realiser = new Realiser(lexicon);

            // "wall" is singular.
            NPPhraseSpec wall = factory.createNounPhrase("the", "wall");

            Assert.AreEqual(NumberAgreement.SINGULAR, wall.getFeature(Feature.NUMBER));

            // Realise a sentence with plural form of "wall"
            wall.Plural = true;
            SPhraseSpec sentence = factory.createClause("motion", "observe");

            sentence.setFeature(Feature.TENSE, Tense.PAST);
            PPPhraseSpec pp = factory.createPrepositionPhrase("in", wall);

            sentence.addPostModifier(pp);
            realiser.realiseSentence(sentence);

            // Create a new 'the wall' NP and check to make sure that the syntax processor has
            // not propagated plurality to the canonical XMLLexicon WordElement object.
            wall = factory.createNounPhrase("the", "wall");
            Assert.AreEqual(NumberAgreement.SINGULAR, wall.getFeature(Feature.NUMBER));
        }
示例#6
0
        public void section14_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon

            var realiser = new Realiser(lexicon);

            var p1 = nlgFactory.createClause("Mary", "chase", "the monkey");
            var p2 = nlgFactory.createClause("The monkey", "fight back");
            var p3 = nlgFactory.createClause("Mary", "be", "nervous");

            var s1 = nlgFactory.createSentence(p1);
            var s2 = nlgFactory.createSentence(p2);
            var s3 = nlgFactory.createSentence(p3);

            var par1 = nlgFactory.createParagraph(new List <INLGElement> {
                s1, s2, s3
            });

            var output14a = realiser.realise(par1).getRealisation();

            Assert.AreEqual("Mary chases the monkey. The monkey fights back. Mary is nervous.\n\n", output14a);

            var section = nlgFactory.createSection("The Trials and Tribulation of Mary and the Monkey");

            section.addComponent(par1);
            var output14b = realiser.realise(section).getRealisation();

            Assert.AreEqual(
                "The Trials and Tribulation of Mary and the Monkey\nMary chases the monkey. The monkey fights back. Mary is nervous.\n\n",
                output14b);
        }
示例#7
0
        public void section13_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon

            var realiser = new Realiser(lexicon);

            var s1 = nlgFactory.createClause("my cat", "like", "fish");
            var s2 = nlgFactory.createClause("my dog", "like", "big bones");
            var s3 = nlgFactory.createClause("my horse", "like", "grass");

            var c = nlgFactory.createCoordinatedPhrase();

            c.addCoordinate(s1);
            c.addCoordinate(s2);
            c.addCoordinate(s3);

            var outputA = realiser.realiseSentence(c);

            Assert.AreEqual("My cat likes fish, my dog likes big bones and my horse likes grass.", outputA);

            var p = nlgFactory.createClause("I", "be", "happy");
            var q = nlgFactory.createClause("I", "eat", "fish");

            q.setFeature(Feature.COMPLEMENTISER.ToString(), "because");
            q.setFeature(Feature.TENSE.ToString(), Tense.PAST);
            p.addComplement(q);

            var outputB = realiser.realiseSentence(p);

            Assert.AreEqual("I am happy because I ate fish.", outputB);
        }
示例#8
0
        public virtual void setUp()
        {
            lexicon = new XMLLexicon(); // built in lexicon

            phraseFactory = new NLGFactory(lexicon);
            realiser      = new Realiser(lexicon);
        }
示例#9
0
        public virtual void section14_Test()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;  // default simplenlg lexicon
            NLGFactory nlgFactory = new NLGFactory(lexicon); // factory based on lexicon

            Realiser realiser = new Realiser(lexicon);

            SPhraseSpec p1 = nlgFactory.createClause("Mary", "chase", "the monkey");
            SPhraseSpec p2 = nlgFactory.createClause("The monkey", "fight back");
            SPhraseSpec p3 = nlgFactory.createClause("Mary", "be", "nervous");

            DocumentElement s1 = nlgFactory.createSentence(p1);
            DocumentElement s2 = nlgFactory.createSentence(p2);
            DocumentElement s3 = nlgFactory.createSentence(p3);

            DocumentElement par1 = nlgFactory.createParagraph(new List <DocumentElement> {
                s1, s2, s3
            });

            string output14a = realiser.realise(par1).Realisation;

            Assert.AreEqual("Mary chases the monkey. The monkey fights back. Mary is nervous.\n\n", output14a);

            DocumentElement section = nlgFactory.createSection("The Trials and Tribulation of Mary and the Monkey");

            section.addComponent(par1);
            string output14b = realiser.realise(section).Realisation;

            Assert.AreEqual(
                "The Trials and Tribulation of Mary and the Monkey\nMary chases the monkey. The monkey fights back. Mary is nervous.\n\n",
                output14b);
        }
示例#10
0
        public virtual void section13_Test()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;  // default simplenlg lexicon
            NLGFactory nlgFactory = new NLGFactory(lexicon); // factory based on lexicon

            Realiser realiser = new Realiser(lexicon);

            SPhraseSpec s1 = nlgFactory.createClause("my cat", "like", "fish");
            SPhraseSpec s2 = nlgFactory.createClause("my dog", "like", "big bones");
            SPhraseSpec s3 = nlgFactory.createClause("my horse", "like", "grass");

            CoordinatedPhraseElement c = nlgFactory.createCoordinatedPhrase();

            c.addCoordinate(s1);
            c.addCoordinate(s2);
            c.addCoordinate(s3);

            string outputA = realiser.realiseSentence(c);

            Assert.AreEqual("My cat likes fish, my dog likes big bones and my horse likes grass.", outputA);

            SPhraseSpec p = nlgFactory.createClause("I", "be", "happy");
            SPhraseSpec q = nlgFactory.createClause("I", "eat", "fish");

            q.setFeature(Feature.COMPLEMENTISER, "because");
            q.setFeature(Feature.TENSE, Tense.PAST);
            p.addComplement(q);

            string outputB = realiser.realiseSentence(p);

            Assert.AreEqual("I am happy because I ate fish.", outputB);
        }
示例#11
0
        public virtual void enumeratedList()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;
            NLGFactory nlgFactory = new NLGFactory(lexicon);
            Realiser   realiser   = new Realiser(lexicon);

            realiser.Formatter = new HTMLFormatter();
            DocumentElement document  = nlgFactory.createDocument("Document");
            DocumentElement paragraph = nlgFactory.createParagraph();
            DocumentElement list      = nlgFactory.createEnumeratedList();
            DocumentElement item1     = nlgFactory.createListItem();
            DocumentElement item2     = nlgFactory.createListItem();


            DocumentElement sentence1 = nlgFactory.createSentence("this", "be", "the first sentence");
            DocumentElement sentence2 = nlgFactory.createSentence("this", "be", "the second sentence");

            item1.addComponent(sentence1);
            item2.addComponent(sentence2);
            list.addComponent(item1);
            list.addComponent(item2);
            paragraph.addComponent(list);
            document.addComponent(paragraph);
            string expectedOutput = "<h1>Document</h1>" + "<p>" + "<ol>" + "<li>This is the first sentence.</li>"
                                    + "<li>This is the second sentence.</li>" + "</ol>" + "</p>";

            string realisedOutput = realiser.realise(document).Realisation;


            Assert.AreEqual(expectedOutput, realisedOutput);
        }
示例#12
0
        public void testEnumeratedList()
        {
            var lexicon    = Lexicon.getDefaultLexicon();
            var nlgFactory = new NLGFactory(lexicon);
            var realiser   = new Realiser(lexicon);

            realiser.setFormatter(new TextFormatter());
            var document  = nlgFactory.createDocument("Document");
            var paragraph = nlgFactory.createParagraph();


            var subListItem1     = nlgFactory.createListItem();
            var subListSentence1 = nlgFactory.createSentence("this", "be", "sub-list sentence 1");

            subListItem1.addComponent(subListSentence1);

            var subListItem2     = nlgFactory.createListItem();
            var subListSentence2 = nlgFactory.createSentence("this", "be", "sub-list sentence 2");

            subListItem2.addComponent(subListSentence2);

            var subList = nlgFactory.createEnumeratedList();

            subList.addComponent(subListItem1);
            subList.addComponent(subListItem2);

            var item1     = nlgFactory.createListItem();
            var sentence1 = nlgFactory.createSentence("this", "be", "the first sentence");

            item1.addComponent(sentence1);

            var item2     = nlgFactory.createListItem();
            var sentence2 = nlgFactory.createSentence("this", "be", "the second sentence");

            item2.addComponent(sentence2);

            var list = nlgFactory.createEnumeratedList();

            list.addComponent(subList);
            list.addComponent(item1);
            list.addComponent(item2);
            paragraph.addComponent(list);
            document.addComponent(paragraph);
            var expectedOutput = "Document\n" +
                                 "\n" +
                                 "1.1 - This is sub-list sentence 1.\n" +
                                 "1.2 - This is sub-list sentence 2.\n" +
                                 "2 - This is the first sentence.\n" +
                                 "3 - This is the second sentence.\n" +
                                 "\n\n"; // for the end of a paragraph

            var realisedOutput = realiser.realise(document).getRealisation();

            Assert.AreEqual(expectedOutput, realisedOutput);
        }
        public virtual void testEnumeratedList()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;
            NLGFactory nlgFactory = new NLGFactory(lexicon);
            Realiser   realiser   = new Realiser(lexicon);

            realiser.Formatter = new TextFormatter();
            DocumentElement document  = nlgFactory.createDocument("Document");
            DocumentElement paragraph = nlgFactory.createParagraph();


            DocumentElement subListItem1     = nlgFactory.createListItem();
            DocumentElement subListSentence1 = nlgFactory.createSentence("this", "be", "sub-list sentence 1");

            subListItem1.addComponent(subListSentence1);

            DocumentElement subListItem2     = nlgFactory.createListItem();
            DocumentElement subListSentence2 = nlgFactory.createSentence("this", "be", "sub-list sentence 2");

            subListItem2.addComponent(subListSentence2);

            DocumentElement subList = nlgFactory.createEnumeratedList();

            subList.addComponent(subListItem1);
            subList.addComponent(subListItem2);

            DocumentElement item1     = nlgFactory.createListItem();
            DocumentElement sentence1 = nlgFactory.createSentence("this", "be", "the first sentence");

            item1.addComponent(sentence1);

            DocumentElement item2     = nlgFactory.createListItem();
            DocumentElement sentence2 = nlgFactory.createSentence("this", "be", "the second sentence");

            item2.addComponent(sentence2);

            DocumentElement list = nlgFactory.createEnumeratedList();

            list.addComponent(subList);
            list.addComponent(item1);
            list.addComponent(item2);
            paragraph.addComponent(list);
            document.addComponent(paragraph);
            string expectedOutput = "Document\n" +
                                    "\n" +
                                    "1.1 - This is sub-list sentence 1.\n" +
                                    "1.2 - This is sub-list sentence 2.\n" +
                                    "2 - This is the first sentence.\n" +
                                    "3 - This is the second sentence.\n" +
                                    "\n\n"; // for the end of a paragraph

            string realisedOutput = realiser.realise(document).Realisation;

            Assert.AreEqual(expectedOutput, realisedOutput);
        }
示例#14
0
        public virtual void tearDown()
        {
            realiser = null;

            phraseFactory = null;

            if (null != lexicon)
            {
                lexicon = null;
            }
        }
        public override void RunCommand(object sender)
        {
            var engine = (AutomationEngineInstance)sender;
            var p      = (SPhraseSpec)v_InstanceName.GetAppInstance(engine);

            Lexicon  lexicon  = Lexicon.getDefaultLexicon();
            Realiser realiser = new Realiser(lexicon);

            string phraseOutput = realiser.realiseSentence(p);

            phraseOutput.StoreInUserVariable(engine, v_OutputUserVariableName);
        }
示例#16
0
        public async override Task RunCommand(object sender)
        {
            var engine = (IAutomationEngineInstance)sender;
            var p      = (SPhraseSpec)((OBAppInstance)await v_InstanceName.EvaluateCode(engine)).Value;

            Lexicon  lexicon  = Lexicon.getDefaultLexicon();
            Realiser realiser = new Realiser(lexicon);

            string phraseOutput = realiser.realiseSentence(p);

            phraseOutput.SetVariableValue(engine, v_OutputUserVariableName);
        }
        public override void RunCommand(object sender)
        {
            var engine    = (Core.Automation.Engine.AutomationEngineInstance)sender;
            var vInstance = v_InstanceName.ConvertToUserVariable(engine);
            var p         = (SPhraseSpec)engine.GetAppInstance(vInstance);

            Lexicon  lexicon  = Lexicon.getDefaultLexicon();
            Realiser realiser = new Realiser(lexicon);

            String phraseOutput = realiser.realiseSentence(p);

            phraseOutput.StoreInUserVariable(sender, v_applyToVariableName);
        }
示例#18
0
        public void section3_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon

            NLGElement s1 = nlgFactory.createSentence("my dog is happy");

            var r = new Realiser(lexicon);

            var output = r.realiseSentence(s1);

            Assert.AreEqual("My dog is happy.", output);
        }
示例#19
0
        public virtual void section3_Test()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;  // default simplenlg lexicon
            NLGFactory nlgFactory = new NLGFactory(lexicon); // factory based on lexicon

            NLGElement s1 = nlgFactory.createSentence("my dog is happy");

            Realiser r = new Realiser(lexicon);

            string output = r.realiseSentence(s1);

            Assert.AreEqual("My dog is happy.", output);
        }
示例#20
0
        public virtual void testPluralThisDeterminerNPObject_NIHDBLexicon()
        {
            lexicon       = new NIHDBLexicon(DB_FILENAME, LEXICON_TYPE);
            phraseFactory = new NLGFactory(lexicon);
            realiser      = new Realiser(lexicon);

            SPhraseSpec sentence_1 = phraseFactory.createClause();

            NPPhraseSpec nounPhrase_1 = phraseFactory.createNounPhrase("monkey");

            nounPhrase_1.Plural = true;
            nounPhrase_1.setDeterminer("this");
            sentence_1.setObject(nounPhrase_1);

            Assert.AreEqual("These monkeys.", realiser.realiseSentence(sentence_1));
        }
示例#21
0
        public void section5_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);

            var p = nlgFactory.createClause();

            p.setSubject("my dog");
            p.setVerb("chase");
            p.setObject("George");

            var output = realiser.realiseSentence(p);

            Assert.AreEqual("My dog chases George.", output);
        }
示例#22
0
        public virtual void section5_Test()
        {
            Lexicon    lexicon    = Lexicon.DefaultLexicon;  // default simplenlg lexicon
            NLGFactory nlgFactory = new NLGFactory(lexicon); // factory based on lexicon
            Realiser   realiser   = new Realiser(lexicon);

            SPhraseSpec p = nlgFactory.createClause();

            p.setSubject("my dog");
            p.setVerb("chase");
            p.setObject("George");

            string output = realiser.realiseSentence(p);

            Assert.AreEqual("My dog chases George.", output);
        }
示例#23
0
        public void section5A_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);

            var p = nlgFactory.createClause();

            p.setSubject("Mary");
            p.setVerb("chase");
            p.setObject("the monkey");

            var output = realiser.realiseSentence(p);

            Assert.AreEqual("Mary chases the monkey.", output);
        } // testSection5A
示例#24
0
        public void variantsTest()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);

            var p = nlgFactory.createClause();

            p.setSubject("my dog");
            p.setVerb("is"); // variant of be
            p.setObject("George");

            var output = realiser.realiseSentence(p);

            Assert.AreEqual("My dog is George.", output);

            p = nlgFactory.createClause();
            p.setSubject("my dog");
            p.setVerb("chases"); // variant of chase
            p.setObject("George");

            output = realiser.realiseSentence(p);
            Assert.AreEqual("My dog chases George.", output);


            p = nlgFactory.createClause();
            p.setSubject(nlgFactory.createNounPhrase("the", "dogs")); // variant of "dog"
            p.setVerb("is");                                          // variant of be
            p.setObject("happy");                                     // variant of happy
            output = realiser.realiseSentence(p);
            Assert.AreEqual("The dog is happy.", output);

            p = nlgFactory.createClause();
            p.setSubject(nlgFactory.createNounPhrase("the", "children")); // variant of "child"
            p.setVerb("is");                                              // variant of be
            p.setObject("happy");                                         // variant of happy
            output = realiser.realiseSentence(p);
            Assert.AreEqual("The child is happy.", output);

            // following functionality is enabled
            p = nlgFactory.createClause();
            p.setSubject(nlgFactory.createNounPhrase("the", "dogs")); // variant of "dog"
            p.setVerb("is");                                          // variant of be
            p.setObject("happy");                                     // variant of happy
            output = realiser.realiseSentence(p);
            Assert.AreEqual("The dog is happy.", output);             //corrected automatically
        }
示例#25
0
        public void section6_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);

            var p = nlgFactory.createClause();

            p.setSubject("Mary");
            p.setVerb("chase");
            p.setObject("George");

            p.setFeature(Feature.TENSE.ToString(), Tense.PAST);
            var output = realiser.realiseSentence(p);

            Assert.AreEqual("Mary chased George.", output);

            p.setFeature(Feature.TENSE.ToString(), Tense.FUTURE);
            output = realiser.realiseSentence(p);
            Assert.AreEqual("Mary will chase George.", output);

            p.setFeature(Feature.NEGATED.ToString(), true);
            output = realiser.realiseSentence(p);
            Assert.AreEqual("Mary will not chase George.", output);

            p = nlgFactory.createClause();
            p.setSubject("Mary");
            p.setVerb("chase");
            p.setObject("George");

            p.setFeature(Feature.INTERROGATIVE_TYPE.ToString(),
                         InterrogativeType.YES_NO);
            output = realiser.realiseSentence(p);
            Assert.AreEqual("Does Mary chase George?", output);

            p.setSubject("Mary");
            p.setVerb("chase");
            p.setFeature(Feature.INTERROGATIVE_TYPE.ToString(), InterrogativeType.WHO_OBJECT);
            output = realiser.realiseSentence(p);
            Assert.AreEqual("Who does Mary chase?", output);

            p = nlgFactory.createClause();
            p.setSubject("the dog");
            p.setVerb("wake up");
            output = realiser.realiseSentence(p);
            Assert.AreEqual("The dog wakes up.", output);
        }
示例#26
0
        public void section7_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);

            var p = nlgFactory.createClause();

            p.setSubject("Mary");
            p.setVerb("chase");
            p.setObject("the monkey");
            p.addComplement("very quickly");
            p.addComplement("despite her exhaustion");

            var output = realiser.realiseSentence(p);

            Assert.AreEqual("Mary chases the monkey very quickly despite her exhaustion.", output);
        }
        /**
         * Sets up the accessor and runs it -- takes ca. 26 sec
         */
        public virtual void setUp()
        {
            // use property file for the lexicon

            try
            {
                Properties prop = new Properties();
                prop.load("Resources/lexicon.properties");

                string lexiconType = prop.getProperty("LexiconType");

                // the XML lexicon is used by default
                if (ReferenceEquals(lexiconType, null))
                {
                    lexiconType = "XML";
                }

                if (lexiconType == "NIH" || lexiconType == "NIH_HSQL")
                {
                    // NIH lexicon
                    lexicon = new NIHDBLexicon(prop.getProperty("DB_FILENAME"),
                                               XMLRealiser.LexiconType.NIHDB_HSQL);
                }
                else if (lexiconType == "NIH_SQLITE")
                {
                    // NIH lexicon
                    lexicon = new NIHDBLexicon(prop.getProperty("DB_FILENAME"),
                                               XMLRealiser.LexiconType.NIHDB_SQLITE);
                }
                else
                {
                    // XML lexicon
                    lexicon = new XMLLexicon(prop.getProperty("XML_FILENAME"));
                }
            }
            catch (Exception)
            {
                lexicon = new NIHDBLexicon(DB_FILENAME, LEXICON_TYPE);
            }

            factory  = new NLGFactory(lexicon);
            realiser = new Realiser(lexicon);
        }
示例#28
0
        public void section10_Test()
        {
            var lexicon    = Lexicon.getDefaultLexicon(); // default simplenlg lexicon
            var nlgFactory = new NLGFactory(lexicon);     // factory based on lexicon
            var realiser   = new Realiser(lexicon);

            var subject1 = nlgFactory.createNounPhrase("Mary");
            var subject2 = nlgFactory.createNounPhrase("your", "giraffe");

            // next line is not correct ~ should be nlgFactory.createCoordinatedPhrase ~ may be corrected in the API
            var subj = nlgFactory.createCoordinatedPhrase(subject1, subject2);

            var verb = nlgFactory.createVerbPhrase("chase");

            var p = nlgFactory.createClause();

            p.setSubject(subj);
            p.setVerb(verb);
            p.setObject("the monkey");

            var outputA = realiser.realiseSentence(p);

            Assert.AreEqual("Mary and your giraffe chase the monkey.", outputA);

            var object1 = nlgFactory.createNounPhrase("the monkey");
            var object2 = nlgFactory.createNounPhrase("George");

            // next line is not correct ~ should be nlgFactory.createCoordinatedPhrase ~ may be corrected in the API
            var obj = nlgFactory.createCoordinatedPhrase(object1, object2);

            obj.addCoordinate("Martha");
            p.setObject(obj);

            var outputB = realiser.realiseSentence(p);

            Assert.AreEqual("Mary and your giraffe chase the monkey, George and Martha.", outputB);

            obj.setFeature(Feature.CONJUNCTION.ToString(), "or");

            var outputC = realiser.realiseSentence(p);

            Assert.AreEqual("Mary and your giraffe chase the monkey, George or Martha.", outputC);
        }
示例#29
0
        public virtual void setUp()
        {
            lexicon = new XMLLexicon(); // built in lexicon

            phraseFactory = new NLGFactory(lexicon);
            realiser      = new Realiser(lexicon);

            man   = phraseFactory.createNounPhrase("the", "man");         //$NON-NLS-1$ //$NON-NLS-2$
            woman = phraseFactory.createNounPhrase("the", "woman");       //$NON-NLS-1$//$NON-NLS-2$
            dog   = phraseFactory.createNounPhrase("the", "dog");         //$NON-NLS-1$ //$NON-NLS-2$
            boy   = phraseFactory.createNounPhrase("the", "boy");         //$NON-NLS-1$ //$NON-NLS-2$

            beautiful = phraseFactory.createAdjectivePhrase("beautiful"); //$NON-NLS-1$
            stunning  = phraseFactory.createAdjectivePhrase("stunning");  //$NON-NLS-1$
            salacious = phraseFactory.createAdjectivePhrase("salacious"); //$NON-NLS-1$

            onTheRock = phraseFactory.createPrepositionPhrase("on");      //$NON-NLS-1$
            np4       = phraseFactory.createNounPhrase("the", "rock");    //$NON-NLS-1$ //$NON-NLS-2$
            onTheRock.addComplement(np4);

            behindTheCurtain = phraseFactory.createPrepositionPhrase("behind"); //$NON-NLS-1$
            np5 = phraseFactory.createNounPhrase("the", "curtain");             //$NON-NLS-1$ //$NON-NLS-2$
            behindTheCurtain.addComplement(np5);

            inTheRoom = phraseFactory.createPrepositionPhrase("in");   //$NON-NLS-1$
            np6       = phraseFactory.createNounPhrase("the", "room"); //$NON-NLS-1$ //$NON-NLS-2$
            inTheRoom.addComplement(np6);

            underTheTable = phraseFactory.createPrepositionPhrase("under");              //$NON-NLS-1$
            underTheTable.addComplement(phraseFactory.createNounPhrase("the", "table")); //$NON-NLS-1$ //$NON-NLS-2$

            proTest1 = phraseFactory.createNounPhrase("the", "singer");                  //$NON-NLS-1$ //$NON-NLS-2$
            proTest2 = phraseFactory.createNounPhrase("some", "person");                 //$NON-NLS-1$ //$NON-NLS-2$

            kick     = phraseFactory.createVerbPhrase("kick");                           //$NON-NLS-1$
            kiss     = phraseFactory.createVerbPhrase("kiss");                           //$NON-NLS-1$
            walk     = phraseFactory.createVerbPhrase("walk");                           //$NON-NLS-1$
            talk     = phraseFactory.createVerbPhrase("talk");                           //$NON-NLS-1$
            getUp    = phraseFactory.createVerbPhrase("get up");                         //$NON-NLS-1$
            fallDown = phraseFactory.createVerbPhrase("fall down");                      //$NON-NLS-1$
            give     = phraseFactory.createVerbPhrase("give");                           //$NON-NLS-1$
            say      = phraseFactory.createVerbPhrase("say");                            //$NON-NLS-1$
        }
示例#30
0
        public static void Main(string[] args)
        {
            var ss       = new XMLLexicon();
            var Factory  = new NLGFactory(ss);
            var Realiser = new Realiser(ss);

            // Instructions will be given to you by the director.

            var verbp = Factory.createVerbPhrase("be given");

            verbp.setFeature(Feature.TENSE.ToString(), Tense.FUTURE);
            var subj  = Factory.createNounPhrase("The Director");
            var oobj  = Factory.createNounPhrase("Instruction");
            var ioobj = Factory.createNounPhrase("you");

            subj.setPlural(false);
            oobj.setPlural(true);

            var s = new List <INLGElement>()
            {
                verbp, subj, oobj, ioobj
            };

            var clause = Factory.createClause();

            clause.setVerb(verbp);
            clause.setSubject(subj);
            clause.setObject(oobj);
            clause.setIndirectObject(ioobj);


            var sentence = Factory.createSentence(clause);

            sentence.setFeature(Feature.TENSE.ToString(), Tense.FUTURE);

            var active = Realiser.realise(sentence).ToString();

            Console.WriteLine($"{active}");

            Console.WriteLine("done");
            Console.ReadLine();
        }