SimpleNLG:我们如何指定数量?

时间:2016-03-06 12:01:17

标签: java linguistics nlg simplenlg

我的问题是如何指定名词短语中的数量? 例如:

NPPhraseSpec np = nlgFactory.createNounPhrase("", "apple");

如何生成" 5个苹果",例如? 解决方案是放置一个preModifier,代码为:

    Lexicon lexicon = Lexicon.getDefaultLexicon();
    NLGFactory nlgFactory = new NLGFactory(lexicon);
    Realiser realiser = new Realiser();
    NPPhraseSpec np = nlgFactory.createNounPhrase("", "apple");
    np.addPreModifier("5");
    np.setPlural(true);
    System.out.println(realiser.realiseSentence(np));

但是,是不是有另一个处理数字的解决方案并自动将名词复数?

1 个答案:

答案 0 :(得分:1)

我担心没有内置功能可以做到这一点。

但是,如果您将SimpleNLG插入更大的管道,您可以通过在SimpleNLG之前计算数量来自动执行此操作。例如,假设您正在获得" 5"通过计算NP的头部(苹果,香蕉,梨等)的数量n:如果n大于1,则将NP的多个设置为真;否则什么也不做,因为复数= false是默认值。你甚至可以将它增加到更高级的东西,例如:如果n等于0,则添加" no"作为说明者。