SimpleNLG-создание предложения из 2 частей с использованием " заполнителей"



Кто-нибудь знает, как (используя SimpleNLG) создать правильное" двухчастное " предложение, например (я не лингвист, поэтому я не совсем уверен, какие синтаксические категории каждое слово / фраза:




" я купил новый движок виджетов, который создал продукт A, продукт B и продукт C."




Текст, выделенный жирным шрифтом, будет вставлен динамически во время выполнения синтаксическим анализатором или чем-то еще. Я пошел через учебник SimpleNLG (там, кажется, не быть что-нибудь еще это более подробно) и впоследствии попытался присоединить объект PPPhraseSpec (представляющий вторую часть предложения выше) к SPhraseSpec (который имеет существительное и глагол), но результат непонятен и грамматически неверен.

324   1  

1 ответ:

Вот решение вашей проблемы: первая часть полужирным шрифтом-это грамматический объект (словосочетание существительного), а вторая часть полужирным шрифтом-объект глагола "создать" (предложение координат).

import simplenlg.realiser.english.Realiser;
import simplenlg.lexicon.Lexicon;
import simplenlg.phrasespec.*;
import simplenlg.framework.*;
import simplenlg.features.*;


public class Test {

    // Target:
    // I bought a new widget engine, 
    //   which created product A, product B, and product C.

    public static void main(String[] args) {
        System.out.println("Starting...");
        Lexicon lexicon = Lexicon.getDefaultLexicon();
        NLGFactory nlgFactory = new NLGFactory(lexicon);
        Realiser realiser = new Realiser(lexicon);

        SPhraseSpec s1 = nlgFactory.createClause("I",
            "bought", "a new widget engine");
        s1.setFeature(Feature.TENSE, Tense.PAST);

        SPhraseSpec s2 = nlgFactory.createClause("", "created");
        NPPhraseSpec object1 = nlgFactory.createNounPhrase("product A");
        NPPhraseSpec object2 = nlgFactory.createNounPhrase("product B");
        NPPhraseSpec object3 = nlgFactory.createNounPhrase("product C");

        CoordinatedPhraseElement cc = nlgFactory.createCoordinatedPhrase();
        cc.addCoordinate(object1);
        cc.addCoordinate(object2);
        cc.addCoordinate(object3);

        s2.setObject(cc);
        s2.setFeature(Feature.TENSE, Tense.PAST);

        s2.setFeature(Feature.COMPLEMENTISER, ", which"); // non-restrictive?
        s1.addComplement(s2);

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

}
Я не носитель английского языка и часто ошибаюсь в этой части,но я думаю, что вы хотите ограничительное относительное предложение вместо не ограничительного: "я купил новый движок виджетов, который создал..."вместо" Я купил новый движок виджетов, который создал ...- Если это так, то просто ... прокомментируйте строку, устанавливающую комплементатор.

Comments

    Ничего не найдено.