An example grammar:
>>> from nltk.parse.generate import generate, demo_grammar >>> from nltk import CFG >>> grammar = CFG.fromstring(demo_grammar) >>> print(grammar) Grammar with 13 productions (start state = S) S -> NP VP NP -> Det N PP -> P NP VP -> 'slept' VP -> 'saw' NP VP -> 'walked' PP Det -> 'the' Det -> 'a' N -> 'man' N -> 'park' N -> 'dog' P -> 'in' P -> 'with'
The first 10 generated sentences:
>>> for sentence in generate(grammar, n=10): ... print(' '.join(sentence)) the man slept the man saw the man the man saw the park the man saw the dog the man saw a man the man saw a park the man saw a dog the man walked in the man the man walked in the park the man walked in the dog
All sentences of max depth 4:
>>> for sentence in generate(grammar, depth=4): ... print(' '.join(sentence)) the man slept the park slept the dog slept a man slept a park slept a dog slept
The number of sentences of different max depths:
>>> len(list(generate(grammar, depth=3))) 0 >>> len(list(generate(grammar, depth=4))) 6 >>> len(list(generate(grammar, depth=5))) 42 >>> len(list(generate(grammar, depth=6))) 114 >>> len(list(generate(grammar))) 114