TDDD02 Språkteknologi för informationssökning (2016) Ordklasstaggning Marco Kuhlmann Institutionen för datavetenskap
Ordklasstaggning Tagga varje ord i en sekvens av ord (oftast en mening) med dess korrekta ordklass, givet en mängd möjliga ordklasser. Utmaning 1: Flertydighet orsakar kombinatorisk explosion. Utmaning 2: Ordklasstaggning måste även kunna hantera okända ord. Hon tog fram tre nya boskar ur skåpet.
Ordklasser En ordklass är en mängd av ord som delar någon egenskap. substantiv kan deklineras, verb kan konjugeras Det finns många olika uppsättningar av ordklasser. varierar bl.a. med språk, lingvistisk teori och korpus Man brukar skilja mellan två typer av ordklasser: öppna ordklasser slutna ordklasser substantiv, adjektiv, verb artiklar, pronomen, prepositioner
Universella ordklasser (öppna klasser) tagg 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) tagg 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
Flertydighet orsakar 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
Översikt över dagens föreläsning Introduktion till ordklasstaggning Utvärdering av ordklasstaggare Metod 1: Regelbaserad taggning Metod 2: Taggning med Hidden Markov-modeller Metod 3: Taggning med perceptroner
Utvärdering av ordklasstaggare
Att utvärdera ordklasstaggare För att träna och utvärdera taggare behöver vi en guldstandard, dvs. meningar med redan taggade ord. Stockholm Umeå Corpus (SUC) Utvärderingen kan då ske med avseende på standardmått: korrekthet, precision och täckning.
Påminnelse: Utvärderingsmetodologi Träningsdata (eng. training data; t.ex. 80%) används för att träna taggaren Utvecklingsdata (eng. development data; t.ex. 10%) används för att utvärdera taggaren under utvecklingsperioden Testdata (eng. test data; t.ex. 10%) används för att utvärdera den färdiga taggaren innan den finaliseras, t.ex. innan den skickas till en kund
Stockholm Umeå Corpus (SUC) SUC är den största manuellt annoterade korpusen för skriven svenska, ett samarbete mellan Stockholms och Umeås universitet. skapades i början på 1990-talet Den innehåller 1,2 miljoner ord (token) annoterade med bl.a. ordklass, morfologisk analys och lemma. SUC är en balanserad korpus med texter från olika genrer.
Korrekthet DT JJ NN PP VB 307 DT 923 0 0 0 1 12445 JJ 2 1255 132 1 5 NN 0 7 4499 1 18 PP 0 0 0 2332 1 VB 0 5 132 2 3436 predicerad tagg guldstandardtagg
Precision på NN DT JJ NN PP VB 264 DT 923 0 0 0 1 4499 JJ 2 1255 132 1 5 NN 0 7 4499 1 18 PP 0 0 0 2332 1 VB 0 5 132 2 3436 predicerad tagg guldstandardtagg
Täckning (recall) på NN DT JJ NN PP VB 26 DT 923 0 0 0 1 4499 JJ 2 1255 132 1 5 NN 0 7 4499 1 18 PP 0 0 0 2332 1 VB 0 5 132 2 3436 predicerad tagg guldstandardtagg
Metod 1: Regelbaserad taggning
Regelbaserad taggning Använd ett tagglexikon för att tilldela varje ord en begränsad mängd möjliga taggar. t.ex. alla taggar som förekommer åtminstone 5 gånger i träningsdatan Använd handskrivna disambigueringsregler för att reducera antalet möjliga taggar per ord till 1.
Disambigueringsregler Formulerad som transformationsregler, till exempel: Om ordet slutar på -iska, ersätt taggen med JJ. problem: piska/nn Ändra VB till NN om nästa tagg är VB. mina/ps händer/vb är/vb så/ab kalla/jj
Två knep för bättre regelbaserad taggning 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 (substantiv; ca. 20%)
Fördelningen över ordklasserna Fördelningen av ord över ordklasser är väldigt skev: Några ord(typer) förekommer med många olika taggar. SUC: en kan vara DT, PN, RG, AB, UO, PM eller NN De allra flesta ord förekommer med endast en tagg. SUC: 96,18%
Zipfs lag 30000 22500 15000 f(w r ) 1/r Ett ords frekvens är invers proportionell mot dess position i frekvensrangordningen. 7500 0 the of that was his have as which me be him no upon your what were very
Metod 2: Taggning med Hidden Markov-modeller
Flertydighet orsakar 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
Olika taggar förekommer olika ofta 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
Olika taggföljder förekommer olika ofta 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 NN 1 149 41 928 51 855 1 312 3 350 10 314
Hidden Markov-modell En Hidden Markov-modell (HMM) är en generaliserad Markovmodell med två olika typer av sannolikheter: övergångssannolikheter P(tagg 2 tagg 1 ) Hur sannolikt är det att se ett verb efter att ha sett ett pronomen? observationssannolikheter P(ord tagg) Hur sannolikt är det att se ordet bad som ett verb?
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 )
P(VB VB) w P(w VB) jag 0,000004 VB bad 0,000152 P(VB BOS) P(EOS VB) BOS P(PN VB) P(VB PN) EOS P(PN BOS) P(EOS PN) PN w P(w PN) jag 0,025775 P(PN PN) bad 0,000006
Skattning av sannolikheterna i en HMM Vi kan skatta sannolikheterna i en HMM på en taggad korpus med hjälp av Maximum Likelihood-skattning: exempel för övergångssannolikheter: P(VB PN) När vi ser taggen PN, hur ofta ser vi taggen VB efteråt? exempel för observationssannolikheter: P(jag PN) När vi ser taggen PN, hur ofta är det taggade ordet jag? Vi kan använda additiv utjämning precis som förr.
Sannolikheten för en taggad mening P(bad VB) P(kort JJ) P(jag PN) P(om PP) P(en DT) P(bit NN) jag bad om en kort bit PN VB PP DT JJ NN P(PN BOS) P(PP VB) P(JJ DT) P(EOS NN) P(VB PN) P(DT PP) P(NN JJ) Sannolikheten för en taggad mening är produkten av alla övergångs- och observationssannolikheter.
HMM-taggning Given en mening vill vi räkna ut en sekvens av taggar sådan att sannolikheten för den taggade meningen är maximal. Taggsekvensen är inte given i förväg; den är hidden (dold)! För en och samma mening finns det många olika taggsekvenser med många olika sannolikheter; sökrymden är stor. 384 olika möjligheter för exempelmeningen Trots detta kan den mest sannolika taggsekvensen beräknas på ett effektivt sätt med hjälp av Viterbi-algoritmen.
Viterbi-algoritmen (extramaterial)
Sannolikheten för en taggad mening P(bad VB) P(kort JJ) P(jag PN) P(om PP) P(en DT) P(bit NN) jag bad om en kort bit PN VB PP DT JJ NN P(PN BOS) P(PP VB) P(JJ DT) P(EOS NN) P(VB PN) P(DT PP) P(NN JJ) Sannolikheten för en taggad mening är produkten av alla övergångs- och observationssannolikheter.
HMM-taggning Given en mening vill vi räkna ut en sekvens av taggar sådan att sannolikheten för den taggade meningen är maximal. Taggsekvensen är inte given i förväg; den är hidden (dold)! För en och samma mening finns det många olika taggsekvenser med många olika sannolikheter; sökrymden är stor. 384 olika möjligheter för exempelmeningen Trots detta kan den mest sannolika taggsekvensen beräknas på ett effektivt sätt med hjälp av Viterbi-algoritmen.
Beskrivning Algoritmen tar in en HMM och en mening och beräknar den mest sannolika taggsekvensen för meningen i modellen. Algoritmen fyller en matris som innehåller en rad för varje möjlig tagg och en kolumn för varje möjlig position i meningen. I den här presentation fyller vi matrisen med negativa logsannolikheter; vi kan tolka dessa som kostnader i kronor. för att undvika flyttalsbottning
Målbeskrivning Algoritmen ska se till att matrisvärdet i rad t, kolumn i blir den lägsta möjliga kostnaden för att tagga de första i orden i meningen på ett sådant sätt att ord nummer i får tagg t. Kom ihåg att lägsta möjliga kostnad = högsta möjliga sannolikhet. Om algoritmen kan åstadkomma detta kan vi läsa av den lägsta möjliga kostnaden för att tagga hela meningen från den sista raden av matrisen. eller nästan
Viterbi-matrisen jag 1 bad 2 om 3 en 4 kort 5 bit 6 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
Övergångskostnader PN VB PP DT JJ NN EOS BOS 1,69 3,58 2,25 2,50 3,37 1,76 11,19 PN 4,00 0,69 2,34 4,00 3,69 3,85 7,94 VB 1,95 2,17 2,04 2,56 2,97 2,18 6,87 PP 3,09 6,42 5,49 1,82 2,43 0,85 8,38 DT 5,61 10,22 5,26 5,82 0,93 0,84 10,22 JJ 5,73 3,62 2,98 5,68 3,28 0,43 6,35 NN 5,30 1,70 1,49 5,17 4,23 3,11 4,30
Observationskostnader jag bad om en kort bit PN 3,66 12,08 12,08 6,08 12,08 12,08 VB 12,53 8,79 12,53 12,53 12,53 12,53 PP 12,33 12,33 3,83 12,33 12,33 12,33 DT 11,99 11,99 11,99 2,29 11,99 11,99 JJ 12,09 12,09 12,09 12,09 7,25 12,09 NN 9,47 10,33 12,73 12,03 9,78 8,19
Den första kolumnen jag 1 bad 2 om 3 en 4 kort 5 bit 6 DT 14,49 JJ NN PN PP VB P(DT BOS) + P(jag DT) = 2,50 + 11,99 = 14,49
Den första kolumnen jag 1 bad 2 om 3 en 4 kort 5 bit 6 DT 14,49 JJ 15,46 NN 11,22 PN 5,35 PP VB P(PN BOS) + P(jag PN) = 1,69 + 3,66 = 5,35
De övriga kolumnerna: Flera möjligheter jag 1 bad 2 om 3 en 4 kort 5 bit 6 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 28,86 + P(DT PN) + P(en DT) = 28,86 + 4,00 + 2,29 = 35,15
De övriga kolumnerna: Flera möjligheter jag 1 bad 2 om 3 en 4 kort 5 bit 6 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 20,70 + P(DT PP) + P(en DT) = 20,70 + 1,82 + 2,29 = 24,82
Välja ut den bästa cellen i sista kolumnen jag 1 bad 2 om 3 en 4 kort 5 bit 6 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 45,93 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 41,63 + P(EOS NN) = 41,63 + 4,30 = 45,93
Följ backpointers för att rekonstruera den bästa taggsekvensen jag 1 bad 2 om 3 en 4 kort 5 bit 6 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 45,93 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
Den bästa taggsekvensen är inte nödvändigtvis sekvensen av de bästa taggarna! jag 1 skrev 2 på 3 utan 4 att 5 tveka 6 IE 17,22 21,69 30,02 33,79 34,63 54,70 PL 21,77 21,20 22,10 39,77 49,28 55,06 PN 5,35 21,43 27,87 33,85 44,12 48,09 PP 14,59 20,02 18,69 28,95 44,66 50,70 SN 15,83 21,51 29,20 34,29 35,24 51,40 VB 16,11 13,84 28,54 37,64 43,96 44,86 51,74
Viterbi-algoritmen i all korthet För att beräkna kostnaden för en tagg i den första ordkolumnen: övergångskostnaden från BOS + observationskostnaden för det första ordet För att beräkna kostnaden för en tagg i någon annan ordkolumn: välj en tagg i föregående ordkolumn som minimerar denna summa: redan beräknad kostnad för denna tagg i föregående ordkolumn + övergångskostnaden från denna tagg + observationskostnaden för det aktuella ordet För att beräkna kostnaden för den fullständiga meningen: välj en tagg i den sista ordkolumnen som minimerar denna summa: redan beräknad kostnad för denna tagg i den sista ordkolumnen + övergångskostnaden till EOS
Övningsuppgift till Viterbi-algoritmen övergångssannolikheter observationssannolikheter PL PN PP VB EOS jag skrev på BOS 10 1 2 3 18 PL 16 16 3 PL 16 2 1 4 6 PN 2 18 18 PN 4 3 2 0 7 PP 18 18 2 PP 11 3 5 6 8 VB 18 7 18 VB 2 1 2 2 6
Övningsuppgift till Viterbi-algoritmen jag 1 skrev 2 på 3 BOS PL PN PP VB EOS
Övningsuppgift till Viterbi-algoritmen jag 1 skrev 2 på 3 BOS 0 PL 26 23 15 PN 3 24 29 PP 20 23 14 VB 21 10 30 EOS 21
Övningsuppgifter
Uppgift: Utvärdering av en ordklasstaggare NN JJ VB NN 60 6 3 JJ 6 12 3 VB 0 6 42 Ställ upp bråk för följande: taggarens precision på substantiv taggarens täckning (recall) på adjektiv Ange en annan förväxlingsmatris där taggarens korrekthet är densamma som i den angivna matrisen men där taggarens täckning på adjektiv är 0%.
Uppgift Du vill räkna ut den totala sannolikheten som en HMM tilldelar nedanstående ord tagg-sekvens. Du kan fråga modellen efter dess atomära sannolikheter, men varje sådan fråga kostar 1 krona. Vilka frågor måste du ställa, och hur många kronor måste du betala? jag skrev på utan att tveka PN VB PL PP IE VB
Metod 3: Perceptron-taggning
Ordklasstaggning som klassifikation Ordklasstaggning kan brytas ned till en sekvens av klassifikationsproblem: en klassifikation per ord. Utifrån denna idé kan vilken klassifikationsmetod som helst byggas om till en metod för ordklasstaggning. beslutsträd, neuronnät, Naive Bayes Här använder vi en av de enklaste modellerna för klassifikation, perceptronen.
Multiklass-perceptron x 1 θ 1 Σ z(x 1, x 2 ) θ 1 x 2 θ 2 θ 2 Σ z(x 1, x 2 ) De två enheterna bjuder; den enhet som vinner får predicera klassen.
Perceptrontaggning jag bad om en kort bit NN 09,36 PN 81,72 VB 9,18
Perceptrontaggning jag bad om en kort bit PN 81,72 NN 09,36 VB 9,18
Perceptrontaggning jag bad om en kort bit PN NN 16,08 PN 4,02 VB 64,32
Perceptrontaggning jag bad om en kort bit PN VB 64,32 NN 16,08 PN 4,02
Perceptrontaggning jag bad om en kort bit PN VB
Skillnader mellan de två metoderna HMM-taggning uttömmande sökning efter den bästa sekvensen begränsade möjligheter att definiera särdrag aktuellt ord, föregående tagg Perceptron-taggning ingen sökning; endast lokalt optimala beslut girig sökning större möjligheter att definiera särdrag
Girig sökning med HMM:er Välj den tagg som ger den högsta kombinerade övergångs-/observationssannolikheten: tagg för ordet w i = argmax t P(t t i 1 ) P(w i t) Om man använder HMM:er på detta sätt får man inte den globalt bästa taggsekvensen utan bara de lokalt bästa taggarna!
Jämförelse mellan de två metoderna HMM Perceptron Viterbi girig sökning HMM-särdrag bättre särdrag 92,71% 89,97% 88,86% 95,30% taggarens korrekthet på SUCs testmängd Perceptron-baserade ordklasstaggare ger state-of-the-art-resultat på flera språk och datamängder.
Guider med viktade särdrag Beskriv datan i fönstret genom särdrag (eng. features). Särdragens roll under träningen Träningen ska vikta särdragen: Talar detta särdrag för eller emot antagandet att det aktuella ordet har en given ordklass? perceptroninlärning vikterna förstärks eller försvagas Särdragens roll under taggningen De viktade särdragen läggs ihop till en taggspecifik summa och taggaren väljer den tagg som har fått den högsta summan.
Särdragsfönster HMM:er tittar bakåt; men ibland är det bra att titta framåt också! Jag bad om en kort bit. Samtidigt vill vi inte ta in alltför mycket information. effektivitet, datagleshet En kompromiss är att definiera ett avgränsat särdragsfönster.
Särdragsfönster jag bad om en kort bit BOS PN EOS Med detta särdragsfönster kan särdrag extraheras från aktuellt ord, föregående ord, föregående tagg, nästa ord.
Särdragsfönster jag bad om en kort bit BOS PN VB EOS Under taggningen flyttas särdragsfönstret över meningen.
Viktade särdrag särdrag vikt särdrag vikt word=jag 2,94 word=jag 1,17 word=bad 1,56 word=bad 0,43 word=om 4,10 word=om 3,90 word=en 4,08 word=en 4,95 word=kort 0,39 word=kort 1,92 VB NN
Exempel på särdrag Om vi tror att det aktuella ordet är det enda som räknas: [current_word=bad] Om vi tror att det nästa ordet är också viktigt: [current_word=bad, next_word=om] Om vi tror att det är deras kombination som är mest prediktiv: [current_word=bad+next_word=om]
Begränsningar av perceptronen x 2 x 2 0 1 0 1 0 0 x 1 1 0 x 1 linjär separerbar inte linjär separerbar
Nya särdrag till hjälp! x 2 0 1 1 x 3 x 3 = 0 0 x 1
Nya särdrag till hjälp! x 2 0 1 x 3 1 0 x 1 x 3 = xor(x 1, x 2 )
Feature engineering versus feature learning Nästan alla problem blir linjärt separerbara om man bara kan hitta på bra särdrag. Detta mappar det ursprungliga problemet till en ny särdragsrymd. Problemet är att man måste hitta på dessa särdrag för hand. feature engineering På senare tid har man därför blivit alltmer intresserad av artificiella neuronnät, som kan lära sig relevanta särdrag. feature learning
Sammanfattning: Ordklasstaggning Ordklasstaggning går ut på att tagga alla ord i en mening med fördefinierade ordklasser. Viktiga begrepp: förväxlingsmatris, tagglexikon, Hidden Markovmodel, Viterbi-algoritm, multiklass-perceptron, särdragsfönster Läsanvisningar: JM kapitel 5.1 5.5, 5.7