Göm menyn

729G17 Språkteknologi

Labkurs


 

Laboration 3 - Statistiska språkmodeller

Dessa instruktioner gäller båda kurskoderna TDDD01 och 729G17.

Inledning

Labben handlar om att skapa och utvärdera statistiska språkmodeller (n-grammodeller) för svenska och fundera över deras användning. Den omfattar hantering av osedda n-gram, s.k. smoothing, och utvärdering med hjälp av måttet perplexitet. Ni kommer att skapa unigram-, bigram- och trigram-modeller baserat på två olika texter.

Syfte

  • att ge kunskap om hur ngram-baserade språkmodeller skapas, utvärderas och ser ut,
  • att ge insikt i vilket slags "språk" de accepterar/genererar,
  • att öva förmågan att tillämpa dem på statistisk maskinöversättning

Förberedelser

Läs kapitel 4.1-4.7 om N-gram i kursboken och oh-bilder från föreläsningen om statistiska språkmodeller samt kapitel 25.3 om statistisk maskinöversättning.

Data och resurser

De program och den data ni behöver ligger i katalogen ~729G17/resurser/Ngram/.

ngram.pl

är ett Perl-program för att skapa bigrammodeller med add_x smoothing. Programmet bygger modeller utifrån en träningstext och utvärderar modellen på en testtext. Programmet tar tre argument.

  • en smoothing-konstant: ett tal över 0 (om talet är 1 utförs add-1 smoothing)
  • en träningstext
  • en testtext

Följande exempel skapar en bigrammodell med "add-1 smoothing" som den beskrivs i boken. Modellen tränas på texten eu-train och utvärderas på texten eu-test.

  • perl ngram.pl 1 eu-train eu-test

generate.pl

är ett program för att generera meningar från uni-, bi- och trigrammodeller. Programmet tar tre parameterar:

  • Ngrammodell: n1, n2 eller n3
  • Antalet meningar
  • En träningstext

Följande exempel genererar 5 meningar från en bigrammodell av texten train.

  • perl generate.pl n2 5 train

Träning och testdata

Ngram-sannolikheterna i språkmodellerna beräknas utfirån en korpus. Katalogen ~729G17/resurser/Ngram/ innehåller tränings och testfiler från två domäner: texter från EU-parlamentet (eu-train, eu-test) och utdrag från Harry Potter (hp-train, hp-test).

Utförande

  1. Kopiera filerna ngram.pl och generate.pl från katalogen ~729G17/resurser/Ngram/ till din arbetskatalog.
  2. Kopiera textfilerna för träning och testning av språkmodeller från ~729G17/resurser/Ngram/ till din katalog.
  3. Gör perlprogrammen körbara genom att skriva:
    • chmod u+x ngram.pl
    • chmod u+x generate.pl

Uppgift 1

Denna uppgift testar din förståelse av bigrammodeller. Du behöver inte göra några körningar på datorn. Frågorna som ska besvaras finns i slutet av stycket.

Uppgiften utgår från en text bestående av tre meningar:

Kalle äter .
Sara läser .
Sara äter inte .

Från texten skapas en språkmodell med en begränsad vokabulär som endast består av orden {Kalle, Sara, äter, läser, inte, ., <s>, </s>}. Symbolerna <s> och </s> står för start respektive slut av mening. I tabellen visas två modeller. I modellen MLE är bigram-sannolikheterna endast baserade på relativ frekvens i texten. I modellen Add-1 har bigram-sannolikheterna blivit utjämnade med Add-1 smoothing. Sannolikheten för första ordet o i en mening ges av p(o | <s>) vilket följer beskrivningen i kursboken.

Den sista kolumnen i tabellen innehåller den logaritmerade sannolikheten som är ett praktiskt sätt att skriva sannolikheter så att man slipper jobba med extremt små tal som t.ex. 0.0000000001.

Exempel: Vi singlar slant. Om vi kallar utfallet att myntet hamnar med kronan upp för K så kan vi anta att p(K)=0.5. Den logaritmerade sannolikheten för K blir då log(P(K)) = log(0.5) = -1 (eftersom 2-1 = 1/(21) = 0.5).

Bigram MLE prob Add-1 prob log(prob)
p(äter | Sara) 1/2 2/9 -2.17
p(läser | Sara) 1/2 2/9 -2.17
p(Sara | Sara) 0 1/9 -3.17
p(Kalle | Sara) 0 1/9 -3.17
p(inte | Sara) 0 1/9 -3.17
p(</s> | Sara) 0 1/9 -3.17
p(. | Sara) 0 1/9 -3.17
p(äter | Kalle) 1/1 2/8 -2
p(läser | Kalle) 0 1/8 -3
p(inte | Kalle) 0 1/8 -3
p(. | Kalle) 0 1/8 -3
p(Sara | Kalle) 0 1/8 -3
p(Kalle | Kalle) 0 1/8 -3
p(</s> | Kalle) 0 1/8 -3
p(Sara | <s>) 2/3 3/10 -1.74
p(Kalle | <s>) 1/3 2/10 -2.32
p(inte | <s>) 0 1/10 -3.32
p(läser | <s>) 0 1/10 -3.32
p(äter | <s>) 0 1/10 -3.32
p(. | <s>) 0 1/10 -3.32
p(</s> | <s>) 0 1/10 -3.32
p(</s> | .) 3/3 4/10 -1.32
p(inte | äter) 1/2 2/9 -2.17
p(. | äter) 1/2 2/9 -2.17
p(. | läser) 1/1 2/8 -2
p(inte | läser) 0 1/8 -3

