grammar = nltk.parse_cfg(
    """
S -> NP VP
NP -> Det N | Det N PP
VP -> V NP | VP PP
Det -> 'a' | 'the'
N -> 'Kim' | 'Dana' | 'everyone'
V -> 'arrived' | 'left' |'cheered'
"""
    )
parser = nltk.ChartParser(grammar)
parser.nbest_parse('the Kim left a Dana'.split())
Python и NLTK: как анализировать грамматику предложений?