ORDKLASSTAGGNING Marco Kuhlmann Institutionen för datavetenskap
Ordpredicering n-gram-modeller (definition, skattning) den brusiga kanalen: P(R F) = P(F R) P(R) 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 = P(w 1 w 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
P(w 1 w 1 ) w 1 P(w 1 -BOS-) P(-EOS- w 1 ) -BOS- P(w 2 w 1 ) P(w 1 w 2 ) -EOS- P(w 2 -BOS-) P(-EOS- w 2 ) w 2 P(w 2 w 2 )
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 slutna ordklasser Exempel: substantiv, adjektiv, verb 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 guldstandard 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
Precision DT JJ NN PP VB DT 923 2 0 0 0 JJ 0 1255 7 0 5 NN 0 132 4499 0 132 precision på NN PP 0 1 1 2332 2 VB 1 5 18 1 3436
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 f(w r ) 1/r 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 VB PP DT JJ NN 4532 41 4945 16179 125 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 följande tagg 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 NN 1 149 41 928 51 855 1 312 3 350 10 314 tagg
Hidden Markov-modell En Hidden Markov-modell (HMM) är en generaliserad Markovmodell med två olika typer av sannolikheter: övergångssannolikheter observationssannolikheter P(tagg tagg) P(ord tagg)
w P(w VB) jag 0,000004 P(VB VB) bad 0,000152 VB P(VB -BOS-) P(-EOS- VB) -BOS- P(PN VB) P(VB PN) -EOS- P(PN -BOS-) P(-EOS- PN) PN P(PN PN) w P(w 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 p = -BOS-. För varje ord w i sekvensen, från vänster till höger: Tagga ordet w med någon tagg t. Betala log P(t p) och log P(w t). Sätt p = t. Betala log P(-EOS- p).
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 bad om en kort bit DT 14,49 JJ NN PN PP VB T[DT][0] = P(DT -BOS-) + P(jag DT) = 2,50 + 11,99 = 14,49
Fas 1: Initialisering; räkna ut värdena i den första kolumnen jag bad om en kort bit DT 14,49 JJ 15,46 NN 11,22 PN 5,35 PP VB T[PN][0] = P(PN -BOS-) + P(jag PN) = 1,69 + 3,66 = 5,35
Fas 2: Rekursion; räkna ut värdena i de mellersta kolumnerna jag bad om en kort bit 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 T[PN][2] + P(DT PN) + P(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 kort bit 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 T[PP][2] + P(DT PP) + P(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 T[NN][6] + P(-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