Göm menyn

729G17 Språkteknologi

Labkurs


Laboration 1 - Ordklasstaggning och textmanipulation

Laboration 1 - Ordklasstaggning och textmanipulation

Dessa instruktioner gäller båda kurskoderna 729G17 och TDDD01. Information om redovisning och inlämning finns längst ner på sidan.

Syfte

Syftet med labben är

  • att illustrera en enkel regelbaserad metod för automatisk klassificering av ord i löpande text,
  • att öva förmågan att se mönster i hur ord av olika ordklasser uppträder tillsammans,
  • att illustrera och öva användningen av reguljära uttryck för att modifiera textdata.

Labben använder sig av en enkel ordklasstaggare med ett lexikon och olika regelfiler för att ge varje ord i texten rätt ordklass.

Den första uppgiften går ut på att förbättra ordklasstaggningen genom att utöka regelfiler och lexikon. Ett utvärderingsskript finns tillgängligt för att enkelt kunna utvärdera systemets prestanda och mäta förbättringar. I den andra uppgiften ska ni extrahera och normalisera textdata från en XML-formaterad fil.

Förberedelser

Läs kursbokens kapitel 5.3-5.4 och 5.6 och oh-bilderna från föreläsningen om ordklasstaggning. Om du glömt hur man skriver reguljära uttryck, som behövs för Uppgift 2, kan du titta på

Uppgift 1

För uppgiften behövs följande:

Sätt upp systemet enligt instruktionerna i resursen och kopiera de filer ni behöver ändra i d.v.s. filerna

  • lex - lexikonfil
  • endings - ändelsefil
  • trules - kontextregelfil
från katalogen ~729G17/resurser/Lab1/ till din arbetskatalog.

Uppgiften går ut på att förbättra taggningssystemet tagga genom att utöka dess resursfiler. Filen telegram.sep används som källtext och filen telegram.facit för utvärdering. Telegrammen i källtexten är formaterade för att taggaren ska kunna använda texten, d.v.s. varje mening står på en egen rad och alla skiljetecken är separerade från orden.

Tagga källtexten och studera utdata. Vilka typer av fel gör taggaren? Använd systemets utvärderings-script score tillsammans med filen telegram.facit för att räkna ut korrekthet och analysera din resultatfil. Uppdatera lexikon-, ändelse- och kontextregelfilerna så att taggaren blir bättre. Du ska skriva så få och så generella regler som möjligt. Ett tips är att identifiera ord och grupper av ord där samma fel uppträder flera gånger.

Upp till 10 kontextregler och 5 ändelseregler bör vara tillräckligt. Minst en regel måste läggas till i varje regelfil. Ord som inte kan hanteras generellt kan läggas in i lexikonet. När ditt system presterar 98% korrekt jämfört med facit är ni klara.

Uppgift 2:

I denna uppgift ska du arbeta med en XML-formaterad text kallad telegram.nitf.

Du kan titta på filens struktur i en webbläsare (Firefox).

Källtexten från Uppgift 1 var segmenterad och tokeniserad så att varje mening stod på egen rad och skiljetecken var separerade från löporden. I den här uppgiften ska du formatera den XML-formaterade filen, så att den går att tagga med labsystemet. Slutresultatet ska uppfylla följande krav:

  • Textinnehållet från elementen RUBRIK, INGRESS och BRODTEXT ska finnas med.
  • Inga XML- eller HTML-taggar eller rester av sådana ska finnas med.
  • Varje mening ska stå på egen rad.
  • Alla skiljetecken, inklusive parenteser och citattecken ska stå som egna tokens.
  • Bokstavstecknen å,ä,ö,é,Å,Ä,Ö ska vara i klartext (Latin-1 eller UTF), inte som HTML-entiteter.

Kontrollera att du kan tagga texten, när du är färdig och att skiljetecken blir taggade som egna tecken. Du behöver dock inte åtgärda kvalitén på taggningen.

Tips!

Uppgiften omfattar olika moment som måste kombineras:

  • Substitution av vissa teckensträngar mot andra,
  • Borttag, dvs substitution med den tomma strängen, av vissa strängar,
  • Extraktion av strängar i givna kontexter,
  • Insättning av strängar, t.ex. blanktecken eller radbrytning, i andra kontexter

Uppgiften kan lösas med många språk. Om du vill förbättra din förmåga att använda Python rekommenderar vi skriptet nedan. Alternativt, kan du utgå från ett motsvarande sed-script.

Ett sed-script
Ett Python-script

Redovisning & Deadline

Redovisa genom att skicka epost till Christian (christian.smith@liu.se), samt lämna in uppgifterna i labbomslag. I rubriken skriver ni <kurskod>-labnr-namn och ni bifogar efterfrågad information som filer/bilagor. Utöver epost skall alltså ordinarie laborationsredogörelsehäften användas i vilka ni bifogar utskrifter av uppgifterna ni mailade. Dessa lämnas i Christians fack.

Uppgift 1 redovisar ni genom att bifoga resultatet från den slutgiltiga körningen med utvärderings-scriptet och ändelse- och kontextregelfilerna samt de rader (lexikoningångar) ni själv lagt till i lexikonet.

Inlämningsuppgift 2 redovisar ni med den tokeniserade texten och en beskrivning av hur ni gått tillväga, exempelvis med kommenterad kod.

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).

Lästips


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