| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- .. Copyright (C) 2001-2020 NLTK Project
- .. For license information, see LICENSE.TXT
- ===============================================
- Generating sentences from context-free grammars
- ===============================================
- 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
|