ORDKLASSTAGGNING

ORDKLASSTAGGNING
Marco Kuhlmann
Institutionen för datavetenskap
Ordpredicering
β–Ά n-gram-modeller (definition, skattning)
β–Ά den brusiga kanalen: 𝑃(𝑅|𝐹) = 𝑃(𝐹|𝑅) 𝑃(𝑅)
β–Ά redigeringsavstånd, Levenshtein-avstånd
Markov-modell
β–Ά En Markov-modell är en (deterministisk) finit automat vars
övergångar är försedda med sannolikheter.
Exempel: tillstånd = ord, övergångar = 𝑃(𝑀1 |𝑀2)
β–Ά Man kan använda den för att räkna ut sannolikheten för
tillståndssekvenser eller generera tillståndssekvenser.
Exempel: bigram-modell β†’ ordsekvenser
𝑃(𝑀1 |𝑀1)
𝑀1
𝑃(𝑀1 |-BOS-)
-BOS-
𝑃(-EOS-|𝑀1 )
𝑃(𝑀2 |𝑀1)
𝑃(𝑀1 |𝑀2)
𝑃(𝑀2 |-BOS-)
𝑃(-EOS-|𝑀2 )
𝑀2
𝑃(𝑀2 |𝑀2)
-EOS-
Struktur
β–Ά Ordklasstaggning
β–Ά Metod 1: Regelbaserad taggning
β–Ά Utvärdering av ordklasstaggare
β–Ά Metod 2: Taggning med Hidden Markov-modeller (HMM)
Ordklasstaggning
Ordklasser
β–Ά En ordklass är en mängd av ord som delar någon egenskap.
Exempel: substantiv (kan deklineras), verb (kan konjugeras)
β–Ά Man brukar skilja mellan två typer av ordklasser:
öppna ordklasser
Exempel: substantiv, adjektiv, verb
slutna ordklasser
Exempel: artiklar, pronomen, prepositioner
Stockholm Umeå Corpus (SUC)
β–Ά Den största manuellt annoterade textkorpusen för skriven
svenska; ett samarbete mellan Stockholms och Umeås universitet.
β–Ά Innehåller 1,2 miljon ord (token) annoterade med bl.a. ordklass,
morfologisk analys och lemma (grundform).
β–Ά Balanserad korpus med texter från olika genrer.
Ordklasser i SUC (1)
förkortning
kategori
exempel
NN
substantiv
pudding
VB
verb
kasta
PP
preposition
över
AB
adverb
inte
JJ
adjektiv
glad
PN
pronomen
hon
DT
determinerare
denna
KN
konjunktion
och
PM
egennamn
Mats
SUC manual: http://spraakbanken.gu.se/parole/Docs/SUC2.0-manual.pdf
Ordklasser i SUC (2)
förkortning
kategori
exempel
PC
particip
utsänd
SN
subjunktion
att
RG
räkneord (grundtal)
tre
HP
frågande/relativt pronomen
som
IE
infinitivmärke
att
PL
partikel
ut
SUC manual: http://spraakbanken.gu.se/parole/Docs/SUC2.0-manual.pdf
Ordklasser i SUC (3)
förkortning
kategori
exempel
PS
possessivt pronomen
hennes
HA
frågande/relativt adverb
när
UO
utländskt ord
the
RO
räkneord (ordningstal)
tredje
IN
interjektion
ja
HD
frågande/relativt determinerare
vilken
HS
frågande/relativt possessivt pronomen
vars
SUC manual: http://spraakbanken.gu.se/parole/Docs/SUC2.0-manual.pdf
Universella ordklasser (öppna klasser)
förkortning
kategori
exempel
ADJ
adjektiv
glad
ADV
adverb
inte
INTJ
interjektion
ja
NOUN
substantiv
pudding
PROPN
proper noun
Ingmar
VERB
verb
kasta
Universal Dependencies: http://universaldependencies.github.io/docs/
Universella ordklasser (slutna klasser)
förkortning
kategori
exempel
ADP
adposition (preposition, postposition)
över
AUX
hjälpverb
har
CONJ
konjunktion
och
DET
determinerare
denna
NUM
räkneord för grundtal
tre
PART
partikel
ut
PRON
pronomen
hon
SCONJ
subjunktion
att
Universal Dependencies: http://universaldependencies.github.io/docs/
Ordklasstaggning
β–Ά Predicera den korrekta klassen för ett ord, given en mängd
möjliga ordklasser.
β–Ά Ordklasstaggning måste även kunna hantera okända ord.
Exempel: Hon tog fram tre nya boskar ur skåpet.
Kombinatorisk explosion
jag
bad
om
en
kort
bit
PN
VB
PP
DT
JJ
NN
NN
NN
SN
PN
AB
VB
PL
RG
NN
AB
NN
384 möjliga analyser
Utvärdering av ordklasstaggare
Att utvärdera taggare
β–Ά För att träna och utvärdera taggare behöver vi en guldstandard,
dvs. redan taggade ord.
Exempel: Stockholm Umeå Corpus (SUC)
β–Ά Utvärderingen kan då ske med avseende på standardmått:
korrekthet, precision och täckning (per klass)
Förväxlingsmatris
DT
JJ
NN
PP
VB
DT
923
2
0
0
0
JJ
0
1255
7
0
5
NN
0
132
4499
0
132
PP
0
1
1
2332
2
VB
1
5
18
1
3436
system
guldstandard
Precision
DT
JJ
NN
PP
VB
DT
923
2
0
0
0
JJ
0
1255
7
0
5
NN
0
132
4499
0
132
PP
0
1
1
2332
2
VB
1
5
18
1
3436
precision på NN
Täckning (recall)
DT
JJ
NN
PP
VB
DT
923
2
0
0
0
JJ
0
1255
7
0
5
NN
0
132
4499
0
132
PP
0
1
1
2332
2
VB
1
5
18
1
3436
täckning på NN
Utvärderingsmetodologi
β–Ά träningsdata (80%): används för att skatta sannolikheter eller på
annat sätt träna taggaren
β–Ά utvecklingsdata (10%): används för att utvärdera taggarens
kvalité under utvecklingsperioden
β–Ά testdata (10%): används för att utvärdera den färdiga taggaren
innan den finaliseras, t.ex. innan den skickas till en kund
Övningsuppgift
En Shared Task är en tävling där ett antal forskningsteam tävlar om
att bygga det bästa systemet för att lösa en given uppgift.
Utvärderingen av systemen sker ofta med hjälp av guldstandarddata.
Det är vanligt att testdatan för en Shared Task hålls hemliga för
deltagarna; de skickar istället in sina system till organisatörerna som
sedan genomför utvärderingen. Förklara varför man gör så!
Gränser
β–Ά Baseline: välj den mest frekventa taggen för varje ord
Exempel: Brown corpus: 91% korrekthet
β–Ά Ceiling: jämför med mänskliga experter
Exempel: Brown corpus: överensstämmelse på 96% av taggarna
Metod 1: Regelbaserad taggning
Regelbaserad taggning
β–Ά Använd ett tagglexikon för att tilldela varje ord en mängd
möjliga taggar.
β–Ά Använd handskrivna disambigueringsregler för att reducera
antalet möjliga taggar per ord till 1.
Zipfs lag
𝑓(π‘€π‘Ÿ) ∝ 1/π‘Ÿ
Ett ords frekvens är invers proportionell mot dess position i frekvensrangordningen.
Källa: http://lewisdartnell.com/language_page.htm
Zipfs lag i samband med ordklasstaggning
β–Ά Många ord(typer) förekommer med endast en tagg.
SUC: 96,18%
β–Ά Några ord förekommer med många olika taggar.
SUC: en kan vara DT, PN, RG, AB, UO, PM eller NN
Disambigueringsregler
Formulerad som transformationsregler, till exempel:
β–Ά Om ordet slutar på -iska, ersätt taggen med JJ.
Exempel: portugisiska/JJ
β–Ά Ändra VB till NN om nästa tag är VB.
Exempel: mina/PS händer/VB är/VB så/AB kalla/JJ
Lite knep
β–Ά Använd reguljära uttryck för att tagga enkla eller strukturerade
token som tal och telefonnummer.
β–Ά Hitta en bra defaulttagg som kan sättas på ord vars ordklass inte
kunnat bestämmas på annat sätt.
SUC: NN (ca. 20%)
Metod 2: HMM-taggning
Olika taggar har olika frekvenser
jag
bad
om
en
kort
bit
PN
4532
VB
41
PP
4945
DT
16179
JJ
125
NN
92
NN
25
NN
10
SN
2333
PN
402
AB
35
VB
0
PL
402
RG
388
NN
18
AB
150
NN
1
Ord/tagg-frekvenser
PN
VB
PP
DT
JJ
NN
jag
4 532
0
0
0
0
25
bad
0
41
0
0
0
10
om
0
0
4 945
0
0
0
en
402
0
0
16 179
0
1
kort
0
0
0
0
125
18
bit
0
0
0
0
0
92
Tagg/följande tagg-frekvenser
PN
VB
PP
DT
JJ
NN
PN
1 291
35 473
6 812
1 291
1 759
1 496
VB
24 245
19 470
22 191
13 175
8 794
19 282
PP
5 582
198
501
19 737
10 751
52 440
DT
201
1
286
163
21 648
23 719
JJ
233
1 937
3 650
245
2 716
46 678
1 149
41 928
51 855
1 312
3 350
10 314
NN
tagg
följande tagg
Hidden Markov-modell
En Hidden Markov-modell (HMM) är en generaliserad Markovmodell med två olika typer av sannolikheter:
β–Ά övergångssannolikheter
𝑃(tagg|tagg)
β–Ά observationssannolikheter
𝑃(ord|tagg)
𝑃(VB|VB)
𝑀
𝑃(𝑀|VB)
jag
0,000004
bad
0,000152
VB
𝑃(VB|-BOS-)
-BOS-
𝑃(-EOS-|VB)
𝑃(PN|VB)
-EOS-
𝑃(VB|PN)
𝑃(PN|-BOS-)
𝑃(-EOS-|PN)
PN
𝑃(PN|PN)
𝑀
𝑃(𝑀|PN)
jag
0,025775
bad
0,000006
HMM-taggning
β–Ά Vi vill räkna ut en taggsekvens med maximal sannolikhet.
β–Ά Problem: För en och samma ordsekvens finns det många olika
taggsekvenser; sökrymden är stor.
β–Ά Lösning: Viterbi-algoritmen (dynamisk programmering; JM kapitel 5.5.3)
Taggning med HMM:er
β–Ά Börja med 𝑝 = -BOS-.
β–Ά För varje ord 𝑀 i sekvensen, från vänster till höger:
β–Ά Tagga ordet 𝑀 med någon tagg 𝑑.
β–Ά Betala βˆ’log 𝑃(𝑑|𝑝) och βˆ’log 𝑃(𝑀|𝑑).
β–Ά Sätt 𝑝 = 𝑑.
β–Ά Betala βˆ’log 𝑃(-EOS-|𝑝).
Viterbi-tabellen
Obs! Istället för sannolikheter anges negerade logaritmer!
jag
bad
om
en
kort
bit
DT
14,49
21,33
29,38
24,82
42,62
50,67
JJ
15,46
21,13
29,88
35,22
33,00
48,36
NN
11,22
19,53
29,74
33,58
35,44
41,63
PN
5,35
21,43
28,86
29,86
42,50
50,81
PP
14,59
20,02
20,70
38,53
42,41
48,32
VB
16,11
14,83
29,53
39,65
43,08
49,15
Fas 1: Initialisering; räkna ut värdena i den första kolumnen
jag
DT
bad
om
en
kort
bit
14,49
JJ
NN
PN
PP
VB
𝑇[DT][0] = 𝑃(DT|-BOS-) + 𝑃(jag|DT) = 2,50 + 11,99 = 14,49
Fas 1: Initialisering; räkna ut värdena i den första kolumnen
jag
DT
14,49
JJ
15,46
NN
11,22
PN
5,35
bad
om
en
kort
bit
PP
VB
𝑇[PN][0] = 𝑃(PN|-BOS-) + 𝑃(jag|PN) = 1,69 + 3,66 = 5,35
Fas 2: Rekursion; räkna ut värdena i de mellersta kolumnerna
jag
bad
om
en
DT
14,49
21,33
29,38
35,15
JJ
15,46
21,13
29,88
NN
11,22
19,53
29,74
PN
5,35
21,43
28,86
PP
14,59
20,02
20,70
VB
16,11
14,83
29,53
kort
bit
𝑇[PN][2] + 𝑃(DT|PN) + 𝑃(en|DT) = 28,86 + 4,00 + 2,29 = 35,15
Fas 2: Rekursion; räkna ut värdena i de mellersta kolumnerna
jag
bad
om
en
DT
14,49
21,33
29,38
24,82
JJ
15,46
21,13
29,88
NN
11,22
19,53
29,74
PN
5,35
21,43
28,86
PP
14,59
20,02
20,70
VB
16,11
14,83
29,53
kort
bit
𝑇[PP][2] + 𝑃(DT|PP) + 𝑃(en|DT) = 20,70 + 1,82 + 2,29 = 24,82
Fas 2: Rekursion (slut)
jag
bad
om
en
kort
bit
DT
14,49
21,33
29,38
24,82
42,62
50,67
JJ
15,46
21,13
29,88
35,22
33,00
48,36
NN
11,22
19,53
29,74
33,58
35,44
41,63
PN
5,35
21,43
28,86
29,86
42,50
50,81
PP
14,59
20,02
20,70
38,53
42,41
48,32
VB
16,11
14,83
29,53
39,65
43,08
49,15
Fas 3: Terminering; hitta den bästa cellen i den sista kolumnen
jag
bad
om
en
kort
bit
DT
14,49
21,33
29,38
24,82
42,62
50,67
JJ
15,46
21,13
29,88
35,22
33,00
48,36
NN
11,22
19,53
29,74
33,58
35,44
41,63
PN
5,35
21,43
28,86
29,86
42,50
50,81
PP
14,59
20,02
20,70
38,53
42,41
48,32
VB
16,11
14,83
29,53
39,65
43,08
49,15
𝑇[NN][6] + 𝑃(-EOS-|NN) = 41,63 + 4,30 = 45,93
Extrahera den bästa taggsekvensen
jag
bad
om
en
kort
bit
DT
14,49
21,33
29,38
24,82
42,62
50,67
JJ
15,46
21,13
29,88
35,22
33,00
48,36
NN
11,22
19,53
29,74
33,58
35,44
41,63
PN
5,35
21,43
28,86
29,86
42,50
50,81
PP
14,59
20,02
20,70
38,53
42,41
48,32
VB
16,11
14,83
29,53
39,65
43,08
49,15