1 / 56

Computerlinguistik

Computerlinguistik. 5. Vorlesung (10.11.2011). apl. Professor Dr. Ulrich Schade Fraunhofer-Institut für Kommunikation, Informationstechnik und Ergonomie ulrich.schade@fkie.fraunhofer.de. Computerlinguistik. Inhalt der Vorlesung. Einführung Methoden Tagging Formale Methoden Parsing

vic
Download Presentation

Computerlinguistik

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. Computerlinguistik 5. Vorlesung (10.11.2011) apl. Professor Dr. Ulrich Schade Fraunhofer-Institut für Kommunikation, Informationstechnik und Ergonomie ulrich.schade@fkie.fraunhofer.de

  2. Computerlinguistik Inhalt der Vorlesung Einführung Methoden Tagging Formale Methoden Parsing Ontologien Anwendungen Informationsextraktion Maschinelle Übersetzung Textanalyse

  3. Computerlinguistik Parsing – Definition “In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens (for example, words), to determine its grammatical structure with respect to a given (more or less) formal grammar. Parsing is also an earlier term for the diagramming of sentences of natural languages, and is still used for the diagramming of inflected languages, such as the Romance languages or Latin. The term parsing comes from Latin pars (ōrātiōnis), meaning part (of speech).” http://en.wikipedia.org/wiki/Parsing

  4. Computerlinguistik Parsing – Definition “[…] using a grammar to assign a (more or less detailed) syntactic analysis to a string of words.” John Carroll (2002). Parsing. In: Mitkov, R. (Ed.). The Oxford Handbook of Computational Linguistics. Oxford, UK: Oxford University Press, 2002.

  5. Computerlinguistik Parsing: Kontextfreie Grammatik Wir gehen davon aus, dass die Grammatik, auf der das Parsing beruhen soll, eine kontextfreie Grammatik im Sinne der Chomsky-Hierarchie ist. Regeln einer kontextfreien Grammatik haben (vgl. die Folien vom 27.10.2011) die Form A   (A ist ein nicht-terminales Symbol;  ist eine Sequenz aus terminalen und nicht-terimnalen Symbolen)

  6. Computerlinguistik Parsing: Kontextfreie Grammatik Beispiel einer kontextfreien Grammatik S  NP VP L= { VP  V NP Calvin dreams, Calvin hits, VP  V Hobbs dreams, Hobbs hits, Calvin hits Calvin, Calvin dreams Calvin, V  dreamsCalvin hits Hobbs, Calvin dreams Hobbs, V  hitsHobbs hits Calvin, Hobbs dreams Calvin, NP  CalvinHobbs hits Hobbs, Hobbs dreams Hobbs NP  Hobbs}

  7. Computerlinguistik Parsing: Kontextfreie Grammatik In der Literatur wurde sehr weitgehend diskutiert, ob natürliche Sprachen kontextfrei sind, also ob sie jeweils durch eine kontextfreie Grammatik erzeugt werden können. Eine Zusammenfassung dieser Diskussion findet man in Abschnitt 18.6 „Are natural languages context free?“ in Partee, ter Meulen und Wall (1990). Im Prinzip lautet die Antwort, dass es einigen natürlichen Sprachen Konstruktionen gibt, die erzwingen, dass sie kontextsensitiv erzeugt werden.

  8. Computerlinguistik Parsing: Kontextfreie Grammatik Als Beispiel für solche Konstruktionen gilt die „Überkreuzung“ in Nebensätzen des Schweizer Deutsch. Das Beispiel aus Partee et al. (1990, S. 504) lautet: Jan säit des mer em Hans es huus hälfed aastriche. Jan sagte, dass wir (dem) Hans das Haus an(zu)streichen helfen.

  9. Computerlinguistik Parsing: Kontextfreie Grammatik aber: “The fundamental thing that should be kept in mind is that the overwhelming majority of the structures of any natural languages can be elegantly and efficiently parsed using context-free parsing techniques.” (Gazdar & Mellish, 1983, S. 133) Aus diesem Grund beruhen in aller Regel Parser auf kontext-freien Grammatiken.

  10. Computerlinguistik Parsing: Kontextfreie Grammatik aber: Die in der Literatur untersuchte Fragestellung ist in mancher Hinsicht irreführend. Es wird untersucht, ob es für eine natürliche Sprache eine kontext-freie Grammatik G gibt, die sie erzeugt. Das muss keineswegs die Grammatik G‘ sein, die die Charakteristika der entsprechenden Sprache spiegelt (was immer das bedeutet). G und G‘ sind in diesem Fall schwach äquivalent.

  11. Computerlinguistik Parsing: Kontextfreie Grammatik Warum könnte man meinen, dass kontextsensitive Grammatiken natürliche Sprachen besser beschreiben? Es gibt kontextuelle Charakteristika etwa im Deutschen. So verlangen mehrere Verben für ihre Präpositionalobjekte spezifische Präpositionen. Ich freue mich auf die Ferien. Wir lachenüberden gelungenen Scherz.

  12. Computerlinguistik Parsing: Kontextfreie Grammatik Verben verlangen darüber hinaus das Vorhandensein bestimmter Objekte (oder schließen diese aus). *Es schneit Ägytpen. Es schneit. Pompeius erreicht Ägypten. *Pompeius erreicht. *Paul erläuft Franz den Pokal. Paul erläuft den Pokal. Paul schenkt Franz den Pokal *Paul schenkt den Pokal

  13. Computerlinguistik Parsing: Kontextfreie Grammatik Des weiteren gibt es Übereinstimmungen (in den Nebenkategorien) etwa innerhalb von Phrasen oder zwischen Subjekt und Prädikat. Clavin träumt. *Calvin träumen. der kleine Blumenstrauß *das kleine Blumenstrauß *der kleines Blumenstrauß *Das finden Sie in „TV Smart“, ihre Programmzeitschrift.

  14. Computerlinguistik Parsing: Kontextfreie Grammatik Die Probleme, die diese Charakteristika der natürlichen Sprachen auslösen, also der Ausschluss der „falschen“ Sätze, können im Prinzip innerhalb von kontextfreien Grammatiken gelöst werden. Die Lösungen sind aber nicht unbedingt elegant, weil der Bezug auf den Kontext indirekt hergestellt werden muss.

  15. Computerlinguistik Parsing: „Richtung“ des Parsing In Bezug auf die Richtung von Parsing unterscheiden wir zwei Hauptvarianten: „top down“ und „bottom up“. „Top down“ erfolgt durch Expansion des Startsymbols (S = Satz) mit dem Ziel, auf die Wortkette zu expandieren. „Bottom up“ geht von der Wortkette aus und versucht, diese auf das Startsymbol zu reduzieren.

  16. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „top down“ parsing S  NP VP S NP VP CalvinhitsHobbs

  17. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „top down“ parsing NP  Calvin S NP VP Calvin hitsHobbs

  18. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „top down“ parsing VP  V NP S NP VP V NP Calvin hitsHobbs

  19. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „top down“ parsing V  hits S NP VP V NP Calvin hits Hobbs

  20. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „top down“ parsing NP  Hobbs S NP VP V NP Calvin hits Hobbs

  21. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „bottom up“ parsing NP  Calvin NP Calvin hitsHobbs

  22. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „bottom up“ parsing V  hits NP V Calvin hits Hobbs

  23. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „bottom up“ parsing NP  Hobbs NP V NP Calvin hits Hobbs

  24. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „bottom up“ parsing VP  V NP NP VP V NP Calvin hits Hobbs

  25. Computerlinguistik Parsing: „top down“ vs. „bottom up“ Satz: Calvin hits Hobbs „bottom up“ parsing S  NP VP S NP VP V NP Calvin hits Hobbs

  26. Computerlinguistik Parsing: „top down“ vs. „bottom up“ • „Top down” hat ein Problem, wenn es rekursive Regeln der Form „A  A ” in der Grammatik gibt. Beispiel: NP  NP PP für „der Elefant auf dem Rennrad” … der Elefant auf dem Rennrad mit dem roten Aufkleber unter dem Vorderlicht … Solche Regeln können in „Top down”-Parsing-Programmen zu Endlosschleifen führen.

  27. Computerlinguistik Parsing: „top down“ vs. „bottom up“ • Beim „Bottom up“-Parsing sollte man Regeln vermeiden, bei denen ein nicht-terminales Symbol auf ein leeres (terminales) Symbol reduziert wird.

  28. Computerlinguistik Parsing: „top down“ vs. „bottom up“ „Memory load“: • „Top down”-Parsing hat weniger Probleme mit rechts- verzweigenden Strukturen (A  aB / John has a book that has a cover that is dirty) als mit links-verzweigenden Strukturen (A  Ba / John’s book’s cover is dirty). • „Bottom up“-Parsing hat weniger Probleme mit links- verzweigenden Strukturen (A  Ba) als mit rechts-verzweigenden Strukturen (A  aB). Insgesamt kann es Sinn machen, beide Techniken zu mischen.

  29. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „bottom up“-Schritt NP  Calvin NP Calvin hitsHobbs

  30. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „left corner“-Schritt S  NP VP S NP VP Calvin hitsHobbs

  31. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „bottom up“-Schritt V  hits S NP VP V Calvin hits Hobbs

  32. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „left corner“-Schritt VP  V NP S VP NP VP V NP Calvin hits Hobbs

  33. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „Gleichsetzen“ S NP VP V NP Calvin hits Hobbs

  34. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „bottom up“-Schritt NP  Hobbs S NP VP V NP NP Calvin hits Hobbs

  35. Computerlinguistik Parsing: „left corner“ Satz: Calvin hits Hobbs „Gleichsetzen“ NP  Hobbs S NP VP V NP Calvin hits Hobbs

  36. Computerlinguistik Parsing-Algorithmen • Die folgenden Folien zeigen einfache Parsing-Algorithmen für • einen „top down“-Parser und • einen „bottom up“-Parser. • Beide sind in PROLOG realisiert.

  37. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing Wir schreiben die Grammatikregeln „direkt“ als PROLOG-Klauseln und erhalten auf diese Weise eine „Definite Clause Grammar“ (DCG), siehe Gazdar & Mellish (1989), Abschnitt 4.5. S  NP VP s(s(NP, VP)):- np(NP), vp(VP). VP  V vp(vp(V)):- v(V). VP  V NP vp(vp(V, NP)):- v(V), np(NP). V  dreams v(v(dreams)). V  hits v(v(hits)). NP  Calvin np(np(calvin)). NP  Hobbs np(np(hobbs)).

  38. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing Die DCG ist eine Grammatik, die die schon bekannte Sprache generiert. Der Aufruf sieht wie folgt aus: |?- s(X).  X = s(NP, VP) (2?) np(Y)  NP = Y (2!) np(np(calvin))  Y = np(calvin) (2?) vp(Z)  VP = Z (3?) v(A)  Z = vp(A) (3!) v(v(dreams))  A = v(dreams) (2!) vp(vp(v(dreams)))  Z = vp(v(dreams)) X =s(np(calvin),vp(v(dreams))) usw. (Die anderen Sätze ergeben sich nach Backtracking.)

  39. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing Aus dem Generator bauen wir einen Parser, wobei wir davon ausgehen, dass die Wortfolge des zu parsenden Satzes bereits in Listenform vorliegt. Im Prinzip funktioniert dieser einfache Parser dadurch, dass wir die Sätze der durch die Grammatik definierten Sprache nacheinander generieren und jedes Ergebnis mit dem zu parsenden Satz abgleichen. Im Erfolgsfall ist der Satz geparst. Passt kein Satz aus der Sprache zum zu parsenden Satz, so ergibt sich ein „fail“. Aufruf: parse(Struktur):- read_in(Satz), !, klausel(s, Satzwortliste, Struktur), Satzwortliste = Satz.

  40. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing Aus dem Generator bauen wir einen Parser, wobei wir davon ausgehen, dass die Wortfolge des zu parsenden Satzes bereits in Listenform vorliegt. Im Prinzip funktioniert dieser einfache Parser dadurch, dass wir die Sätze der durch die Grammatik definierten Sprache nacheinander generieren und jedes Ergebnis mit dem zu parsenden Satz abgleichen. Im Erfolgsfall ist der Satz geparst. Passt kein Satz aus der Sprache zum zu parsenden Satz, so ergibt sich ein „fail“. Die PROLOG-Klauseln für diesen „Top down“-Parser haben das Format klausel(LinkeSeite,Wortliste,Struktur).

  41. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing klausel(s, Satzwortliste, s(np(NPS),vp(VPS))):- klausel(np, NPWortliste, np(NPS)), klausel(vp, VPWortliste, vp(VPS)), append(NPWortliste, VPWortliste, Satzwortliste). klausel(vp,VPWortliste,vp(v(VS))):- klausel(v,VWortliste,v(VS)), VPWortliste = VWortliste. klausel(vp, VPWortliste, vp(v(VS), np(NP))):- klausel(v, VWortliste, v(VS)). klausel(np, NPWortliste, np(NPS)), append(VWortliste, NPWortliste, VPWortliste).

  42. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing Die lexikalischen Klauseln: klausel(v, [dreams], v(dreams)). klausel(v, [hits], v(hits)). klausel(np, [calvin], np(calvin)). klausel(np, [hobbs], np(hobbs)). Aufruf: parse(Struktur):- read_in(Satz), !, klausel(s, Satzwortliste, Struktur), Satzwortliste = Satz.

  43. Computerlinguistik Parsing-Algorithmen DCG „top down“-Parsing (1?) klausel(s, Satzwortliste, Struktur) Struktur = s(np(NPS),vp(VPS)) (2?) klausel(np, NPWortliste, np(NPS)) (2!) klausel(np, [calvin], np(calvin)) Struktur = s(np(calvin),vp(VPS)) (2?) klausel(vp, VPWortliste, vp(VPS)) Struktur = s(np(calvin),vp(v(VS))) (3?) klausel(v,VWortliste,v(VS)) (3!) klausel(v,[dreams],v(dreams)) Struktur = s(np(calvin),vp(v(dreams))) (3?) VPWortliste = [dreams] (3!) [dreams] = [dreams] (2!) klausel(vp, [dreams], vp(v(dreams))) (2?) append([clavin], [dreams], Satzwortliste) (2!) append([clavin], [dreams], [calvin, dreams]) (1!) klausel(s, [clavin, dreams], s(np(calvin),vp(v(dreams))))

  44. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing Der zweite Algorithmus, den wir anschauen, ist ein „bottom up“-Algorithmus. Das Parsing erfolgt dabei, indem zunächst jeweils das nächste Wort auf den Stack geschoben wird. Dann wird der Stack so weit reduziert, wie das möglich ist. Danach erfolgt (rekursiv) wieder ein „Parsing“. Gibt es kein Wort mehr, welches auf den Stack geschoben werden kann, ist die maximale Reduktion des aktuellen Stacks das Ergebnis.

  45. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing Das Parsing erfolgt, indem zunächst jeweils das nächste Wort auf den Stack geschoben wird. Dann wird der Stack so weit reduziert, wie das möglich ist. Danach erfolgt (rekursiv) wieder ein „Parsing“. Gibt es kein Wort mehr, welches auf den Stack geschoben werden kann, ist die maximale Reduktion des aktuellen Stacks das Ergebnis, also die Struktur des zu parsenden Satzes. parse([Wort|RWortliste], Stack,Struktur):- reduce([Wort|Stack], NStack), parse(RWortliste,NStack,Struktur). parse([],Stack, Struktur):- reduce(Stack, [Struktur]).

  46. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing Das Reduzieren des Stacks erfolgt dadurch, dass ein Reduktionsschritt vollzogen und danach wieder ein Reduzieren aufgerufen wird. Kann kein einzelner Reduktionsschritt erfolgen, so ändert sich der Stack nicht weiter. reduce(Stack, EStack):- reduce1(Stack, ZStack), reduce(ZStack, EStack). reduce(Stack, Stack).

  47. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing Die einzelnen Reduktionsschritte entsprechen den Grammatikregeln. S  NP VP VP  V VP  V NP reduce1([vp(Y), np(X)|Restwortliste], [s(np(X),vp(Y))|Restwortliste]). reduce1([v(X)|Restwortliste], [vp(v(X))|Restwortliste]). reduce1([np(Y),v(X)|Restwortliste], [vp(v(X), np(Y))|Restwortliste]). Achtung: Die Einträge stehen „falsch herum“ im Stack!

  48. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing Die einzelnen Reduktionsschritte entsprechen den Grammatikregeln. V  dreams V  hits NP  Calvin NP  Hobbs reduce1([dreams|Restwortliste], [v(dreams)|Restwortliste]). reduce1([hits|Restwortliste], [v(hits)|Restwortliste]). reduce1([calvin|Restwortliste], [np(calvin)|Restwortliste]). reduce1([hobbs|Restwortliste], [np(hobbs)|Restwortliste]).

  49. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing Der Aufruf des Parsers erfolgt durch ?- parsing(Struktur). mit Parsing(Struktur):- read_in(Satzliste), !, parse(Satzliste, [], Struktur), functor(Struktur, s, 1). Der Stack ist beim Aufruf leer.

  50. Computerlinguistik Parsing-Algorithmen Shift-Reduce für „bottom up“-Parsing (3?) parse([clavin, hits, hobbs], [], Struktur) (4?) reduce([calvin],EStack) (5?) reduce1([calvin], ZStack) (5!) reduce1([calvin], [np(calvin)]) (5?) reduce([np(calvin)], EStack) (6?) reduce1([np(calvin)], ZStack) (6f) reduce1([np(calvin)], ZStack) (6?) reduce1([np(calvin)], [np(calvin)]) (6!) reduce1([np(calvin)], [np(calvin)]) (5!) reduce([np(calvin)], [np(calvin)]) (4!) reduce([calvin], [np(calvin)]) (4?) parse([hits, hobbs], [np(calvin)], Struktur)

More Related