TDDD02 Språkteknologi för informationssökning / 2015 Ordpredicering Marco Kuhlmann Institutionen för datavetenskap
Ordpredicering Ordpredicering innebär att föreslå eller välja ord i en given kontext.
Tillämpningar av ordpredicering föreslå ytterligare aller alternativa söktermer höja effektiviteten vid textinmatning uppmärksamma och korrigera stavfel ge stöd till funktionshindrade
Översikt över dagens föreläsning n-gram-modeller för att föreslå det nästa ordet utifrån de föregående orden redigeringsavstånd för att föreslå alternativa stavningar
N-gram-modeller
Ordpredicering Ordpredicering innebär att föreslå eller välja ord i en given kontext.
Shannons spel Shannons spel liknar Hänga gubbe förutom att det är inte roligt man får bara gissa ett tecken i taget Claude Shannon (1916 2001)
Shannons spel, nu med ord Olika ord har olika stora sannolikheter att dyka upp som nästa ord, givet de föregående orden. P(en är) > P(göra är) För att predicera nästa ord kan vi välja det ord som har den största sannolikheten bland alla möjliga ord w: predicerat ord = argmax w P(w föregående orden)
Betingade sannolikheter exempel: ord 20 = en P(hypotes evidens) exempel: ord 19 = är
Markov-antagande Sannolikheten för varje ord är endast beroende av det närmast föregående ordet. Sannolikheten för en hel mening ges av produkten av alla dessa sannolikheter: P(w 1, w 2, w 3 ) P(w 2 w 1 )P(w 3 w 2 ) Hur börjar en mening? Hur slutar en mening? beginning-of-sentence, end-of-sentence Андрéй Мáрков (1856 1922)
Markov-modell med BOS och EOS beginning-of-sentence P(w 1, w 2, w 3 ) P(w 1 BOS)P(w 2 w 1 )P(w 3 w 2 )P(EOS w 3 ) end-of-sentence
Språkmodeller En språkmodell är en sannolikhetsmodell för meningar. Sannolikheterna i en språkmodell uppskattas utifrån data om existerande meningar. Texter som samlats in för språkvetenskapliga eller språkteknologiska syften kallas korpusar.
N-gram-modeller Ett n-gram är en sekvens av n ord. unigram, bigram, trigram En n-gram-modell är en språkmodell där sannolikheten för varje ord är endast beroende av de n 1 föregående orden. Markov-antagandet = bigram-modell
Slumpa fram meningar i en bigram-modell Välj ett ord w 1 med sannolikhet P(w 1 BOS). Välj ett ord w 2 med sannolikhet P(w 2 w 1 ). Välj ett ord w 3 med sannolikhet P(w 3 w 2 ). Och så vidare, tills du väljer EOS.
Skattning av n-gram-modeller
Relevanta sannolikheter P(w 1 ) P(w 2 w 1 ) P(w 3 w 1 w 2 ) unigram-modell bigram-modell trigram-modell
ML-skattning av bigramsannolikheter f(w 1 w 2 ) antalet förekomster av bigrammet w 1 w 2 f(w 1 ) antalet förekomster av unigrammet w 1
Övningsuppgift I en korpus som omfattar 100000 ord hittar vi ordet det 1500 gånger, ordet är 1800 gånger, sekvensen det är 250 gånger, ordet sägs 10 gånger, och sekvensen det sägs 0 gånger. Skatta följande sannolikheter med ML-metoden: unigramsannolikheten P(det) bigramsannolikheten P(är det) bigramsannolikheten P(sägs det)
Problem med ML-skattning Shakespeares verk innehåller ca. 31000 olika ord. Det finns 961 miljoner olika bigram med dessa ord. I hans texter hittar vi bara 300000 olika bigram. Detta betyder att 99,97% av alla teoretiskt möjliga bigram har frekvens 0. I en bigram-modell kommer varje mening som innehåller ett sådant bigram få sannolikhet 0.
ML-skattning med Add One-utjämning f(w 1 w 2 ) antalet förekomster av bigrammet w 1 w 2 f(w 1 ) antalet förekomster av unigrammet w 1
Interpolering och backoff Interpolering kombinera sannolikheter från flera n-gram-modeller: λ 3 P(w 3 w 1, w 2 ) + λ 2 P(w 3 w 2 ) + λ 1 P(w 3 ) Backoff använd trigram-modellen om tillräckligt mycket data finns, annars bigram-modellen, sist unigram-modellen
Utvärdering av språkmodeller
Två sorters utvärderingar Extrinsisk utvärdering (in vivo) mäta hur bra modellen är på att hjälpa oss lösa den uppgift som vi är intresserade i, t.ex. stavningkorrektur mest relevant utvärdering, men dyrt Intrinsisk utvärdering (in vitro) mäta kvalitén hos modellen med hjälp av något mått som approximerar den extrinsiska utvärderingen billigt, men mindre relevant utvärdering
Utvärdering av språkmodeller Intuition: En bra språkmodell är en språkmodell som föredrar bra meningar framför dåliga meningar. Korrekta, ofta förekommande meningar borde få en högre sannolikhet än inkorrekta, sällan förekommande meningar.
Utvärderingsmetodologi Vi skapar en språkmodell utifrån en mängd träningsdata. riksdagsanföranden 2012/13 Vi utvärderar språkmodellen på en mängd testdata. riksdagsanföranden 2013/14
Utvärderingsmått Vi söker ett mått för att utvärdera en n-gram-modell. Idé: Använd modellen för att räkna ut sannolikheten för en mängd testmeningar. En bra modell borde ge hög sannolikhet. Problem: Sannolikheten blir mindre ju längre texterna blir, vilket gör det svårt att jämföra modeller med det. Idé: Normalisera måttet med avseende med texternas längd.
Entropi Entropi mäter oförutsägbarheten hos en text. Med vår språkmodell som utgångspunkt, hur överraskade är vi (i genomsnitt per ord) när vi läser texten?
Negativa logaritmer som kostnader 5 3,75 log p 2,5 1,25 0 0 0,25 0,5 0,75 1 p
Entropi i en bigram-modell Entropi mäter oförutsägbarheten hos en text. I en bigram-modell kan vi approximera en texts oförutsägbarhet genom att summera över alla bigram-oförutsägbarheter. ( 1,..., ) = 1 log 2 ( 1 ) =1
Entropi på språkliga data bra språkmodell = testtext får hög sannolikhet = låg entropi Wall Street Journal, trigram-modell: 6,77 dålig språkmodell = testtext får låg sannolikhet = hög entropi Wall Street Journal, unigram-modell: 9,91
Redigeringsavstånd
Ordpredicering Ordpredicering innebär att föreslå eller välja ord i en given kontext.
Stavningskorrektur Många felstavade ord är ganska lika de rättstavade orden; det är bara enskilda tecken som har bytt plats. lingvisterma, word prefiction Givet ett möjligtvis felstavat ord vill vi kunna föreslå ett eller flera liknande ord och föreslå de mest sannolika av dessa.
Redigeringsavstånd Vi kan mäta likheten mellan två ord genom att räkna antalet operationer som krävs för att överföra det ena till det andra. Här antar vi följande redigeringsoperationer: insertion deletion substitution lägga till in ett tecken ta bort ett tecken ersätt ett tecken med ett annat
Exempel Hur många operationer krävs för att göra om intention till execution? intention ta bort i ersätt n med e ersätt t med x lägg till c ersätt n med u ntention etention exention execntion execution
Probabilistisk stavningskorrigering P(R F) = P(F R) P(R) P(R F) kan användas för att ranka olika hypoteser om vilket rättstavat ord R som kan ha varit avsett givet ett felstavat ord F. P(R) är apriorisannolikheten för det rättstavade ordet; den kan ges av en språkmodell (unigram, bigram, trigram, ). P(F R) betecknar sannolikheten för att R har förvanskats till F; den kan baseras på redigeringsoperationer.
Levenshtein-avstånd För varje redigeringsoperation definieras en kostnad: Kostnaden för insertion och deletion är 1. Kostnaden för substitution är 0 om den nya bokstaven är samma som den gamla, och 2 i alla andra fall. Levenshtein-avståndet mellan två ord är den lägsta möjliga kostnaden för att föra över det ena ordet till det andra.
Beräkna redigeringsavståndet Vi söker efter en sekvens av operationer som transformerar det ena ordet till det andra och har lägsta möjliga kostnad. Problem: Det kan finnas ett stort antal olika sekvenser med olika kostnader; sökrymden för detta problem är mycket stor. Men vi vill ju bara ha sekvenser med lägsta möjliga kostnad! Dynamisk programmering: Lösa komplexa problem genom att kombinera lösningar till delproblem.
Delproblem för Levenshtein-avståndet Givet ett ord source med m tecken och ett ord target med n tecken, definiera L(i, j) som Levenshtein-avståndet mellan de första i tecken i source och de första j tecken i target. Levenshtein-avståndet mellan source och target är alltså L(m, n). L(i, j)-värdena kan beräknas genom att fylla en tabell för allt större värden av i och j.
n o i t n e t n i # # e x e c u t i o n Vi vill överföra intention till execution.
n o i t n e t n i # 0 # e x e c u t i o n Det kostar ingenting att överföra en sekvens av noll tecken till en sekvens av noll tecken.
n 9 o 8 i 7 t 6 n 5 e 4 t 3 n 2 i 1 # 0 # e x e c u t i o n Vi kan överföra intention till den tomma sekvensen genom att ta bort alla tecken, ett efter ett.
n 9 o 8 i 7 t 6 n 5 e 4 t 3 n 2 i 1 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n Vi kan överföra den tomma sekvensen till execution genom att infoga alla tecken, ett efter ett.
n 9 8 o 8 7 i 7 6 t 6 5 n 5 4 e 4 3 t 3 4 5 n 2 3 4 i 1 2 3 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n I det allmänna fallet finns tre möjliga operationer. Vi vill välja den som har lägst kostnad.
n 9 8 o 8 7 i 7 6 t 6 5 n 5 4 e 4 3 4 t 3 4 5 n 2 3 4 i 1 2 3 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n Hur kan vi överföra inte till ex? Möjlighet 1: Överför inte till e och foga in x, inte e ex
n 9 8 o 8 7 i 7 6 t 6 5 n 5 4 e 4 3 6 t 3 4 5 n 2 3 4 i 1 2 3 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n Hur kan vi överföra inte till ex? Möjlighet 2: Ta bort e och överför int till ex, inte int ex
n 9 8 o 8 7 i 7 6 t 6 5 n 5 4 e 4 3 6 t 3 4 5 n 2 3 4 i 1 2 3 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n Hur kan vi överföra inte till ex? Möjlighet 3: Ersätt e med x och överför int till e, inte intx ex
n 9 8 o 8 7 i 7 6 t 6 5 n 5 4 e 4 3 4 t 3 4 5 n 2 3 4 i 1 2 3 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n Insertion är billigast i det här fallet.
n 9 8 9 10 11 12 11 10 9 8 o 8 7 8 9 10 11 10 9 8 9 i 7 6 7 8 9 10 9 8 9 10 t 6 5 6 7 8 9 8 9 10 11 n 5 4 5 6 7 8 9 10 11 10 e 4 3 4 5 6 7 8 9 10 9 t 3 4 5 6 7 8 7 8 9 8 n 2 3 4 5 6 7 8 7 8 7 i 1 2 3 4 5 6 7 6 7 8 # 0 1 2 3 4 5 6 7 8 9 # e x e c u t i o n Levenshtein-avståndet för det här exemplet är 8.
Mera finkorniga vikter I praktiken används ofta mera finkorniga vikter. s istället för a är vanligare än d istället för a Vi kan fortfarande använda samma algoritm; det enda som vi måste anpassa är kostnadsberäkningen.
Warren Weaver (1894 1978) When I look at an article in Russian, I say: This is really written in English, but it has been coded in some strange symbols. I will now proceed to decode.
Den brusiga kanalen avsändare E R mottagare brus Ryska (R) är förvanskad engelska (E). argmax E P(E R) = argmax E P(R E) P(E)
Den brusiga kanalen rättstavat R F felstavat brus Felstavade ord (F) är förvanskade rättstavade ord (R). argmax R P(R F) = argmax R P(F R) P(R)
Sammanfattning Ordpredicering = föreslå eller välja ord i en given kontext Tillämpningar: föreslå alternativa söktermer, effektivisera inmatningen, uppmärksamma eller korrigera stavfel Centrala begrepp: Markov-antagande, n-gram-modell, unigram, bigram, trigram, entropi, Levenshtein-avstånd