2:- module(punctuation,[semlex_punct/4]). 3 4:- use_module(boxer(slashes)). 5:- use_module(boxer(categories),[category/3]). 6:- use_module(library(lists),[member/2]). 7:- use_module(semlib(options),[option/2]). 8 9 10/* -------------------------------------------------------------- 11 Aux predicates 12-------------------------------------------------------------- */ 13 14punctuation('.'). 15punctuation(','). 16punctuation(':'). 17punctuation(';'). 18punctuation('LQU'). 19punctuation('RQU'). 20punctuation('LRB'). 21punctuation('RRB'). 22punctuation('LSB'). 23punctuation('RSB'). 24punctuation('LCB'). 25punctuation('RCB'). 26 27 28/* -------------------------------------------------------------- 29 Punctuation 30-------------------------------------------------------------- */ 31 32semlex_punct(t:_\s:_,_,_,Sem):- !, 33 Sem = lam(S,app(S,lam(_,drs([],[])))). 34 35/* -------------------------------------------------------------- 36 Punctuation (tuples) 37 38semlex_punct(Cat,POS,Index,Sem):- 39 option('--semantics',tuple), 40 punctuation(POS), 41 member(Cat,[s:X\s:X,s:X/s:X,np\np,np/np]), !, 42 Sem = lam(S,lam(F,app(S,lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E)))))). 43 44semlex_punct(Cat,POS,Index,Sem):- 45 option('--semantics',tuple), 46 punctuation(POS), 47 member(Cat,[n:X/n:X,n:X\n:X,pp/pp,pp\pp]), !, 48 Sem = lam(P,lam(Y,merge(drs([],[Index:pred(Y,punctuation,a,42)]),app(P,Y)))). 49 50semlex_punct(Cat,POS,Index,Sem):- 51 option('--semantics',tuple), 52 punctuation(POS), 53 category(vpadv,Cat,_), !, 54 Sem = lam(X,lam(Q,lam(F,app(app(X,Q),lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E))))))). 55 56semlex_punct(Cat,POS,Index,Sem):- 57 option('--semantics',tuple), 58 punctuation(POS), 59 member(Cat,[np\np, np/np]), !, 60 Sem = lam(Q,lam(P,app(Q,lam(X,merge(drs([],[Index:pred(X,punctuation,a,42)]), 61 app(P,X)))))). 62 63semlex_punct(Cat,POS,Index,Sem):- 64 option('--semantics',tuple), 65 punctuation(POS), 66 member(Cat,[((s:X\np)/(s:X\np))/((s:X\np)/(s:X\np)), 67 ((s:X\np)/(s:X\np))\((s:X\np)/(s:X\np)), 68 ((s:X\np)\(s:X\np))\((s:X\np)\(s:X\np)), 69 ((s:X\np)\(s:X\np))/((s:X\np)\(s:X\np))]), !, 70 Sem = lam(AV,lam(VP,lam(NP,lam(F,app(app(app(AV,VP),NP),lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E)))))))). 71 72semlex_punct(Cat,POS,Index,Sem):- 73 option('--semantics',tuple), 74 punctuation(POS), 75 member(Cat,[(s:X/s:X)/(s:X/s:X), 76 (s:X/s:X)\(s:X/s:X), 77 (s:X\s:X)/(s:X\s:X), 78 (s:X\s:X)\(s:X\s:X)]), !, 79 Sem = lam(M,lam(S,lam(F,app(app(M,S),lam(E,merge(drs([],[Index:pred(E,punctuation,a,42)]),app(F,E))))))). 80 81semlex_punct(Cat,POS,Index,Sem):- 82 option('--semantics',tuple), 83 punctuation(POS), 84 member(Cat,[(np\np)/(np\np), 85 (np\np)\(np\np), 86 (np/np)/(np/np)]), !, 87 Sem = lam(M,lam(Q,lam(P,app(app(M,Q),lam(X,merge(drs([],[Index:pred(X,punctuation,a,42)]), 88 app(P,X))))))). 89-------------------------------------------------------------- */ 90 91semlex_punct(Cat,POS,_Index,Sem):- 92 member(Cat,[(s:X/s:X)/(s:Y/s:Y), 93 (s:X/s:X)/(s:Y\s:Y), 94 (s:X/s:X)\(s:Y/s:Y), 95 (s:X/s:X)\(s:Y\s:Y), 96 (s:X\s:X)/(s:Y\s:Y), 97 (s:X\s:X)/(s:Y/s:Y), 98 (s:X\s:X)\(s:Y/s:Y), 99 (s:X\s:X)\(s:Y\s:Y)]), 100 punctuation(POS), !, 101 Sem = lam(P,P). 102 103semlex_punct(C\C,POS,_Index,Sem):- 104 punctuation(POS), !, 105 Sem = lam(X,X). 106 107semlex_punct(C/C,POS,_Index,Sem):- 108 punctuation(POS), !, 109 Sem = lam(X,X)