1 try:
2 set
3 except:
4 from sets import Set
5 set = Set
6
7 import multivalued_dictionary, supertuple
8
14
16 print 'Start Cat: %s' % self.start_cat
17 print 'Rules: %s' % self.rules
18 print 'Lexicon: %s' % self.lexicon
19
21 self.nonterminals = self.rules.keys()
22
24 flat =[]
25 for L in self.lexicon.values():
26 flat += L
27 self.preterminals = set(flat)
28
30 """word is a string. Return a list of
31 parts of speech for this word"""
32 try:
33 return self.lexicon[word]
34 except KeyError:
35 raise KeyError, "Unknown word: '%s' " % (word,)
36
37
38
41 self.rules={"s": [["np","vp"],["aux","np","vp"]],
42 "np": [["det","nom"],["nom"],["np","pp"]],
43 "vp":[["v"],["v","np"]],
44 "pp":[["p","np"]],
45 "nom":[["n"]]}
46 self.lexicon={"walk":["v","n"],
47 "the":["det"],
48 "dogs":["n"],
49 "dog":["n"],
50 "park":["v","n"],
51 "has":["aux"],
52 "have":["aux"],
53 "in":["p"]}
54 Grammar.__init__(self, "s")
55
56
59 self.start_cat="s"
60 self.rules={"s": [["np","vp"]],
61 "vp":[["vbz","np"],["vbz","np","pp"],["vbz","np","pp","pp"]],
62 "vpg":[["vbg","np"]],
63 "np": [["dt","nbar"],["nbar"],["np","cc","np"]],
64 "nbar":[["ap","nbar"],["nbar","pp"],["vpg"],["n"],["n","n"]],
65 "pp":[["p","np"]],
66 "ap":[["rb","a"],["a"]],
67 }
68 self.lexicon={"sees":["vbz"],
69 "the":["dt"],
70 "a":["dt"],
71 "agency":["n"],
72 "use":["n"],
73 "codes":["n"],
74 "way":["n"],
75 "mail":["n"],
76 "volume":["n"],
77 "labor":["n"],
78 "costs":["n"],
79 "of":["p"],
80 "as":["p"],
81 "widespread":["a"],
82 "growing":["a"],
83 "handling":["vbg"],
84 "controlling":["vbg"],
85 "rapidly":["rb"],
86 "and":["cc"]}
87 Grammar.__init__(self)
88