Labb 2: Syntax och ordklasstaggning Att arbeta med grammatiskt analyserade data
Labb 2 Arbete med grammatiskt analyserad text Vilka ord finns i texten? Hur många ordtyper innehåller den? Hur ser fördelningen mellan olika ordklasser ut? använda kommandoradsverktyg i Unix för att sammanställa lexikon och fraslistor utvärdera och analysera verktyg för lingvistisk analys. 2
Plan Verktyg för lingvistisk analys Connexor Machinese Syntax Grundläggande Unix Unix-verktyg för textbehandling: grep, sed, cut, paste, sort, uniq, 3
Verktyg för grammatisk analys Machinese Syntax är ett program som analyserar ord med avseende på lemma (grundform) ordklass och morfologiska kategorier dependenser och dependensfunktioner Prova själv: http://www.connexor.eu/technology/machinese/demo/syntax/ 4
Utdata från analysprogram 5
Lemman Grundform som representerar ett ords samtliga böjningsformer (ung. uppslagsord i lexikon) Normalt väljs den oböjda (eller minst markerade) formen Lemma: dyka dyka, dyker, dök, dykte, dykt, dykas, dyks, döks, dyktes och dykts Lemman är beroende av ordklass bilar (bil om substantiv, bila om verb) 6
Lemman i Machinese Syntax 7
Automatisk ordklasstaggning Uppgift: att tilldela varje ord i en korpus en kategori som visar dess ordklass ev. med morfologisk information. Indata: textfil och resursdata (lexikon med taggar, regler, ) Utdata: texten med en ordklasstagg för varje ord. 8
Morfologiska särdrag i svenska För substantiv: genus, kasus, numerus, bestämdhet För verb: tempus, diates, modus För adjektiv: genus, numerus, bestämdhet För (vissa) pronomen: person, kasus, numerus 9
Utdata från analysprogram 10
Hur svårt är ordklasstaggning? Homonymi svenska: var, runda, trumpet, fyrar, att, lurar Homonymi engelska: can, book, import, snow, to, till I Brown-korpusen (1 miljon ord) är över 40 procent av alla löpord mångtydiga vad gäller ordklass. 11
Hur svårt är ordklasstaggning? Enklast möjliga metod Välj den vanligaste ordklassen för varje ord Engelska: ca 9 av 10 textord får rätt ordklass Svenska: ca 7 av 10 textord får rätt ordklass Bästa tillgängliga system 94-98% beroende på texttyp 12
Syntaktisk parsning Parsning innebär att, automatiskt eller för hand, tilldela en mening en syntaktisk beskrivning (eller struktur) Hur hänger orden i meningen ihop? Labb 3 Parsning med frasstrukturgrammatik Dependensgrammatik Bygger på relationer mellan ord som speglar beroendeförhållanden 13
Dependenser i grafiskt format det attr subj obj Den gamla hunden äter frukost. main 14
Utdata från analysprogram 15
Hur ska man tolka utdata? Tabbar mellan varje kolumn Ordposition (med nummer) Ordform (som ordet ser ut i texten) Lemma (grundform) Funktionell dependens (syntaktisk funktion och position för styrande ordet) Ordklass & morfosyntaktiska särdrag a) huvudord/bestämningar b) ordklasskategori c) särdrag 16
I labben är inte alla delar centrala Ordpos. Ordform Stam/ Lemma Funk. dependens Ordklass & morfologi 0 1 Den den det:>3 %>N DET SG NOM 2 gamla gammal attr:>3 %>N A NOM 3 hunden hund subj:>4 %NH N SG NOM 4 äter äta main:>0 %MV V PRES 5 frukost frukost obj:>4 %NH N SG NOM 6 17
Ordklasstaggar i Machinese Syntax V verb N substantiv PRON - pronomen A adjektiv ADV - adverb PREP preposition (på, i, under ) CC samordnande konjunktion (och, men) CS underordnande konjunktion (medan, att) 18
Ordklasstaggar i Machinese Syntax NUM numeral (räkneord) DET artikel (det, de, den, en, ett) AD perfekt particip-form av verb, fungerar ofta som adjektiv (skjuten, upprörd, sluten) NDE presens particip-form av verb, fungerar ofta som adjektiv NEG-PART negativt adverb (inte, ej) INTERJ interjektion (hejsan!) INFMARK infinitivmärke (att) 19
Morfologiska kategorier Kasus: NOM nominativ (grundform) GEN genitiv ACC ackusativ (objektsform) Numerus SG singularis PL pluralis 20
Morfologiska kategorier Komparering (adj/adv) <Cmp> - komparativ (dyrare) <Sup> - superlativ (dyrast) Tempus och modus PRES presens PAST preteritum (imperfekt) INF infinitiv IMP - imperativ 21
Användning av taggade data Korpuslingvistik Frekvensdata för lexikala enheter (dvs lemman) Hitta tendenser i hur ord fördelar sig på olika grammatiska funktioner Hitta tendenser i vilka ord som tenderar att vara subjekt resp. objekt till olika verb Språkteknologi Frågebesvarande system Översättning producera välformade översättningar 22
Labb 2: Syfte Utifrån text som analyserats av Machinese Syntax ska ni skapa olika typer av lexikon/ordlistor. Med hjälp av dessa filer kan man besvara frågor som Vilka ord finns i texten? Vad räknas som ord? Hur många ordtyper innehåller den? Hur ser fördelningen mellan olika ordklasser ut? Använd kommandoradsverktyg i Unix för att skapa stamlexikon med graford och ordklass frekvensordlistor över lemma/stam och ordklass fraslistor för givna mönster/fraser, t.ex, nominalfraser bestående av "DET A N". 23
Labb 2: Syfte Utvärdering av automatisk ordklassanalys och språkliga kategorier som ges som utdata. Analysera prestanda: vad görs rätt och vad blir fel? 24
Unix kommandoradsverktyg ls lista alla filer i arbetskatalogen cd byt katalog rm ta bort en fil/katalog mv byt namn på en fil/katalog man läs manualen för ett kommando man cut
Unix kommandoradsverktyg Textverktyg grep skriv ut rader som matchar ett RU sed sök och ersätt med RU tr byt ut eller ta bort tecken sort sortera rader uniq ta fram unika rader cut klipp ut kolumner paste sätt ihop kolumner wc räknar rader, ord och tecken man visa manual för olika kommandon och verktyg
Verktyg grep Textfilter Söker igenom en text rad för rad och skriver ut alla rader som innehåller den eftersökta strängen. grep sökuttryck textfil grep Karlsson textfil Eva Karlsson 22 22 22 Sven Karlsson 33 33 33
Grep Ggrep En version av grep som kan tolka utökade reguljära uttryck (URU). ggrep E RU textfil Andra flaggor: -E använd utökade RU (Extended) -i matcha både små och stora bokstäver -w matcha ord dvs. strängar med ordgräns på varje sida. Motsvarar \b reg. uttr. \b -v inversen. Skriver ut varje rad som inte matchar sökuttrycket.
Verktyg grep > ggrep -E coh textfil Bill coh Bull coh Maja. > ggrep -E Bill textfil Bill coh Bull > ggrep -E B.ll textfil Bill coh Bull
Sed Stream editor sök och ersätt > gsed -r substitutionsuttryck textfil Substitutionsuttryck: s/sökuttryck/ersättningssträng/ Sökuttryck: ett reguljärt uttryck Ersättningssträng: en vanlig textsträng > sed s/coh/och/ textfil Bill och Bull jagade Pelle och Maja.
Verktyg - sed Alla rader skrivs ut > sed s/coh/och/ textfil Bill och Bull jagade Pelle och Maja. Ex. s/[0-9]/x/g g alla förekomster på raden byts ut i sökning på små och stora bokstäver
Sed forts. s/([kc]arlsson)/<name>\1<\/name>/g Astrid Lindgrens berömda barnbok <NAME>Karlsson</NAME> på taket går på export. Ersättningsfältet kan innehålla referenser till sökuttrycket. / specialtecken i substitutionsuttryck
Omdirigering i Unix < - läs från en fil > - skriv till en fil >! - skriv över innehållet i en fil >> - skriv sist i en fil - pipe, skicka utdata från ett kommando som indata till ett annat
Omdirigering i Unix, exempel grep 'hej' fil.txt > hejrader.txt grep '^A' fil.txt > ordnat.txt grep '^B' fil.txt >> ordnat.txt tr 'U' 'u' < fil.txt grep 'under' tr 'U' 'u' < fil.txt > temp.txt grep 'under' temp.txt rm temp.txt
UNIX pipes > cat textfil.txt Bill coh Bull jagade Pelle, Maja coh deras vän Måns. > cat textfil grep de jagade Pelle, Maja coh deras vän Måns. > cat textfil grep de sed s/coh/och/g jagade Pelle, Maja och deras vän Måns.
Machinese Syntax textformat Ordpos. Ordform Stam / lemma Funk. dependens Ordklass & morfologi 1 Jag jag subj:>2 %NH PRON SG NOM 2 packade packa main:>0 %MV V PAST 3 min jag attr:>4 %>N PRON SG GEN 4 väska väska obj:>2 %NH N SG NOM Fem tab-separerade ( \t ) kolumner 1\tJag\tjag\tsubj:>2\t%NH PRON SG NOM\n Sista kolumnen indelad med mellanslag
Att välja kolumner med cut Kommandot cut plockar kolumner ur en textfil. Om inte annat anges, antar att kolumner avdelas med tab-tecken. De kolumner man vill ha anges med flaggan f : cut f1 cut f1,3 cut f2-4 text text text Flaggan d används för att specificera ett annat avdelningstecken än \t. cut -d # f2
Exempel cut Endast kolumn fem cut f5 labbtext.fdg > kolumn5.txt Alla utom fjärde kolumnen cut f1-3,5 labbtext.fdg Dela vid mellanslag (-d delimiter) cut d f2 kolumn5.txt > kolumn5-2.txt
Slå ihop kolumner: paste Kommandot paste sätter ihop två eller fler filer till en ny fil Omvänd operation i jämförelse med cut Separerar kolumner med tab om inte d används. Exempel: paste kolumn2.txt kolumn1.txt > kolumn2-1.txt
Sortera rader: sort Kommandot sort sorterar textrader Sorterar från början i teckenordning Flaggor: -d Sortera i alfabetisk ordning, bara bokstäver, siffror och blanktecken används -n Sortera efter siffror i början på raden -r Omvänd sorteringsordning (reverse) -k Specificera vilken kolumn som ska sorteras på, startkolumn och slutkolumn kan anges
Exempel sort Alfabetiskt sortering, ingen skillnad på gemener och versaler, baklänges sort d f r fil.txt > sorterad-text Två filer i nummerordning sort n fil1 fil2 > sorterad-fil1-2 Vad tar mest plats på kontot? du ka sort nr head
Vid duplicerade rader: uniq Kommandot uniq kan användas för att ta bort eller räkna duplicerade rader Förutsättning: raderna intill varandra, dvs filen måste vara sorterad! Exempel: uniq plural.txt > singular.txt sort indata uniq c > frekvensfil
Räkna ord: wc Räknar rader, ord och tecken i en fil wc artikel.txt 350 5109 29195 Filen innehåller 350 rader, 5109 ord och 29195 tecken.
Fler Unix-verktyg cat visa allt innehåll i en fil less gå igenom innehållet i en fil q avsluta /pattern sök framåt?pattern sök bakåt more ungefär som less head/tail se början/slutet av en fil
Fler Unix-verktyg cd byt katalog rm ta bort en fil/katalog mv byt namn på en fil/katalog man läs manualen för ett kommando man cut
Bigram och trigramsfiler Bigram = två på varandra följande ord Den gamla hunden äter frukost den gamla gamla hunden hunden äter äter frukost Lista 1: den gamla hunden äter frukost Lista 2: gamla hunden äter frukost
Köra många kommandon på en gång med skript Skriv in kommandona i en fil (kommando.sh): cut f 2 indata > kolumn2 cut f 1,3 indata > kolumn13 paste kolumn2 kolumn13 > kolumner213 rm kolumn2 kolumn13 Ändra rättigheter för filen: chmod u+x kommando.sh chmod 755 kommando.sh Kör filen: kommando.sh
Uppgift 1 & 2 Uppgift 1: skapa lexikon (ordlistor) m.h.a. cut, paste, sort och uniq utvärdera lemma och ordklassbestämning Uppgift 2: ta ut olika typer av flerordsfraser 1. Skapa egna bigram och trigram filer 2. Använd ordklasser och sökmönster utvärdera morfologiska särdrag
Uppgift 3 Frivillig VG uppgift Jämför ordklasskategorier och morfologiska särdrag från Machinese Syntax med Nusvensk grammatik Vilka skillnader finns det? Finns alla morfologiska särdrag med i verktygets uppmärkning? För- och nackdelar med olika uppdelningar av ordklasser och morfologiska särdrag.