Probabilistische kontextfreie Grammatiken - tagh.detagh.de/tom/wp-content/uploads/12-PCFG.pdf ·...

Post on 12-Oct-2019

6 views 0 download

Transcript of Probabilistische kontextfreie Grammatiken - tagh.detagh.de/tom/wp-content/uploads/12-PCFG.pdf ·...

Probabilistischekontextfreie Grammatiken

Vorlesung “Computerlinguistische Techniken”

Alexander Koller

08. Dezember 2015

Let’s play a game

• Ich gebe Ihnen ein Nichtterminalsymbol. ‣ S, NP, VP, PP, … oder POS-Tag

• Sie können einen der folgenden Züge machen:

S → NP VP NNP → Hans

NT in andere NT expandieren

POS-Tag inWort expandieren

Penn Treebank POS tags

Ein paar echte Bäume

Penn Treebank, #0001

Penn Treebank, #0002

nltk.corpus.treebank.parsed_sents("wsj_0001.mrg")[0].draw()

AmbiguitätenWir wollen disambiguieren, d.h. “korrekten” Parse für ambigen Satz berechnen.

S

NP VP

VP

I

V NP

anshot

PP

P

in

Det N

elephant

NP

my

PRP$ N

pyjamas

S

NP VP

I

VNP

anshot

PP

P

in

Det

N

elephant

NP

my

PRP$ N

pyjamas

N

Woran erkennen wir den “korrekten” Baum?Wie berechnen wir ihn effizient? (NB: exponentiell viele Lesarten)

Probabilistische kfGen

• Eine probabilistische kontextfreie Grammatik (PCFG)ist eine kfG, in der ‣ jede Produktionsregel A → w hat eine W. P(A → w | A):

wenn wir A expandieren, wie w. ist Regel A → w?

‣ für jedes Nichtterminal A müssen W. zu eins summieren:

‣ wir schreiben abgekürzt P(A → w) für P(A → w | A)

X

w

P (A ! w | A) = 1

Beispiel

S → NP VP [1.0] VP → V NP [0.5]NP → Det N [0.8] VP → VP PP [0.5]NP → i [0.2] V → shot [1.0]N → N PP [0.4] PP → P NP [1.0]N → elephant [0.3] P → in [1.0]N → pyjamas [0.3] Det → an [0.5]

Det → my [0.5]

(der Einfachheit halber tun wir so, als ob Det = PRP$)

Generativer Prozess

• PCFG erzeugt zufällige Ableitung der kfG. ‣ Ereignis = Expansion von NT durch Produktionsregel

‣ alle statistisch unabhängig voneinander

S⇒ NP VP ⇒ i VP ⇒ i VP PP⇒* i shot an elephant in my pyjamas

1.0 0.2 0.5

0.00072

S⇒ NP VP ⇒ i VP ⇒* i V Det N⇒* i shot … pyjamas

1.0 0.2 0.4

0.4⇒ i V Det N PP

0.00057

Parsebäume

S

NP VP

I

VNP

anshot

PP

P

in

Det

N

elephant

NP

my

Det N

pyjamas

N

S

NP VP

VP

I

V NP

anshot

PP

P

in

Det N

elephant

NP

my

Det N

pyjamas

p = 0.00072 p = 0.00057

“korrekt” = wahrscheinlichster Parsebaum

0.2 0.5

0.5

0.8

0.5 0.3

0.8

0.5 0.3

0.2 0.5

0.8

0.5

0.8

0.5 0.3

0.4

0.3

Sprachmodellierung

• Wie in anderen generativen Modellen (z.B. HMMs) können wir W. P(w) von String durch Marginalisierung über mögliche Bäume berechnen.

• Kann man effizient mit Inside-W. berechnen;siehe nächstes Mal.

P (w) =X

t2parses(w)

P (t)

Disambiguierung

• Annahme: “korrekter” Parsebaum = Baum, der höchste W. hat, vom Zufallsprozess erzeugt zu werden, d.h.

• Wir verwenden Variante des Viterbi-Algorithmus, um diesen Baum auszurechnen.

• Hier: Viterbi auf Grundlage von CKY; kann man auch mit anderen Parsingalgorithmen machen.

argmax

t2parses(w)P (t)

Intuition

VP NP N PP

VP NP N

Det

