Göm menyn

729G09 Språkvetenskaplig databehandling

Laboration 2


 

729G09 Laboration 2

 

Laboration 2 : Bearbetning av formaterad, lingvistiskt uppmärkt text

 

Inledning

I denna laboration kommer ni använda texter som fått en automatisk lingvistisk analys av verktyget Machinese Syntax från det finska företaget Connexor. En sådan lingvistisk analys är ofta en nödvändighet inom en mängd olika grenar av språkteknologi, exempelvis entitetsextraktion, frågebesvarande system och läsbarhetsmått. Texterna är formaterade i XML (Extended Markup Language).

Efter Laboration 2 ska du kunna:

  • använda kommandoradsverktyg och skript för att extrahera och sammanställa data från lingvistiskt uppmärkt text, t.ex. i form av olika ord- och fraslistor,
  • utvärdera verktyg för lingvistisk analys kvalitativt,
  • använda sh-filer.

 

Data och resurser

Ni kommer att jobba med en text som är uppmärkt med hjälp av Machinese Syntax: lab2text.xml. Ni kan jämföra den uppmärkta texten med ursprungstexten (lab2text.txt). Sätt er in i hur utdata från Machinese Syntax representeras genom att studera:

Var finns resurserna?

Texter och andra resurser ni behöver för denna labb kopieras från katalogen:

~729G09/www-pub/vt16/Lab2/

 

Verktyg för övningar och inlämningsuppgifter

Följande texter beskriver de Unix-verktyg ni behöver för att bygga lexikon och fraslistor.

  • cut, paste, sort och uniq - extrahera textkolumner, räkna frekvenser och sortera.
  • grep - verktyg för att söka i text med reguljära uttryck
  • sed - verktyg för att utföra "sök och ersätt" i text
  • Skript i Unix en kort introduktion till hur man skriver skript.

För att extrahera ut data ur XML-filerna kommer ni att använda Pythonmodulen xml.etree.ElementTree. Pythonskripten som använder denna modul är delvis färdigskrivna och ligger bland labbfilerna.

Se också oh-bilderna från föreläsningen om arbete med lingvistiskt uppmärkt text.

 

Förberedelser

Gör först övningarna för att lära dig hur data kan extraheras och manipuleras från en XML-formaterad fil, samt för att bekanta er med sh-filer. Filen som används till inlämningsuppgifterna är relativt stor medan övningarna görs på filen ovningsdata.xml som är lätt att överblicka.

Om du känner dig osäker på att arbeta i Linux-miljö och vill se grundläggande kommandon kan du hitta dem här:

Övningsuppgifter

För övningarna används en fil där påhittade personer är listade med resultat på från någon slags tävling. Filen heter ovningsdata.xml.

  1. Öppna ett terminalfönster och placera er i en lämplig arbetskatalog, använd sedan följande kommando för att kopiera labbfilerna till er arbetskatalog: cp -r /home/729G09/www-pub/vt16/Lab2/. .
  2. Studera filerna ovningsdata.xml (som ligger i katalogen data) och skriptet extractXmlData.py (som ligger i katalogen ovningar). Navigera er till ”ovningar” i terminalen. Se vad resultatet blir när du kör skriptet från terminalfönstret med följande kommando: python3 extractXmlData.py
  3. Ändra skriptet så att det i stället skriver ut namn och rank.
  4. Ändra skriptet så att det skriver ut namn, rank och resultat (i den ordningen). Spara resultatet på en fil (med ändelse ".txt"), detta ska göras från terminalfönstret.
  5. Använd cut på utdata från föregående övning för att plocka ut enbart namnen.
  6. Använd cut på samma fil för att plocka ut namn och resultat.
  7. Använd sort på samma fil för att sortera raderna på namn efter omvänd bokstavsordning.
  8. Använd grep på samma fil för att plocka de rader som har personer vars namn börjar på M.
  9. Använd sed på samma fil för att ändra ordningen till namn - resultat - rank.

Ni har nu bekantat er med de vanligaste Unix-verktygen. I nästa del ska ni använda så kallade sh-filer för att exekvera flera kommandon samtidigt, de ger också en tydligare överblick över de kommandon ni använder. I arbetskatalogen ligger filen ovning.sh det är denna ni ska redigera i följande uppgifter.

  1. Kör sh-filen genom att skriva ”sh ovning.sh” i terminalen, vad händer?
  2. Använd cut för att spara respektive kolumn till varsin fil, använd sedan paste för att lägga ihop dem till ordningen: rank - namn -resultat. Använd slutligen sort för att sortera kolumnerna efter rank. Kom ihåg att alla kommandon nu ska skrivas i sh-filen.

 

Inlämningsuppgifter

