我的问题是如何指定名词短语中的数量? 例如:
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));
但是,是不是有另一个处理数字的解决方案并自动将名词复数?
答案 0 :(得分:1)
我担心没有内置功能可以做到这一点。
但是,如果您将SimpleNLG插入更大的管道,您可以通过在SimpleNLG之前计算数量来自动执行此操作。例如,假设您正在获得" 5"通过计算NP的头部(苹果,香蕉,梨等)的数量n:如果n大于1,则将NP的多个设置为真;否则什么也不做,因为复数= false是默认值。你甚至可以将它增加到更高级的东西,例如:如果n等于0,则添加" no"作为说明者。