UPPALA UIVERITET http://stp.ling.uu.se/~matsd/uv/uv05/ads1/ Institutionen för lingvistik och filologi Mats Dahllöf mats.dahllof@lingfil.uu.se Algoritmer för datorlingvistisk semantik I, Föreläsningsanteckningar, December 2005 Kompositionell semantik och λ-kalkyl Dessa föreläsningsanteckningar är i en icke slutgiltig form. Perspektivet är lite annorlunda än det i Blackburn and Bos (2005). 1 Inledning Den typ av semantik som skall beskrivas här är känd under beteckningen Montaguegrammatik efter upphovsmannen Richard Montague (1930 1970), som arbetade med dessa saker i slutet av 1960-talet. Föreliggande anteckningar presenterar dessa idéer på ett mycket kortfattat sätt och i en enklare variant än originalet. Den klassiska referensen är Montagues artikel The Proper Treatment of Quantification in Ordinary English (1970). Den och hans övriga arbeten om semantik finns samlade i boken Formal Philosophy: elected Papers of Richard Montague. Montague var intresserad av s.k. kompositionell semantik. En kompositionell semantik måste baseras på en grammatisk frasstrukturanalys. Till ord och fraser måste sedan semantiska värden kopplas. Dessa skall kunna ligga till grund för en förklaring av hur frasers betydelser kan räknas ut utifrån deras delars betydelser Montague kom på att den den så kallade lambda-kalkylen, som logikern Alonzo Church hade uppfunnit kring 1930, var användbar för kompositionell semantik. Montagues metod innebär att vi lägger till en ny variabelbindande operator till predikatlogiken 1, λ (lambda-operatorn eller λ-operatorn, efter den grekiska bokstav som representerar den). Denna tillåter oss att skapa funktioner baserade på predikatlogikens uttryck. De variabler som denna operator binder kan svara mot vilka uttryck som helst. Predikatlogik med λ-operatorn bildar en typ av λ-kalkyl, som är ett rikare språk än ren predikatlogik. λ-operatorn är alltså precis som kvantifikatorerna och en variabelbindande operator. En viktig principell skillnad är dock att och i en första ordningens logik endast binder individvariabler (d.v.s. av typen e), medan λ även kan binda variabler av alla andra typer. (λ-variablerna kan också vara individvariabler.) är vi inför λ-operatorn behöver vi alltså också införa variabler av godtycklig typ. Ett uttryck med λ som huvudtecken, ett s.k. λ-uttryck, kan appliceras på ett annat uttryck. Om λv.u är ett λ-uttryck och A vilket annat uttryck som helst, så är λ v.u@a ett uttryck. Vi kan kalla dessa uttryck applikationsuttryck, eftersom 1 Montague arbetade med en rikare intensionell logik, som inte kommer att beskrivas här. 1
de representerar en funktion λ-uttryckets semantiska värde applicerad på ett argument. Vi kan nu formulera syntaxen för λ-uttryck på ett mer restriktivt sätt, som kräver att typerna måste stämma överens: Om λv.u är ett λ-uttryck av typen T 1,T 2 och A ett uttryck av typen T 1, så är λv.u@a ett uttryck av typen T 2. Vi kan förstå λ- och applikationsuttryck i syntaktiska termer så här (även direkt modellteoretisk tolkning av λ- och applikationsuttryck är möjligt): [[λv.u@a]] M,g = [[U[v/A]]] M,g, där uttrycket U[v/A] erhålls genom att man byter ut varje obunden förekomst av variabeln v i uttrycket U mot A. (Obunden d.v.s. som inte binds av någon annan operator.) Värdet hos [[λv.u@a]] M,g är bestämt endast om värdet hos [[U[v/A]]] M,g är bestämt. (Annars är [[λv.u@a]] M,g obestämt, vilket kan inträffa om vi sätter samman applikationsuttryck på fel sätt. Typning (se nedan) kan förhindra detta. Denna semantiska regel kommer alltså bara att bestämma applikationsuttrycks värde om de är uppbyggda på ett sätt som stämmer med predikatlogiken. Ovanstående syntaktiska princip tillåter oss att formulera nonsens som inte gör det. Detta går, som sagt, att förhindra, men föreliggande slapphänta syntax kan duga om vi själva ser till att bara formulera meningsfulla uttryck. Den konvertering som semantiken nämner från λ v.u@a till uttrycket U[v/A], som erhålls genom att man byter ut varje obunden förekomst av variabeln v i U mot A kallas β-konvertering. β-konvertering innebär ofta att ett uttryck förenklas (förkortas). I applikationsuttrycket λ x.h(x) (x)@p t.ex. kommer variabeln x att associeras med argumentet p. Vid dess β-konvertering byts x ut mot p och λx försvinner. Detta innebär att [[λx.h(x) (x)@p]] M,g = [[(H(x) (x))[x/p]]] M,g = [[H(p) (p)]] M,g (som en följd av den semantiska principen). β-konvertering kommer i de typiska fallen att vara ett sätt att göra semantiska representationer mer kompakta och lättlästa. atsbetydelser kommer här att representeras av logiska satser utan λ-uttryck. Jag sätter in parenteser i formlerna på ett icke-strikt sätt där jag tror det behövs för att entydiggöra den avsedda strukturen. Argumentet till ett λ-uttryck kan i sin tur vara ett λ-uttryck: [[(λq.q@p)@(λx.h(x) (x))]] M,g = [[(Q@p)[Q/λx.H(x) (x)]]] M,g = [[λx.h(x) (x)@p]] M,g = [[(H(x) (x))[x/p]]] M,g [[H(p) (p)]] M,g (β-konvertering) (substitution utförd) (β-konvertering) (substitution utförd) I det första steget av β-konverteringen ovan, så stryks λ Q. edan ersätts Q mot λ x.h(x) (x). Varje steg i β-konverteringen eliminerar alltså en förekomst av λ. 2
Dessa exempel visar att λ x.(h(x) (x)) kan kombineras med p till H(p) (p). Detta skulle kunna tolkas som Pompe hoppar och skäller. Vad betyder då λx.(h(x) (x))? Det är en funktion som appliceras på en individ och säger att den hoppar och skäller. Den kan alltså förstås som den sammansatta egenskapen att hoppa och skälla (alltså ett predikat vars extension är snittet av de två enkla predikatens extensioner). Tidigare har vi bara beaktat och i betydelsen (sanningsfunktionen konjunktion), men i detta exempel sätter och ihop två predikat och inte två sanningsvärden. I detta sammanhang är det motiverat att anta att och betyder λ.λy.λx.((x) Y(x)). Om hoppar och skäller byggs upp i två steg genom att vi först kombinerar hoppar och och och sedan hoppar och och skäller, så kommer denna analys att gå ihop. λ.λy.λ x.((x) Y(x))@H för och och hoppar. Detta blir λy.λ x.(h(x) Y(x)) för frasen hoppar och Detta uttryck kan sedan kombineras med skäller: λy.λ x.(h(x) Y(x))@ vilket β-konverteras till λx.h(x) (x) Uttrycket λ x.(h(x) (x)) (för hoppar och skäller) kan, som vi ovan såg, kombineras med en individkonstant till en sats. Fler exempel I exemplen ovan har vi haft Pompe som subjekt. I sådana fall, då subjektet bara refererar till en individ, kan vi tänka oss att predikatet är en funktion som appliceras på den individ som subjektet representerar. ubjektets typ är alltså e, predikatets e, t och satsens t. Dessa typer passar ju ihop. Men subjekt kan också vara av typen en katt och alla boxrar. Ett predikat som skäller kan inte direkt appliceras på alla boxrar, eftersom alla boxrar skäller innebär att varje enskild boxer skäller. Vi kan lösa detta problem genom att helt enkelt vända på steken och anta att subjektets semantiska värde appliceras på predikatets. Predikatets typ är då, som tidigare, e,t, men subjektets måste bli e,t,t. En fras som alla boxrar kan alltså tänkas representera en funktion som appliceras på ett predikat. Ordet alla kombinerar då rimligtvis två predikat (t.ex. boxrar och skäller) till en sats (t.ex. alla boxrar skäller) i två steg. Denna tankegång kan formaliseras sålunda: λ.λy. x[(x) Y (x)] alla (från lexikon) e,t, e,t,t λ.λy. x[(x) Y (x)]@b = alla boxrar e,t,t λy. x[b(x) Y(x)] β-konverterad form λy. x[b(x) Y(x)]@ = alla boxrar skäller t x[b(x) (x)] β-konverterad form 3
atsen Alla boxrar skäller får alltså rätt analys, x[b(x) (x)], och rätt typ, genom denna procedur. Determinatorer som alla, någon och ingen kan behandlas på i princip samma sätt. De knyter samman två enställiga predikat till en sats. De får följande uttydningar: varje λ.λy. x[(x) Y (x)] e,t, e,t,t alla λ.λy. x[(x) Y (x)] e,t, e,t,t någon λ.λy. x[(x) Y(x)] e,t, e,t,t några λ.λy. x[(x) Y(x)] e,t, e,t,t ingen λ.λy. x[(x) Y(x)] e,t, e,t,t inga λ.λy. x[(x) Y(x)] e,t, e,t,t otera att numerus, intressant nog, verkar vara oberoende av själva kvantifikationens innebörd. Dessa determinatorer kan förenas med ett substantiviskt huvudord så att följande uttryck erhålles (där en β-konvertering givit oss den resulterande representationen): alla hundar λy. x[h(x) Y (x)] e,t,t någon hund λy. x[h(x) Y(x)] e, t, t ingen hund λy. x[h(x) Y(x)] e, t, t Vi har hittills betraktat orden alla, någon och ingen i deras användning som determinatorer. Denna användning kännetecknas av att de förekommer förenade med ett substantiv. De kan även användas självständigt, som indefinita pronomina. De får då följande uttydningar: alla/allting λy. x[y (x)] e, t, t någon/något λy. x[y (x)] e, t, t ingen/ingenting λy. x[y(x)] e, t, t Denna analys är lite förenklad såtillvida att den inte redogör för skillnaden mänsklig/icke-mänsklig, som avspeglas i valet mellan t.ex. alla/allting. Denna skulle dock lätt kunna fångas genom att man t.ex. förstår alla som alla människor och allting som alla ting. Ovanstående semantiska värden för indefinita pronomina kan lätt kombineras med ett enställigt predikat, exempelvis som i följande satser: Allting flyter. ågon sover. Ingen sover. x[f(x)] x[(x)] x[(x)] Dessa analyser förutsätter, som sagt, att subjektet står för en funktion som appliceras på ett predikat (i semantisk mening). är subjektet stod för en enskild individ (Pompe) var det i exemplet ovan tvärtom. Detta kan framstå som en komplikation och en inkonsekvens. Den är dock enkel att undvika: Det går att omtolka även ett subjekt som Pompe så att det stämmer med denna idé. Vi får då göra så här: 4
λy.y (p) λy.y (p)@ = (p) ny analys av Pompe Pompe skäller β-konverterad form. Jämför: ingen hund skäller, som översätts till λy. x[h(x) Y(x)]@, som förenklas till x[h(x) (x)]. Dessa förhållandevis enkla exempel har visat hur λ-operatorn kan användas för att få den kompositionella semantiken att fungera. Precisa regler kan formuleras genom att denna semantik integreras i en generativ grammatik. Grammatik och kompositionell semantik En kompositionell semantik baserad på λ-kalkyl kan kopplas samman med en formell grammatik, t.ex. en (kontextfri) frasstrukturgrammatik. I en ren frasstrukturgrammatik tilldelas språkliga uttryck endast en syntaktiskt kategori. Denna kan dock givetvis kompletteras med ett semantiskt värde. (Träden är bara matematiska konstruktioner, s.k. grafer, som vi kan utöka bäst vi vill med information.) Den semantiska operation som svarar mot en frasstrukturregel kan då sammanfattas genom att vi skriver de semantiska värdena under kategorisymbolerna. Följande regler uttrycker en kompositionell semantik för ett litet fragment av svenska. Tillhörande lexikon och exempel ges nedan. (P) AP (Y) P (R1) IV (R2) A (R3) E Q(λw.Y(w) Z(w)) Y Q AP Y Z (R4) (R5) (R6) Reglerna (R1) och (R5) har illustrerats ovan. (R2), (R3) och (R4) säger bara att enordiga fraser har samma semantiska värde som sitt enda ord. (R6) tar hand om adjektivattribut. De semantiska värdena representeras här av ett slags metavariabler. otationen visar hur de semantiska värdena skall kombineras. Kategorierna till höger står för de delar (konstituenter) som en konstruktion består av. Varje del har ett semantiskt värde. Och dessa värden kombineras till hela konstruktionens semantiska värde, som alltså knyts till vänsterledet i regeln. Givetvis behöver vi ett lexikon med ord också. Varje ord i lexikonet definieras av sin form (stavning och/eller uttal), sin syntaktiska kategori och sitt semantiska värde. 5
Den lilla exempelgrammatik som tagits upp här kan t.ex. kompletteras med följande likaledes lilla lexikon: skäller: IV hundar: H gäspar: IV G katter: K alla: λ.λy. x[(x) Y(x)] trötta: A T några: λ.λy. x[(x) Y(x)] Karl: E λy.y (k) inga: λ.λy. x[(x) Y(x)] Pompe: E λy.y (p) Givet en grammatik och ett lexikon kan vi rent mekaniskt härleda semantiska värden för fraser och satser. Vi kan ta reglerna och sätta in ord och semantiska värden från lexikonet. Låt oss se på den kompositionella semantik vi kan knyta till trädet för inga trötta hundar sover. Regel (R3) tillämpas på ett enkelt sätt: AP trötta T A trötta T Regel (R6) kan sedan koppla ihop en determinator, den just härledda AP:n och ett substantiv. Detta kan t.ex. bli inga trötta hundar: Q(λw.Y (w) Z(w)) inga trötta hundar λ.λy. x[(x) Y(x)](λw.T (w) H(w)) Q inga λ.λy. x[(x) Y(x)] AP Y trötta T Z hundar H Resultatet, d.v.s. denna :s semantiska värde, kan β-konverteras i två steg: λ.λy. x[(x) Y(x)](λw.T(w) H(w)) = λy. x[λw.t(w) H(w)(x) Y(x)] = λy. x[(t(x) H(x)) Y(x)] ännu en trivial regelapplikation av (R2) ger oss en : skäller IV skäller Därmed har vi en och en att tillämpa (R1) på: 6
(P) inga trötta hundar skäller λy. x[(t(x) H(x)) Y(x)]() inga trötta hundar λy. x[(t (x) H(x)) Y(x)] P skäller Och slutligen kan vi förenkla -uttryckets semantiska värde: λy. x[(t(x) H(x)) Y(x)]() = x[(t(x) H(x)) (x)] Detta är den korrekta analysen av Inga trötta hundar skäller. Med hjälp av dessa regler och detta lexikon kan vi nu automatiskt beräkna den logiska analysen av ett antal satser. Regler av denna typ kan formuleras så att de täcker in betydligt större delar av ett språk. övningar (1) β-konvertering. Låt oss tänka oss att vi gör en lambdakalkyl utifrån aritmetikens språk, som kan ses som en första ordningens predikatlogik. Talen är entiteterna i domänen, enligt den aritmetiska tolkningen. Vi kan tänka oss att funktionerna (de fyra räknesätten) tar ett argument i taget, sålunda: + är av typen e, e, e. (tal till funktion från tal till tal). +(5), funktionen som adderar 5, är av typen e, e (tal till tal). +(5)(2), alltså 7, är av typen e (tal). u kan vi bilda nya typer av funktioner: λy.y (3), e, e, e, applicerar en e, e -funktion på talet 3. Exempelvis λy.y (3)@ + (5) = 8. λy.λz.y (3) + Z(3) blir en e,e, e,e,e. Förenkla dessa uttryck och räkna ut: (a) λy.λz.y(3) + Z(3)@ + (5)@ (2) (b) λy.y (7)(8)@+ (c) λx.λy.y (5)(x)@3@+ (d) λy.λz.y (Z(3)(4))(Z(1)(2))@ + @ (e) λy.λz.y(8) + Z(2)@ + (11)@ (7) (2) Hur kan transitiva konstruktioner behandlas? Vilka problem medför den mest naiva lösningen? Fungerar ej: (V) gillar: TV V TV G 7
G av typen e, e, t (två-ställig relation). (Determinator-substantiv-kongruens kan hanteras i syntaxen, men vi struntar i detaljerna.) Vi får då: gillar en katt blir λy. x[k(x) Y(x)]@G = x[k(x) G(x)] Ej välformat, då G(x) är av typen e, t. Bättre lösning: V () TV V gillar: TV λw.λx.w (G(x)) (Typ: e,t,t, e,t ) G fortfarande av typen e, e, t. Vi får nu: gillar en katt blir λw.λ z.w (G(z))@λY. x[k(x) Y(x)] = (Lambdakonvertering:) λ z.λy. x[k(x) Y (x)](g(z)) = (Lambdakonvertering:) λz. x[k(x) G(z)(x)] (Typ: e, t, som ett intransitivt verb. Verkar OK.) u blir Alla hundar gillar en katt: λy. x[h(x) Y (x)]@λz. x[k(x) G(z)(x)] = (Vi måste byta namn på ena x-variabeln, annars blandas de samman.) λy. x[h(x) Y (x)]@λz. y[k(y) G(z)(y)] = (Lambdakonvertering:) x[h(x) λz. y[k(y) G(z)(y)](x)] = (Lambdakonvertering:) x[h(x) y[k(y) G(x)(y)]] Det var detta vi ville ha! Problem: Kvantifikatorräckvidderna följer syntaxen. Detta är en annan läsning av exempelmeningen, som vi bör kunna få till: y[k(y) x[h(x) G(x)(y)]] Här är existenskvantifikationen överordnad allkvantifikationen. Problemet kräver en ganska sofistikerad lösning. References Blackburn, P, and Bos, J. (2005) Representation and Inference for atural Language, CLI/University of Chicago Press. Dowty, D. R., Wall, R. E., and Peters,. (1981) Introduction to Montague emantics, Dordrecht: Reidel. Jurafsky, D., and J. H. Martin (2000), peech and Language Processing. Upper addle River (ew Jersey): Prentice Hall. Montague, R. (1974) Formal Philosophy: elected Papers of Richard Montague, 8
ew Haven: Yale University Press. 9