У меня есть контекстно-свободная грамматика, и я использую ее для создания предложений (используя NLTK в python).
# Create a CFG
from nltk import CFG
from nltk.parse.generate import generate
grammar = CFG.fromstring("""
Story -> Introduction MainQuest End
LocationInfo -> 'He found himself in a small village where he grew up.'
Introduction -> 'Long ago there was a boy who decided to become a knight.'
MainQuest -> LocationInfo 'He had to get a sword first to fight monsters' Navigate
Navigate -> '[He could go west]' GoodEnd | '[He could go east]' BadEnd
GoodEnd -> 'And he lived happily ever after.'
BadEnd -> 'Finally he died painfully.'
End -> 'The End'
""")
#print(grammar.start())
#print(grammar.productions())
for sentence in generate(grammar, n=2):
print('\n'.join(sentence))
print('\n')
Это просто и работает.Но теперь я хотел бы добавить вероятности к особым случаям, чтобы моя сгенерированная история могла иметь хорошее или плохое окончание на основе случайного фактора с заданными вероятностями.
Я не могу найти ни одного примера длясделайте так, и когда я передаю свой PCFG в nltk.parse.generate, он воспринимает его как CFG.
Надеюсь, вы мне поможете!