V

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Normale CKY-Parsechart: Ch(i,k) = {A | A ⇒* wi … wk-1}

Intuition

VP: 0.0036 NP: 0.006 N: 0.014 PP: 0.12

VP: 0.06 NP: 0.12 N: 0.3

Det: 0.5

V: 1.0

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

Viterbi + CKY

• Definiere für jeden Span (i,k) und Nichtterminal A die W.

• Berechne V iterativ “von innen nach außen”: mit kleinen Spans anfangen und immer größer werden.

V (A, i, k) = max

Ad)⇤wi...wk�1

P (d)

V (A, i, i+ 1) = P (A ! wi)

V (A, i, k) = max

A!B Ci<j<k

P (A � B C) · V (B, i, j) · V (C, j, k)

Viterbi-CKY: Pseudocode

set all V[A,i,j] to 0

for all i from 1 to n: for all A with rule A -> wi: add A to Ch(i,i+1) V[A,i,i+1] = P(A -> wi)

for all b from 2 to n: for all i from 1 to n-b+1: for all k from 1 to b-1: for all B in Ch(i,i+k) and C in Ch(i+k,i+b): for all production rules A -> B C: add A to Ch(i,i+b) if P(A -> B C) * V[B,i,i+k] * V[C,i+k,i+b] > V[A,i,i+b]: V[A,i,i+b] = P(A -> B C) * V[B,i,i+k] * V[C,i+k,i+b]

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

NP: 0.12

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

NP: 0.12

N: 0.014

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

VP: 0.06 NP: 0.12

N: 0.014

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

VP: 0.06 NP: 0.12

N: 0.014NP: 0.0058

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

VP: 0.06 NP: 0.12

N: 0.014NP: 0.0058VP: 0.0029

Viterbi-CKY am Beispiel

shot

an

elephant

in my pyjamas

… el

epha

nt

… an

… sh

ot

… in

my

pyja

mas

Viterbi-CKY-Parsechart:Ch(i, k) = {(A, p) | p = max

d:A)⇤wi...wk�1

P (d)}

V: 1.0

Det: 0.5

N: 0.3

PP: 0.12

VP: 0.06 NP: 0.12

N: 0.014NP: 0.0058VP: 0.0036VP: 0.0029

Bemerkungen

• Viterbi-CKY hat genau die gleichen Schleifenwie der normale CKY-Parser. ‣ Berechnung von V ändert nur den konstanten Faktor.

‣ Asymptotische Laufzeit immer noch O(n3)

• Berechne optimalen Parsebaum mit Backpointers. ‣ gleiche Backpointers wie in normalem CKY (siehe 6. Vorlesung)

‣ wenn wir nur den besten Parse wollen (und nicht alle Parses),reicht es, den besten Backpointer für jedes (A,i,k) zu speichern;d.h. weniger Speicherverbrauch als normaler CKY

Wo kriegt man eine PCFG?

• Quellen für kontextfreie Grammatiken: ‣ von Hand schreiben

‣ aus einer Baumbank ablesen

‣ Grammatikinduktion aus unannotiertem Text

• Quellen für Regelw., nachdem wir kfG haben: ‣ Maximum-Likelihood-Schätzung aus Baumbank

‣ EM-Training auf unannotiertem Text (inside-outside)

Die Penn Treebank

• Große Textmenge (für die 1990er), annotiert mit POS-Tags und syntaktischen Strukturen.

• Besteht aus mehreren Teilkorpora: ‣ Wall Street Journal: 1 Jahr Zeitungstext, 1 Mio Wörter

‣ Brown-Korpus: balanciertes Korpus, 1 Mio Wörter

‣ ATIS: Flugbuchungs-Dialoge, 5000 words

‣ Switchboard: gesprochener Dialog, 3 Mio Wörter

• WSJ PTB ist Standardkorpus für Training und Evaluation von PCFG-Parsern.

Annotationsformat

That cold , empty sky was full of fire and light .

DT JJ , JJ NN VBZ JJ IN NN CC NN .

NP-SBJ NP

PPADJP-PRD

VP

S

Annotationsformat

That cold , empty sky was full of fire and light .

DT JJ , JJ NN VBZ JJ IN NN CC NN .

NP-SBJ NP

PPADJP-PRD

VP

S

