def demo(): """ A demonstration showing how each tree transform can be used. """ from nltk_lite.draw.tree import draw_trees from nltk_lite.parse import bracket_parse from copy import deepcopy # original tree from WSJ bracketed text sentence = "(TOP (S (S (VP (VBN Turned) (ADVP (RB loose)) (PP (IN in) (NP (NP (NNP Shane) (NNP Longman) (POS 's)) (NN trading) (NN room))))) (, ,) (NP (DT the) (NN yuppie) (NNS dealers)) (VP (AUX do) (NP (NP (RB little)) (ADJP (RB right)))) (. .)))" tree = bracket_parse(sentence) # collapse subtrees with only one child collapsedTree = deepcopy(tree) collapseUnary(collapsedTree) # convert the tree to CNF cnfTree = deepcopy(collapsedTree) chomskyNormalForm(cnfTree) # convert the tree to CNF with parent annotation (one level) and horizontal smoothing of order two parentTree = deepcopy(collapsedTree) chomskyNormalForm(parentTree, horzMarkov = 2, vertMarkov = 1) # convert the tree back to its original form (used to make CYK results comparable) original = deepcopy(parentTree) unChomskyNormalForm(original) # convert tree back to bracketed text sentence2 = toTreebank(original) print "Sentences the same? ", sentence == sentence2 draw_trees(tree, collapsedTree, cnfTree, parentTree, original)
from nltk_lite.parse import bracket_parse from pprint import pprint sent = '(S (NP Lee)(VP (V saw)(NP the dog)))' tree = bracket_parse(sent) pprint(tree.pp()) #tree.draw()