1 / 30

grammatiker

grammatiker. 21.1 G 1 (BBS 7). dagens föreläsning. definitioner kontextfria regler (cfg) hur implementerar man cfg i prolog? vänsterrekursion. definitioner. några lingvistiska förkortningar: s = sentence np = noun phrase vp = verb phrase det = determiner n = noun v = verb. np.

leland
Download Presentation

grammatiker

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. grammatiker 21.1 G 1 (BBS 7) Pontus Johansson [ponjo@ida.liu.se]

  2. dagens föreläsning • definitioner • kontextfria regler (cfg) • hur implementerar man cfg i prolog? • vänsterrekursion Pontus Johansson [ponjo@ida.liu.se]

  3. definitioner • några lingvistiska förkortningar: s = sentence np = noun phrase vp = verb phrase det = determiner n = noun v = verb Pontus Johansson [ponjo@ida.liu.se]

  4. np • np = noun phrase (noun group) pelle flyger… en skabbig hund grubblar… hon sparras… tre bra band från seattle spelar… en tuff tvättbjörn som oskar äter… Pontus Johansson [ponjo@ida.liu.se]

  5. np (forts.) • ett ”bevis” på att vissa ord hänger ihop inom samma np tycks alltså vara att de uppstår i liknande syntaktiska kontexter (t ex följs av ett verb) • men individuella ord inom frasen behöver nödvändigtvis inte kunna det… Pontus Johansson [ponjo@ida.liu.se]

  6. np (forts.) *skabbig grubblar… *från spelar… *tuff äter… Pontus Johansson [ponjo@ida.liu.se]

  7. modell • matematiska modeller • kontextfri grammatik (cfg), eller • frasstrukturgrammatik, och sägs vara i • backus-naur form (bnf) • grundidé är hur som helst: • regler + ett lexikon Pontus Johansson [ponjo@ida.liu.se]

  8. definitioner (forts.) • ett språk är en ändlig mängd satser • en sats är en lista av terminaler… • …som ingår i ett alfabete (en mängd av terminaler) • en grammatik är en ändlig samling regler som definierar ett språk • regler består av terminaler och icke-terminaler Pontus Johansson [ponjo@ida.liu.se]

  9. regler En kontextfri regel har formen: X0 -> X1 … Xn där X0 är en icke-terminal och Xi är terminaler ELLER icke-terminaler Pontus Johansson [ponjo@ida.liu.se]

  10. regler (forts.) • en icke-terminal återfinns i vänsterled (kallas också fras eller kategori) • en terminal finns aldrig i vänsterledet, och utgörs typiskt av ord/element i lexikon/alfabete. Pontus Johansson [ponjo@ida.liu.se]

  11. exempel s -> np vp np -> det n vp -> v np det -> en n -> hund n -> bil v -> jagar ”en hund jagar en bil” Pontus Johansson [ponjo@ida.liu.se]

  12. np vp icke-terminaler v np det n det n en hund jagar en bil terminaler trädrepresentation (’parse tree’) s -> np vp s np -> det n vp -> v np det -> en n -> hund n -> bil v -> jagar Pontus Johansson [ponjo@ida.liu.se]

  13. cfg i prolog (1) s([en,hund,jagar,en,bil]) np([en,hund]) vp([jagar,en,bil]) append( [en,hund], [jagar,en,bil], [en,hund,jagar,en,bil] ) % append version append([],L,L). append([H|T],L2,[H|L3]) :- append(T,L2,L3). s(Z) :- np(X), vp(Y), append(X,Y,Z). np(Z) :- det(X), n(Y), append(X,Y,Z). vp(Z) :- v(X), np(Y), append(X,Y,Z). det([en]). n([hund]). n([bil]). v([jagar]). np([en,hund]) det([en]) n([hund]) append([en],[hund],[en,hund]) vp([jagar,en,bil]) v([jagar]) np([en,bil]) append([jagar],[en,bil],[jagar,en,bil]) Pontus Johansson [ponjo@ida.liu.se]

  14. s np vp Rest List2 List1 cfg i prolog (2) % difference list version s(List1, Rest) :- np(List1, List2), vp(List2, Rest). np(List,Rest) :- det(List,List2), n(List2,Rest). vp(List,Rest) :- v(List,List2), np(List2,Rest). det([en|Rest],Rest). n([hund|Rest],Rest). v([jagar|Rest],Rest). n([bil|Rest],Rest). skillnaden mellan List1 och Rest är en s om: skillnaden mellan List1 och List2 är en np, och skillnaden mellan List2 och Rest är en vp. Pontus Johansson [ponjo@ida.liu.se]

  15. körning… ?- s([en,bil,jagar,en,hund],[]). yes ?- s([en,bil,jagar,en,hund|[]],[]). yes ?- s([en,bil,jagar,en,hund,jättefort],[]). no ?- s([en,bil,jagar,en,hund,jättefort],Rest). Rest = [jättefort] ?- s([en,bil,jagar,en,hund,jättefort],[jättefort]). yes Pontus Johansson [ponjo@ida.liu.se]

  16. s [en,hund] [jagar,en,bil] [jättefort] List2 List1 Pontus Johansson [ponjo@ida.liu.se]

  17. cfg i prolog • dcg = definite clause grammar (nästa föreläsning!) • ”syntaktiskt socker för att dölja differenslistornas notation” Pontus Johansson [ponjo@ida.liu.se]

  18. cfg i prolog (3) % append version append([],L,L). append([H|T],L2,[H|L3]) :- append(T,L2,L3). s(Z) :- np(X), vp(Y), append(X,Y,Z). np(Z) :- det(X), n(Y), append(X,Y,Z). vp(Z) :- v(X), np(Y), append(X,Y,Z). det([en]). n([hund]). n([bil]). v([jagar]). %difference list version s(List1, Rest) :- np(List1, List2), vp(List2, Rest). np(List,Rest) :- det(List,List2), n(List2,Rest). vp(List,Rest) :- v(List,List2), np(List2,Rest). det([en|Rest],Rest). n([hund|Rest],Rest). v([jagar|Rest],Rest). n([bil|Rest],Rest). % DCG (CFG) version s --> np,vp. np --> det,n. vp --> v,np. det --> [en]. n --> [hund]. v --> [jagar]. n --> [bil]. Pontus Johansson [ponjo@ida.liu.se]

  19. mer cfg • hur utökar vi vårt språk? vp --> v, np, adv . adv --> [jättefort]. Pontus Johansson [ponjo@ida.liu.se]

  20. körning… ?- s([en,bil,jagar,en,hund,Hur],[]). Hur = jättefort Pontus Johansson [ponjo@ida.liu.se]

  21. körning… • språket blir dubbelt så stort! ?- s(X,[]). X = [en,bil,jagar,en,bil] ? ; X = [en,bil,jagar,en,hund] ? ; X = [en,bil,jagar,en,bil,jättefort] ? ; X = [en,bil,jagar,en,hund,jättefort] ? ; X = [en,hund,jagar,en,bil] ? ; X = [en,hund,jagar,en,hund] ? ; X = [en,hund,jagar,en,bil,jättefort] ? ; X = [en,hund,jagar,en,hund,jättefort] ? ; no Pontus Johansson [ponjo@ida.liu.se]

  22. användning • parsning • testar om en sträng accepteras av grammatiken (dvs om den ”känns igen”) • egentligen ska parsern ge info om strukturen (t ex genom ett parseträd) också… ?- s([en,hund,jagar,en,bil],[]). yes • generering • låter grammatiken generera strängar (parsningens motsats) ?- s(Generated,[]). Generated = [en,hund,jagar,en,bil] Pontus Johansson [ponjo@ida.liu.se]

  23. % satser s --> np, vp . % verbfraser vp --> v . vp --> v, np . vp --> vp, pp . % nominalfraser np --> namn . np --> pron . np --> n . np --> det, n . % prepositionsfraser pp --> prep, np . en grammatik till Pontus Johansson [ponjo@ida.liu.se]

  24. en grammatik till (forts.) n --> [hund] . n --> [kastrull] . det --> [en] . v --> [kastar] . v --> [sover] . namn --> [pelle] . pron --> [han] . prep --> [på] . Pontus Johansson [ponjo@ida.liu.se]

  25. några exempel en hund kastar en kastrull på pelle pelle sover han kastar en hund på en kastrull en hund sover pelle på han en kastrull kastar etc… Pontus Johansson [ponjo@ida.liu.se]

  26. vp --> vp, pp. kan få prolog i oändlig loop vp(List,Rest) :- vp(List,List2), pp(List2,Rest). vänsterrekursion vp(List,… vp(List,… vp(List,… vp(List,… etc… Pontus Johansson [ponjo@ida.liu.se]

  27. vp --> v . vp --> v, np . vp --> vp, pp . vad innebär detta? ”efter varje vp kan en pp följa” vänsterrekursion (forts.) vp --> v, somePP . % skriv om med ”somePP” vp --> v, np, somePP . % skriv om med ”somePP” somePP --> [] . somePP --> pp . Pontus Johansson [ponjo@ida.liu.se]

  28. vänsterrekursion (forts.) • obs! vänsterrekursion är ett prolog-problem (alltså inte ett lingvistiskt problem) • deklarativt är det ok • procedurellt är det inte ok • alla vänsterrekursiva grammatiker kan skrivas om till icke-vänsterrekursiva grammatiker Pontus Johansson [ponjo@ida.liu.se]

  29. n --> [dog] . n --> n1, [t2], n3, [t4] . n([dog|Rest],Rest) . n(List1, Rest) :- n1(List1, [t2|List3]), n3(List3, [t4|Rest]). mixa terminaler och icke-terminaler Pontus Johansson [ponjo@ida.liu.se]

  30. nästa föreläsning • mer om dcg • argument • prologanrop från dcg • och lite till • litteratur • 21.2 • G 2.3 • M 8.1.2 • (BBS 8) Pontus Johansson [ponjo@ida.liu.se]

More Related