-
Notifications
You must be signed in to change notification settings - Fork 2.9k
/
event.fcfg
72 lines (56 loc) · 2.79 KB
/
event.fcfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
## Natural Language Toolkit: event.fcfg
##
## Illustrating Davidson-style event semantics
##
## Author: Ewan Klein <ewan@inf.ed.ac.uk>
## URL: <http://nltk.sourceforge.net>
## For license information, see LICENSE.TXT
% start S
############################
# Grammar Rules
#############################
S[sem = <exists e.?subj(e,?vp)>] -> NP[num=?n,sem=?subj] VP[num=?n,sem=?vp]
NP[num=?n,sem=<?det(?nom)> ] -> Det[num=?n,sem=?det] Nom[num=?n,sem=?nom]
NP[loc=?l,num=?n,sem=?np] -> PropN[loc=?l,num=?n,sem=?np]
Nom[num=?n,sem=?nom] -> N[num=?n,sem=?nom]
Nom[num=?n,sem=<?pp(?nom)>] -> N[num=?n,sem=?nom] PP[sem=?pp]
VP[num=?n,sem=?v] -> IV[num=?n,sem=?v]
VP[num=?n,sem=<?v(?obj)>] -> TV[num=?n,sem=?v] NP[sem=?obj]
VP[num=?n,sem=<?v(?obj,?pp)>] -> DTV[num=?n,sem=?v] NP[sem=?obj] PP[+to, sem=?pp]
VP[num=?n,sem=<?pp(?vp)>] -> VP[num=?n,sem=?vp] PP[sem=?pp]
VP[num=?n,sem=<?adv(?vp)>] -> VP[num=?n,sem=?vp] Adv[sem=?adv]
PP[sem=<?p(?np)>] -> P[loc=?l,sem=?p] NP[loc=?l,sem=?np]
#############################
# Lexical Rules
#############################
PropN[-loc,num=sg,sem=<\e R.R(e,angus)>] -> 'Angus'
PropN[-loc,num=sg,sem=<\e R.R(e,pat)>] -> 'Pat'
PropN[-loc,num=sg,sem=<\e R.R(e,irene)>] -> 'Irene'
PropN[-loc,num=sg,sem=<\e R.R(e,cyril)>] -> 'Cyril'
PropN[+loc, num=sg,sem=<\e R.R(e,stockbridge)>] -> 'Stockbridge'
NP[-loc, num=sg, sem=<\P.\x.P(x)>] -> 'who'
Det[num=sg,sem=<\P R e.all x.(P(x) -> R(e,x))>] -> 'every'
Det[num=pl,sem=<\P R e.all x.(P(x) -> R(e,x))>] -> 'all'
Det[sem=<\P R e.exists x.(P(x) & R(e,x))>] -> 'some'
Det[num=sg,sem=<\P R e.exists x.(P(x) & R(e,x))>] -> 'a'
N[num=sg,sem=<boy>] -> 'boy'
N[num=pl,sem=<boy>] -> 'boys'
N[num=sg,sem=<girl>] -> 'girl'
N[num=pl,sem=<girl>] -> 'girls'
N[num=sg,sem=<bone>] -> 'bone'
N[num=sg,sem=<dog>] -> 'dog'
IV[num=sg,sem=<\e x.(bark(e) & agent(e,x))>,tns=pres] -> 'barks'
IV[num=pl,sem=<\e x.(bark(e) & agent(e,x))>,tns=pres] -> 'bark'
IV[num=sg,sem=<\e x.(walk(e) & agent(e,x))>,tns=pres] -> 'walks'
IV[num=pl,sem=<\e x.( walk(e) & agent(e,x))>,tns=pres] -> 'walk'
TV[num=sg,sem=<\X y.X(\e x.(chase(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'chases'
TV[num=pl,sem=<\X y.X(\e x.(chase(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'chase'
TV[num=sg,sem=<\X y.X(\e x.(see(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'sees'
TV[num=pl,sem=<\X y.X(\e x.(see(e) & agent(e,y) & patient(e,x)))>,tns=pres] -> 'see'
DTV[num=sg,sem=<\Y X x.X(\z.Y(\e y.(give(e) & agent(e,x) & theme(e,y) & recip(e,z))))>,tns=pres] -> 'gives'
DTV[num=pl,sem=<\Y X x.X(\z.Y(\e y.(give(e) & agent(e,x) & theme(e,y) & recip(e,z))))>,tns=pres] -> 'give'
P[+loc,sem=<\X P e.X(\y.(P(e) & in(e,y)))>] -> 'in'
P[-loc,sem=<\X P e.X(\y.(P(e) & with(e,y)))>] -> 'with'
P[+to,sem=<\X.X>] -> 'to'
Adv[sem=<\R e x.(slow(e) & R(e,x))>] -> 'slowly'
Adv[sem=<\R e x.(thoughtful(e) & R(e,x))>] -> 'thoughtfully'