Taaltheorie en Taalverwerking Parsing Continued
Totnutoe: Top-Down-Parser
Waarom is de Top-Down-Parser niet goed genoeg?
Het probleem van Natuurlijke-Taal-Verwerking:
Waarom is de Left Corner Parser niet goed genoeg? Het probleem van Natuurlijke-Taal-Verwerking: Ambiguïteit
"Inhoudelijk" (syntactisch/semantisch/pragmatisch) probleem: Welke interpretatie te kiezen?
Ambiguïteit "Inhoudelijk" (syntactisch/semantisch/pragmatisch) probleem: Welke interpretatie te kiezen? Computationeel probleem: Hoe te zorgen dat alle analyses beschouwd worden?
Ambiguïteit als computationeel probleem: Hoe te zorgen dat alle analyses beschouwd worden? Hoe gaat dat bij de Left-Corner Parser? Back-tracking
Ambiguïteit als computationeel probleem: Hoe te zorgen dat alle analyses beschouwd worden? Hoe gaat dat bij de Top-Down-Parser? Back-tracking Voordeel: heel overzichtelijk. Nadeel: inefficiënt.
Duplication of effort in the Top-Down-Parser [J&M Fig ] als gevolg van locale ambiguïteit. Cf.: "KLM redirected a flight from Indianapolis to Houston."
Nu: Efficiënt parseren: de Earley parser.
Russell & Norvig, pp Martin & Jurafsky, pp De Earley parser. Nieuw idee: Alle tussenresultaten bewaren ("dynamic programming")
Chart-parsing: Alle tussenresultaten bewaren. Wellformed substring table. Put the students in section 2 of Computer Science 101 in room 6. V NP PP
Chart-parsing: Alle tussenresultaten bewaren. Put the students in section 2 of Computer Science 101 in room 6. V NP PP S SS
Earley Parser: Left-corner parsing met "active chart". Combinatie van top-down en bottom-up. Top-down proces: Predictor Bottom-up proces: Scanner Extender
Predictie-proces: Left-corner: S NP VP NP det N
Predictie-proces: Left-corner: S NP VP NP det N Stel: det herkend
Predictie-proces: Left-corner: S NP VP NP det N [det herkend]
Predictie-proces: Left-corner: S NP VP NP det N Stel: det herkend; N herkend.
Predictie-proces: Left-corner: S NP VP NP det N Stel: det herkend; N herkend.
Active chart. Niet alleen: alle tussenresultaten bewaren. Ook: alle partiële tussenresultaten bewaren. Boekhouding over wat er nog gedaan moet worden valt samen met het bewaren van de tussenresultaten.
Predictie Put the students in section 2 of Computer Science 101 in room 6. S NP VP
Predictie Put the students in section 2 of Computer Science 101 in room 6. S NP VP NP det N
Predictie Put the students in section 2 of Computer Science 101 in room 6. S NP VP NP det N
Predictie Put the students in section 2 of Computer Science 101 in room 6. S V NP PP
Predictie Put the students in section 2 of Computer Science 101 in room 6. S V NP PP
Predictie Put the students in section 2 of Computer Science 101 in room 6. S V NP PP NP det N
Active Chart bevat: herkende constituenten, b.v.: NP det N PP gedeeltelijk herkende constituenten, b.v.: NP det N PP plannen, b.v.: NP det N PP
Active Chart bevat: herkende constituenten, b.v.: [5, 10, NP det N PP ] gedeeltelijk herkende constituenten, b.v.: [5, 7, NP det N PP ] plannen, b.v.: [5, 5, NP det N PP ]
Chart parsing Begintoestand: (Plan:) [0, 0, S' S ] Doel: (S die de hele zin omvat:) [0, n, S' S ]
Start Put the students in section 2 of Computer Science 101 in room 6. S' S
Put the students in section 2 of Computer Science 101 in room 6. S' S Doel
Earley Parser Acties: Top-down agenda-expansie: Predictor Woordsoort checken: Scanner Succes propageren (bottom-up): Completer (Extender)
Earley Parser Main: Chart:= leeg Add-edge(0,0, S' S) For all words do: Scanner Return (chart)
Earley Parser Main: Chart:= leeg Add-edge(0,0, S' S) For all words do: Scanner Return (chart) Add-Edge(e) If e nog niet in chart then voeg e toe If e heeft de dot helemaal rechts then Extender(e) else Predictor(e) ( e = i,j, A BC )
Earley Parser Top-down expansie: Predictor (i, j, A ... B...) Voor alle regels B : Add-edge(j,j, B )
Earley Parser Scanner (j, word) [Zoekt de woordsoort (“part-of-speech”) van word op, en geeft dat door aan alle edges die dat kunnen gebruiken.] Voor alle woordsoorten B van word: Voor alle edges van de vorm [i,j, A ... B...]: Add-Edge(i, j+1, A ... B...)
Earley Parser Extender (j, k, B ... ) Propageer succes: ["Move the dot" voor edges die vragen om de non-terminal B.] Voor alle edges van de vorm [i,j, A ... B...]: Add-Edge(i, k, A ... B...)
Opdracht van deze week: Maak een Earley-parser in Prolog
Deeltentamen over blok a in de tussentoets-week