((S (NP-SBJ (DT That) (JJ cold) (, ,) (JJ empty) (NN sky) ) (VP (VBD was) (ADJP-PRD (JJ full) (PP (IN of) (NP (NN fire) (CC and) (NN light) )))) (. .) ))

Grammatik ablesen

• Kann direkt die “Grammatik in den Köpfen der Annotatoren” von annotierten Bäumen ablesen.

• Ergibt sehr große kfG, z.B. 4500 Regeln für VP: VP → VBD PPVP → VBD PP PPVP → VBD PP PP PPVP → VBD PP PP PP PPVP → VBD ADVP PPVP → VBD PP ADVP…VP → VBD PP PP PP PP PP ADVP PP

Grammatik ablesen

• Kann direkt die “Grammatik in den Köpfen der Annotatoren” von annotierten Bäumen ablesen.

• Ergibt sehr große kfG, z.B. 4500 Regeln für VP: VP → VBD PPVP → VBD PP PPVP → VBD PP PP PPVP → VBD PP PP PP PPVP → VBD ADVP PPVP → VBD PP ADVP…VP → VBD PP PP PP PP PP ADVP PP

“This mostly happens because we go from football in the fall to lifting in the winter

to football again in the spring.”

Evaluation

• Schritt 1: Aufteilung in Trainings- und Testkorpus.Konventionelle Aufteilung der WSJ-Baumbank:

2-21 23

TestTraining

24

Devel

Evaluation

• Schritt 2: Maß für Akkuratheit des Parsers?

• Erste Idee: Messe “exact match”, d.h. Anteil der Sätze, für die Parser den gleichen Baum wie Annotator baut.

• Das ist zu streng: ‣ Parser trifft beim Parsen eines Satzes viele Entscheidungen

‣ eine einzige falsche Entscheidung macht ganzen Baum “falsch”

‣ Wir brauchen ein feinkörnigeres Maß.

Vergleich von Parsebäumen

• Idee 2 (PARSEVAL): Vergleiche Struktur von Parsebaum und Goldstandard-Baum (= Annotation). ‣ Labeled: Welche Konstituenten (Span + syntaktische

Kategorie) in einem Baum gibt es auch im anderen?

‣ Unlabeled: Wie teilen die beiden Bäume den Satz in Teilstrings auf (syntaktische Kategorien egal)?

But the concept is workable

CC DT NN VBZ JJ

NP-SBJ ADJP

VPS

But the concept is workable

IN DT NN VBZ JJ

NP ADJP

VPS

PPNP-SBJ

Gold Parse

PrecisionWelcher Anteil von Konstituenten im Parsebaum gibt es auch im Gold-Baum?

But the concept is workable

CC DT NN VBZ JJ

NP-SBJ ADJP

VPS

But the concept is workable

IN DT NN VBZ JJ

NP ADJP

VPS

PPNP-SBJ

Gold Parse✓

✓✓✓✓

(✓)

(✓) (✓)

Labeled Precision = 7 / 11 = 63.6% Unlabeled Precision = 10 / 11 = 90.9%

RecallWelchen Anteil von Konstituenten im Gold-Baum gibt es auch im Parsebaum?

But the concept is workable

CC DT NN VBZ JJ

NP-SBJ ADJP

VPS

But the concept is workable

IN DT NN VBZ JJ

NP ADJP

VPS

PPNP-SBJ

Gold Parse✓

(✓)

Labeled Recall = 7 / 9 = 77.8% Unlabeled Recall = 8 / 9 = 88.9%

✓✓✓✓

F-Score

• Precision und Recall messen gegenläufige Aspekte eines Parsers (“Korrektheit” und “Vollständigkeit”).

• Oft will man eine einzige Zahl; dafür f-score:

• Im Beispiel: labeled f-score 70.0, unlabeled f-score 89.9.

F1 =2 · P ·RP +R

Zusammenfassung

• PCFGs erweitern kfGen um Regelw. ‣ Ereignisse sind Expansionen von Nichtterminalen.

Diese sind alle statistisch unabhängig.

‣ Viterbi-CKY-Parser berechnet wahrscheinlichsten Parsebaum für Satz in kubischer Zeit.

• Grammatik aus Baumbank ablesen. ‣ nächstes Mal: Schätzung von Regelwahrscheinlichkeiten.

• Evaluation von PCFG-Parsern.