javasimplenlg:我们如何指定数量?
我的问题是如何在名词短语中指定数量? 例如:
NPPhraseSpec np = nlgFactory.createNounPhrase("", "apple");
例如,如何生成“5个苹果”? 一个解决方案是放置一个预修改器,代码是:
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 楼答案
恐怕没有内置的功能来实现这一点
然而,如果您要将SimpleLg插入一个更大的管道,您可以通过在SimpleLg之前计算数量来实现自动化。例如,假设你通过计算NP的头(苹果、香蕉、梨等)的数字n得到“5”:如果n大于1,将NP的复数设为真;否则什么也不做,因为复数=false是默认值。您甚至可以将其增加到更高级的值,例如:如果n等于0,则添加“no”作为说明符