729G09 Språkvetenskaplig databehandling (2016) Lingvistiskt uppmärkt text Marco Kuhlmann Institutionen för datavetenskap
Från form till betydelse pragmatik semantik analys generering syntax morfologi
Skolans nio ordklasser tagg kategori exempel VB verb kasta NN substantiv pudding PN pronomen hon JJ adjektiv glad AB adverb inte KN konjunktion och PP preposition över RG räkneord tre IN interjektion aj
Syntaktiska dependensträd nsubj xcomp nmod cpd aux mark case 1 2 3 4 5 6 7 8 Cray Computer has applied to trade on Nasdaq PTB section 00, document 18, item 026; Stanford dependencies (basic)
Denna föreläsning Korpusdata Bearbeta korpusdata med Unix-verktyg Bearbeta korpusdata med Python
Korpusdata
Korpusdata: Ett konkret exempel 1 Genom genom ADP 2 case 2 skattereformen skattereform NOUN 3 nmod 3 införs införa VERB 0 root 4 individuell individuell ADJ 5 amod 5 beskattning beskattning NOUN 3 nsubjpass 6 ( ( PUNCT 5 punct 7 särbeskattning särbeskattning NOUN 5 appos 8 ) ) PUNCT 5 punct 9 av av ADP 10 case 10 arbetsinkomster arbetsinkomst NOUN 5 nmod 11.. PUNCT 3 punct
Vad finns i en korpus? graford lemma ordklass huvudord grammatisk funktion morfologiska egenskaper betydelse skattereformen skattereform substantiv (NN) ord nummer 3 i meningen (införs) nominalattribut (NMOD) utrum, singular, definit, nominativ skattereform..nn.1
Finkornighet i beskrivningen Varje korpus måste bestämma sig för ett system med vars hjälp de lingvistiska datan ska beskrivas. 14 ordklasser eller 22? Förutom själva korpusen måste det därför finnas en definition av de kategorier som använts. ofta tillsammans med konkreta exempel I Universal Dependencies-projektet finns universella och språkspecifika kategorier. Språkspecifika kategorier kan alltid ersättas med universella kategorier.
Universella ordklasser (öppna klasser) tagg kategori exempel ADJ adjektiv glad ADV adverb inte INTJ interjektion ja NOUN substantiv pudding PROPN proper noun Ingmar VERB verb kasta Universal Dependencies: http://universaldependencies.github.io/docs/
Universella ordklasser (slutna klasser) tagg kategori exempel ADP adposition (preposition, postposition) över AUX hjälpverb har CONJ konjunktion och DET determinerare denna NUM räkneord för grundtal tre PART partikel ut PRON pronomen hon SCONJ subjunktion att
Ordklasser i SUC (1) tagg kategori exempel NN substantiv pudding VB verb kasta PP preposition över AB adverb inte JJ adjektiv glad PN pronomen hon DT determinerare denna KN konjunktion och PM egennamn Mats
Ordklasser i SUC (2) tagg kategori exempel PC particip utsänd SN subjunktion att RG räkneord (grundtal) tre HP frågande/relativt pronomen som IE infinitivmärke att PL partikel ut SUC manual: http://spraakbanken.gu.se/parole/docs/suc2.0-manual.pdf
Ordklasser i SUC (3) tagg kategori exempel PS possessivt pronomen hennes HA frågande/relativt adverb när UO utländskt ord the RO räkneord (ordningstal) tredje IN interjektion ja HD frågande/relativt determinerare vilken HS frågande/relativt possessivt pronomen vars SUC manual: http://spraakbanken.gu.se/parole/docs/suc2.0-manual.pdf
Hur representeras korpusdata? tabulerade data Extensible Markup Language (XML) JavaScript Object Notation (JSON)
Tabulerade data (CoNLL-format) 1 Genom genom PP 2 case 2 skattereformen skattereform NN 3 nmod 3 införs införa VB 0 root 4 individuell individuell JJ 5 amod 5 beskattning beskattning NN 3 nsubjpass 6 ( ( PAD 5 punct 7 särbeskattning särbeskattning NN 5 appos 8 ) ) PAD 5 punct 9 av av PP 10 case 10 arbetsinkomster arbetsinkomst NN 5 nmod 11.. MAD 3 punct
Tabulerade data Filen struktureras i rader och kolumner. Rader skiljs åt med ett nyrad-tecken. Kolumner skiljs åt med ett separatortecken. tabulator, komma Används t.ex. i CoNLL-U, Comma-Separated Values (CSV).
Vilken information finns i vilken kolumn? ID FORM LEMMA POS HEAD DEPREL 1 Genom genom PP 2 case 2 skattereformen skattereform NN 3 nmod 3 införs införa VB 0 root 4 individuell individuell JJ 5 amod 5 beskattning beskattning NN 3 nsubjpass 6 ( ( PAD 5 punct 7 särbeskattning särbeskattning NN 5 appos 8 ) ) PAD 5 punct 9 av av PP 10 case 10 arbetsinkomster arbetsinkomst NN 5 nmod 11.. MAD 3 punct
CoNLL-format CoNLL-formatet har använts i flera tävlingar i samband med International Conference for Natural Language Learning. Formatet representerar en lista med meningar. Slutet på en mening markeras med en blankrad. Rader som börjar på ett nummertecken (#) är kommentarer. Det finns flera varianter av detta format; den senaste varianten (CoNLL-U) används av Universal Dependencies-projektet. http://universaldependencies.org/format.html
Extensible Markup Language (XML) <sentence id="8f74-8115"> <w pos="pp" lemma=" genom " ref="01" dephead="03" deprel="aa">genom</w> <w pos="nn" lemma=" skattereform " ref="02" dephead="01" deprel="pa">skattereformen</w> <w pos="vb" lemma=" införa " dephead="" deprel="root">införs</w> <w pos="jj" lemma=" individuell " ref="04" dephead="05" deprel="at">individuell</w> <w pos="nn" lemma=" beskattning " ref="05" dephead="03" deprel="ss">beskattning</w> <w pos="pad" lemma=" " ref="06" dephead="05" deprel="ir">(</w> <w pos="nn" lemma=" särbeskattning " ref="07" dephead="05" deprel="an">särbeskattning</w> <w pos="pad" lemma=" " ref="08" dephead="05" deprel="jr">)</w> <w pos="pp" lemma=" av " ref="09" dephead="05" deprel="et">av</w> <w pos="nn" lemma=" arbetsinkomst " ref="10" dephead="09" deprel="pa">arbetsinkomster</w> <w pos="mad" lemma=" " ref="11" dephead="03" deprel="ip">.</w> </sentence>
Extensible Markup Language Information struktureras hierarkiskt med hjälp av element. Ett element består av en starttagg och en sluttagg. <w>särbeskattning</w> Varje element kan dessutom ha ett antal attribut värde-par. <w pos="nn">särbeskattning</w> har ett attribut pos med värdet NN Ett element kan innehålla såväl text som andra element.
Hur ett XML-element är uppbyggt starttagg <w>skattereformen</w> sluttagg Som specialform förekommer även tomma element, t.ex. <br/>.
Fördelar och nackdelar Tabulerade data enkelt och platseffektivt implicit representation För att ta ut en POS-tagg behöver man veta vilken kolumn den ligger i. Extensible Markup Language (XML) komplext och platskrävande explicit representation För att ta ut en POS-tagg kan man direkt efterfråga motsvarande attribut.
Denna föreläsning Korpusdata Bearbeta korpusdata med Unix-verktyg Bearbeta korpusdata med Python
Exempeluppgifter på en uppmärkt korpus Sök alla förekomster av ett givet ord, lemma eller n-gram. Bestäm frekvensen för ett givet ord, lemma eller n-gram. Bestäm fördelningen av ett givet ord över ordklasser. Bestäm alla subjekt eller objekt till ett givet verb.
Bearbeta korpusar med Unix-verktyg
Unix-verktyg för textfiler program head tail less wc funktion visar de första raderna visar de sista raderna visar innehållet; tillåter att man scrollar upp och ner räknar antalet ord, rader, tecken och bytes grep letar efter mönster och skriver ut matchande rader
Unix-verktyg för textfiler program cut paste sort uniq funktion extraherar kolumner sätter ihop kolumner sorterar rader (alfabetiskt eller numeriskt) slår ihop dubletter; används ofta efter sort sed utför substitutioner och andra redigeringsoperationer
Omdirigering i Unix mönster kommando < infil kommando > utfil kommando >! utfil kommando >> utfil effekt läs indata till kommando från filen infil skriv utdata från kommando till filen utfil skriv över utfil om det redan finns tillfoga i slutet av utfil k1 k2 pipe; utdata från kommando k1 blir indata till k2
Denna föreläsning Korpusdata Bearbeta korpusdata med Unix-verktyg Bearbeta korpusdata med Python
Bearbeta korpusar med Python
Skriv ut alla rader import sys with open(sys.argv[1]) as f: for line in f: print(line.rstrip())
Skriv ut alla ordformer import sys with open(sys.argv[1]) as f: for line in f: line = line.rstrip() if len(line) > 0: columns = line.split() print(columns[1])
Räkna förekomster av olika ordklasser import sys from collections import Counter with open(sys.argv[1]) as f: counter = Counter() for line in f: line = line.rstrip() if len(line) > 0: columns = line.split() counter[columns[3]] += 1 print(counter)