ORDKLASSTAGGNING
Transcription
ORDKLASSTAGGNING
ORDKLASSTAGGNING Marco Kuhlmann Institutionen för datavetenskap Ordpredicering βΆ n-gram-modeller (deο¬nition, skattning) βΆ den brusiga kanalen: π(π |πΉ) = π(πΉ|π ) π(π ) βΆ redigeringsavstånd, Levenshtein-avstånd Markov-modell βΆ En Markov-modell är en (deterministisk) ο¬nit 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 inο¬nitivmä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 ο¬naliseras, 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 ο¬nns 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