3

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

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));

但是,难道没有另一种解决方案可以处理数字并自动将名词变为复数吗?

4

1 回答 1

1

恐怕没有内置函数可以做到这一点。

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

于 2016-03-06T16:23:39.900 回答