Frågor att besvara:

  1. Vad är unigram-sannolikheten för ordet 'Sara' utifrån texten dvs. P(Sara)?
  2. Vad är sannolikheten för att Sara är det första ordet i en mening enligt MLE-modellen?
  3. Vad är p(Sara läser .) (a) utan smoothing av modellen? (b) med add-1 smoothing?
  4. Vad är p(Kalle läser .) (a) utan smoothing av modellen? (b) med add-1 smoothing?
  5. Givet en ändlig vokabulär som ovan, vad är summan av sannolikheterna för alla bigram som börjar med <s>,
    dvs ∑w p(w|<s>)?

Uppgift 2

  1. Programmet ngram.pl skapar bigrammodeller med smoothing-metoden Add-x. Skapa en språkmodell med "Add-1"-smoothing genom att skriva:
    > ngram.pl 1 eu-train eu-test
    Programmet kommer skapa en bigrammodell från träningstexten och utvärdera modellen på testtexten.
  2. Notera resultatet av utvärderingen på test-texten. Förklara vad sifforna betyder. Det ska tydligt framgå att ni har förstått hur man utvärderar språkmodeller! Läs i kursboken och fråga labbhandledaren om något är oklart.
  3. Testa nu att ändra värdet på variablen x så att ett tal mindre än 1 läggs till vid beräkning av sannolikheter (talet bör vara större än 0). Testa olika tal. Notera resultatet och förklara vad skillnaderna beror på. Bestäm det värde på x som ger bäst resultat.
  4. Skapa en språkmodell från en av texterna med ditt optimala x-värde och utvärdera modellen på samma text som den tränades på. Jämför med resultatet av den första körningen och förklara skillnaden.
  5. Skapa en språkmodell från en av texterna och utvärdera den på en text från en annan domän. Notera resultatet och jämför med resultatet från de två tidigare körningarna. Vad beror skillnaderna på?
  6. Generera meningar från språkmodeller för olika ngram:
    • generate.pl n1 5 train
    • generate.pl n2 5 train
    • generate.pl n3 5 train

    Vilken modell producerar bäst meningar och varför?

Uppgift 3

Läs på om statistisk maskinöversättning (t.ex. stycke 25.3 i kursboken) och besvara följande frågor:
  1. Låt säga att vi med hjälp av ett probabilistiskt lexikon (översättningsmodell) fått fram följande möjliga översättningar av den engelska meningen 'Mary did not slap the witch'. Lexikonet innehåller också sannolikheter för att ett ord stryks dvs. översätts till ingenting.
    • Mary
    • Mary slog inte häxan
    • Mary inte slog häxan

    Hur rangordnar en svensk språkmodell dessa översättningar med avseende på hur sannolika de är? Tips: utgå från en bigramsmodell där varje ordpar har en godtycklig sannolikhet mellan 0 och 1.

  2. Vilken typ av ngrammodell skulle behövas för att kunna avgöra vilken av nedanstående översättningar som är bäst? Motivera ert svar.
    • den häxan gröna
    • den gröna häxan
  3. Samma fråga för paret
    • den gröna häxan
    • det gröna häxan
  4. Översätt följande meningar till engelska med Google Translate och iaktta hur översättningshypotesen förändras för varje ord som skrivs in.
    • Jag passar i den här jackan.
    • Jag passar bollen till henne.
    • Jag passar på att åka skidor.

    Nämn två möjliga skäl till att översättningen av ordet 'passar' varierar i olika kontexter, givet att Google translate är ett frasbaserat statistiskt översättningssystem såsom det beskrivs i kursboken. Testa gärna att översätta andra meningar för att se hur översättningshypotesen förändras.

 

Redovisning & Deadline

Redovisa genom att skicka epost till Christian (christian.smith@liu.se) samt lämna in utskrifter av dokumenten i ordinarie laborationsregörelsehäften i facket utanför hans dörr. I rubriken till mailet skriver ni -labnr-namn och ni bifogar efterfrågad information som filer/bilagor i vilka ni bifogar klara och tydliga utskrifter av efterfrågad information.

  • Redovisa uppgifterna i Del 1 och 3 med era svar på frågorna.
  • Del 2 ska redovisas både med resultatet av era körningar och svar på frågorna.
För högre betyg på labkursen måste ni ha redovisat inlämningsuppgifterna innan uppsatt deadline (se labkursens huvudsida för 729G17 resp. TDDD01).


Sidansvarig: Lars Ahrenberg
Senast uppdaterad: 2013-01-22