Utifrån den upptaggade texten ska ni skapa lexikon/ordlistor för ordtyper. Med hjälp av dessa filer kan man besvara frågor som "Vilka ord finns i texten?", "Hur många ordtyper innehåller den?" eller "Hur ser fördelningen mellan olika ordklasser ut?". Respektive uppgift har en egen katalog som innehåller de filer ni behöver för att lösa labben.

Uppgift 1

Uppgiften är att granska den lingvistiska informationen i filen lab2text.xml, särskilt lemma och ordklass. Skriv er diskussion i "uppg1.txt".

  1. Vilka fel gör Machinese Syntax vad gäller lemma och ordklass? Hitta minst 3 ord med felaktigt identifierade lemman och minst 3 ord med felaktiga ordklasser.
  2. Undersök om det finns någon systematik i de fall när Machinese Syntax misslyckas med ordklass- eller lemmabestämning. Är vissa typer av ord svårare att bestämma än andra och i så fall vilka?

Tips! Du kan extrahera relevant information genom att modifiera och köra Pythonscriptet extractWordData.py.

Uppgift 2

Skapa lexikon/ordlistor för ordtyper (varje rad ska vara unik) på varsin fil enligt 2.1, 2.2 och 2.3. Tänk på att även få med konstruktioner som "det här" och "till och med" vilka analyseras som ett ord av Machinese Syntax. Ni ska extrahera den relevanta information genom att använda Python-filen till respektive deluppgift (2.1, 2.2 & 2.3). Ni ska sedan manipulera den med UNIX-verktygen i motsvarande sh-fil.

  1. Skapa en lista över alla graford med lemma och tillhörande ordklass i bokstavsordning enligt följande exempel. Varje rad ska vara unik:
  2. ...

    bilar bil N

    bilarna bil N

    bildade bilda V

    bildar bilda V

    ...

  3. Skapa en lista över alla lemma i bokstavsordning med tillhörande ordklass och frekvens (i den ordningen):
  4. ...

    bil N 15

    bilda V 3

    billig A 2

    bo N 2

    bo V 5

    ...

  5. Skapa en lista över alla ordklasser med frekvens:
  6. ...

    A 432

    ADV 212

    N 1502

    V 542

    ...

Uppgift 3

Skapa tre filer med "fraser", dvs ordsekvenser som följer givna mönster:

Fraslistorna kan göras genom att skapa bigram (resp. trigram) med ordklasser och låta graforden vara med på samma rad. Därefter kan ni använda kommandot grep för att söka efter ett visst mönster: tvåordsfraser greppas i bigramsfilen, och nominalfraser med tre ord måste sökas bland trigrammen. Observera att slutfilerna endast ska innehålla nominalfraserna, alltså utan annan syntaktisk information.

Tips! Återanvänd gärna kod då uppgifterna är snarlika.

  1. En fil med nominalfraser (NP) som utgörs av "DET N", t.ex. "ett vapen", "en kaka"...
  2. En fil med treordiga nominalfraser av typen "det gröna huset", "en vit anka", "några lekande barn". Fundera på vilka ordklasser som kan fungera som framförställda attribut och undersök hur dessa anges av Machinese syntax.
  3. En fil med två-ordiga nominalfraser vilka utgör subjekt i sina satser, dvs vars substantiv har tilldelats funktionen 'subj' av systemet.
  4. En fil med tre-ordiga nominalfraser vilka utgör subjekt i sina satser, dvs vars substantiv har tilldelats funktionen 'subj' av systemet.
Uppgift 4 (VG-fråga)

Jämför verktygets ordklasser och morfologiska särdrag med dem i kursboken (Svensk universitetsgrammatik för nybörjare). Vilka skillnader finns det? Finns alla morfologiska särdrag från kursboken med i verktygets uppmärkning? Diskutera vilka för- och nackdelar som kan finnas med den uppdelning av ordklasser och morfologiska särdrag som görs av Machinese Syntax jämfört med kursboken. Redovisningen ska omfatta en dryg A4-sida (ca 500 ord).

Redovisning av uppgifter

Redovisa labben genom att komprimera katalogen ni arbetat med (högerklicka på katalogen och välj compress) och bifoga denna i ett mail till 729G09@ida.liu.se. Meddelandets ämnesrad ska ha följande form:

Lab2 LiU-ID 1 LiU-ID 2 [perfa29]

Examination och deadline

Uppgifterna 1-3 måste vara godkända för att bli godkänd på labben. För G krävs inskickade ordlistor och skript av rimlig kvalitet samt en godkänd felanalys där det framgår att ni kan använda begrepp som ordklass, lemma och morfologiska särdrag på ett korrekt sätt.

För att kunna få VG krävs även utförligare analys av de grammatiska kategorierna med tydlig koppling till litteraturen i uppgift 4.

Deadline: 2016-04-15


Sidansvarig: Marco Kuhlmann
Senast uppdaterad: 2016-04-06