Språkgranskningsverktyg Grammatikkontroll med Scarrie
Strategi för grammatikkontroll Vision Fullständig parsning enligt en heltäckande grammatik som skiljer ut avvikande konstruktioner och diagnosticerar dem Verkligheten Fullständig eller partiell parsning, så långt grammatiken räcker till, och igenkänning av förutsedda fel
Svenska Scarrie Grammatikmodell, som är inspirerad av frasstrukturgrammatiken Felrepertoar, som omfattar 30 av de drygt 500 feltyperna i feldatabasen Feltyperna kan grovt indelas i fel som innebär brott mot särdragsrestriktioner och strukturella fel
Problem med den klassiska frasstrukturgrammatiken Pelle bor här. S->NP VP, VP->V AdvP Här bor Pelle. S-> AdvP V NP Studenten kom ihåg boken. VP-> VF NP VF -> V Part S-> NP VP Studenten kom inte ihåg boken. S-> NP V AdvP Part NP
Problem med den klassiska frasstrukturgrammatiken, forts. Inget naturligt sätt att uttrycka särdragsrestriktioner, t.ex. kongruens mellan subjekt och predikatsfyllnad. *Böckerna var intressant.
Uppföljare till frasstrukturgrammatiken Transformationsgrammatiken (Chomsky 1965) Basregler (kontextfria omskrivningsregler) Transformationsregler (komplicerade omskrivningsregler som arbetar på de trädstrukturer som basreglerna genererar) Ytstruktur och djupstruktur Augmented Transition Network, ATN (Woods 1969) Nätverksgrammatik Procedurell formalism Strukturigenkänning åtskiljs från strukturbyggande Delresultat sparas i register och används för att testa och bygga struktur Ytstruktur och djupstruktur m. fl.
Scarrie-grammatiken En procedurellt formulerad frasstrukturgrammatik, en nätverksgrammatik med särdragshantering, som kan känna igen diskontinuerliga konstituenter. Konceptuellt inspirerad av ATN. Positiva frasstrukturregler som beskriver konstituenter och som släpper igenom förutsedda brott mot särdragsvillkor efter felmarkering, s.k. robusta regler. Negativa regler, lokala felregler, som beskriver förutsedda strukturella avvikelser och felmarkerar dem.
Ex. på parsning av en diskontinuerlig konstituent Studenten kom inte ihåg boken. S-> NP V Adv Part NP (igenkänningsstruktur) S-> NP(SUBJ) VF Adv NP(OBJ) (resulterande struktur)
Ex. på korrekt struktur men brott mot särdragsrestriktioner Gäspningar och liknande beteenden skulle ha en kopplingar till såväl aggression som sårbarhet. NP VF *NP
Ex. på strukturella fel Men finländaren är bara är en av många kandidater. *VFIN Adv VFIN Ernst Melin rest mycket med dotter och måg. *NP(subj, meningsinledare) VSUP Adv
Särdragsbrott el. strukturellt fel? Förväntningarna har varit låg ställda på svenskarna i årets Wimbledon.
UCP och den procedurella formalismen Scarrie-grammatiken uttrycks i den procedurella UCP-formalismen och parsningen sker med en därtill anpassad chartparser, UCP, Uppsala Chart Parser. UCP har utvecklats vid Institutionen för lingvistik.
Chartparsning Charten är den centrala datastrukturen i en chartparser. Charten lagrar all information om parsningen, både regler och resultat. Den fylls på allteftersom parsningen framskrider. Charten är utformad som en riktad graf, som består av noder och bågar.
Noder och bågar Noderna är sammanbindningspunkter, som håller reda på in- och utgående bågar. De aktiva bågarna representerar regler och partiellt analyserade konstituenter. De passiva bågarna representerar kompletta analysresultat. En båge som införts i charten kan inte ändras. Alternativa lösningar representeras med nya bågar.
Bearbetningssteg, task bearbetningen sker genom ett samspel mellan aktiva och passiva bågar när en aktiv båge träffar på en passiv så bildas ett bearbetningssteg (den fundamentala lagen) bearbetningsstegen förs till en agenda varifrån de hämtas för exekvering utförandet av ett bearbetningssteg leder vanligen till nya bågar och bågkonstellationer, som genererar nya bearbetningssteg när agendan är uttömd är parsningen avslutad resultatet av en komplett parsning representeras av en passiv båge från första till sista nod i charten
Exempel på en aktiv båge i UCP 1--7 Creator: 78 Features: (& = (PHR.CAT = CL TYPE = MAIN MODE = DECL NP = (START = 1 END = 7 PHR.CAT = NP NUMB = SING GENDER = UTR CASE = BASIC DEF = DEF HEAD = (LEM = SOL.NN WORD.CAT = NOUN)))) LR-Action: <* PHR.CAT> = 'VP, <* INFF> = 'FIN, <& VP> :=: <*>, STORE, MAJORPROCESS(SENT);
Exempel på en passiv båge i UCP 7--13 Creator: 112 Features: (* = (START = 7 END = 13 PHR.CAT = VP VERB.TYPE = MAIN INFF = FIN TENSE = PRES DIAT = ACT VERB = (WORD.CAT = VERB LEM = SKINA.VB)))
Uppbyggnad av charten UCP bygger en initial chart av inputsträngen, där varje båge representerar ett tecken (i originalversionen). Nya bågar kan endast införas genom tillämpning av regler, operationer, i grammatiken eller lexikonet. UCP sätter igång parsningen genom att aktivera start.rule, som definieras av grammatikskrivaren och som måste finnas med i grammatiken.
Den procedurella formalismen Specifikt för UCP är att grammatikformalismen är procedurell. Den procedurella formalismen ger grammatikskrivaren stor frihet men också stort ansvar. Med hjälp av den procedurella formalismen kan utvecklaren bygga upp strukturbeskrivningar efter eget gottfinnande, t.ex. lägga in felmarkeringar; strukturbeskrivningarna utformas som särdragsstrukturer införa nya bågar i charten, och på så vis driva bearbetningen framåt Det finns chartparsrar, som arbetar med deklarativa grammatikformat, t.ex. kontextfria regler, där bågarna läggs in automatiskt. De har dock begränsad uttryckskraft jämfört med den procedurella UCP-modellen.
Regelformat (define grammatiknamn-entry regelnamn #u rule.body; #! passivt.filter; #! aktivt.filter; )
Exempel på en UCP-regel, 1 (define sve.gram-entry np_noun #u <* word.cat> = 'NOUN, <& phr.cat>:=:'np, <& numb> :=: <* numb>, <& gender>:=:<* gender>, <& case>:=:<* case>, <& def>:=:<* def>, <& head lem>:=:<* lem>, <& head word.cat>:=:<* word.cat>, store; #! word.cat; )
Exempel på en UCP-regel, 2 (define sve.gram-entry cl.decl #u <& phr.cat>:=:'cl, <& type>:=:'main, <& mode>:=:'decl, <* phr.cat>='np, <* case>:=:'basic, <& subj>:=:<*>, advance, <* word.cat>='verb, <* inff>='fin, <& verb>:=:<*>, store; #! phr.cat or word.cat; )
Operatorerna Svarar för Test och tilldelning av attribut och värden i särdragsbeskrivningarna Införande av nya bågar i charten Kontroll av förhållandet mellan operationerna i en regel
Test och tilldelning unifiering ( :=: ) test på likhet ( = )
Kontroll sekvens (, ) oberoende disjunktion ( // ) beroende disjunktion ( / ) if then else subregel(arg)
Nya bågar process(arg) startar en ny process i ändpunkten på den aktiva bågen; bågen går från och samma nod; arg är en grammatikregel majorprocess(arg) startar en ny process i startpunkten på den aktiva bågen; bågen går från och till samma nod; arg är en grammatikregel. advance lägger in en ny aktiv båge från startpunkten i den aktiva bågen till slutpunkten i den passiva bågen; den nya bågen ärver den aktiva bågens särdragsstruktur. store lägger in en ny passiv båge från startpunkten i den aktiva bågen till slutpunkten i den passiva bågen; den nya bågen ärver den aktiva bågens särdragsstruktur. minorstore Lägger in en ny passiv båge från startpunkten i den aktiva bågen till dess slutpunkt; den nya bågen ärver den aktiva bågens särdragsstruktur.
Grammatikkontroll med UCP UCP Scarriegrammatiken ScarCheck robusta frasstrukturregler lokala felregler felannotering enl. feltypologi Chartavläsare Reportchart Lexikal databas
Metod Parsern, UCP, arbetar bottom-up Regler ansätts från lexikonet och grammatiken UCP genererar bågar med strukturbeskrivningar som förs in i charten; de kan innehålla felkoder ReportChart läser av felkoderna och deras beskrivning
Analys av en student (* = (START = 1 END = 13 NUMB = SING GENDER = UTR DEF = INDEF PHR.CAT = NP CASE = BASIC ART = (LEM = EN.AL WORD.CAT = ART) HEAD = (LEM = STUDENT.NN WORD.CAT = NOUN)))
Analys av ett student (* = (START = 1 END = 13 NUMB = SING GENDER = NEUTR DEF = INDEF PHR.CAT = NP CASE = BASIC ART = (LEM = EN.AL WORD.CAT = ART) ERR = (1 = NP-GENDER) HEAD = (LEM = STUDENT.NN WORD.CAT = NOUN)))
Robust NP-regel (define sve.gram-entry np_art_noun #u <& phr.cat> :=: 'np, <* word.cat> = art, <& numb> :=: <* numb>, <& gender> :=: <* gender>, <& def> :=: <* def>, <& art lem> :=: <* lem>, <& art word.cat> :=: <* word.cat>, advance, <* word.cat> = 'noun, (<& gender> :=: <* gender> / <& err :new> :=: 'np-gender), <& head> :=: <*>, store; #! word.cat; )
ReportChart Chartscanner som söker efter felsärdrag i charten Tre grundläggande principer: Simplicity Principle Sök endast efter fel på toppnivån i särdragsstrukturen Longest Span Principle Välj alltid den längsta analysen Right-Before-Wrong Principle Om det finns flera analyser av samma längd, så välj alltid en analys utan fel framför en med fel
Ett student pluggar: (* = (START = 1 END = 21 PHR.CAT = CL TYPE = MAIN MODE = DECL SUBJ = (START = 1 END = 13 NUMB = SING GENDER = NEUTR DEF = INDEF PHR.CAT = NP ART = (LEM = EN.AL WORD.CAT = ART) ERR = (1 = NP-GENDER) CASE = BASIC HEAD = (LEM = STUDENT.NN WORD.CAT = NOUN)) VERB = (START = 13 END = 21 WORD.CAT = VERB LEM = PLUGGA.VB DIAT = ACT INFF = FIN Språkgranskningsverktyg TENSE = PRES vt 09, An VERB.TYPE = MAIN)))
Ett student pluggar (define sve.gram-entry np_art_noun #u <& phr.cat> :=: 'np, <* word.cat> = 'art, <& numb> :=: <* numb>, <& gender> :=: <* gender>, <& def> :=: <* def>, <& art lem> :=: <* lem>, <& art word.cat> :=: <* word.cat>, advance, <* word.cat> = 'noun, (<& gender> :=: <* gender> / <& err :new> :=: 'np-gender), <& head> :=: <*>, store; #! word.cat; ) (define sve.gram-entry cl.decl #u <& phr.cat>:=:'cl, <& type>:=:'main, <& mode>:=:'decl, <* phr.cat>='np, <* case>:=:'basic, <& subj>:=:<*>, advance, <* word.cat>='verb, <* inff>='fin, <& verb>:=:<*>, store; #! phr.cat or word.cat; )
Ett student pluggar : (* = (START = 1 END = 21 PHR.CAT = CL TYPE = MAIN MODE = DECL SUBJ = (START = 1 END = 13 NUMB = SING GENDER = NEUTR DEF = INDEF PHR.CAT = NP ART = (LEM = EN.AL WORD.CAT = ART) ERR = (1 = NP-GENDER) CASE = BASIC HEAD = (LEM = STUDENT.NN WORD.CAT = NOUN)) ERR = <* SUBJ ERR> VERB = (START = 13 END = 21 WORD.CAT = VERB LEM = PLUGGA.VB DIAT = ACT INFF = FIN Språkgranskningsverktyg TENSE = PRES vt 09, An VERB.TYPE = MAIN)))
Ett student pluggar (define sve.gram-entry np_art_noun #u <& phr.cat> :=: 'np, <* word.cat> = 'art, <& art> :=: <*>, advance, <* word.cat> = 'noun, (<& art gender> :=: <* gender> / <& err :new> :=: 'np-gender), <& head> :=: <*>, store; #! word.cat; ) (define sve.gram-entry cl.decl #u <& phr.cat>:=:'cl, <& type>:=:'main, <& mode>:=:'decl, <* phr.cat>='np, <* case>:=:'basic, <& subj>:=:<*>, (<& subj err>, <& err>:=:<& subj err>/ not <& subj err>), advance, <* word.cat>='verb, <* inff>='fin, <& verb>:=:<*>, store; #! phr.cat or word.cat; )
Felkoder och förklaringar (setq *error-acts* '(:VAL gpagna01 gpagna03 gpapag01 gpapag02 gpapag03 gpcncc02 gpcnec03 gpnpag01 gpnpag02 gpnpag03 gpnpag08 gpnpag14 gpnpca01 gpnpss01 gpnpss02.)) "gpagna01: fel numerus på adjektivet i predikatsfylln." "gpagna03: fel genus på adjektivet i predikatsfylln." "gpapag01: fel form av ett av de parallella adjektiven" "gpapag02: fel form av ett av de samordnade adjektiven" "gpapag03: fel form av adjektivet" "gpcncc02: andra ledet i sammansatt konjunktion saknas" "gpcnec03: OCH i stf komma" "gpnpag01: fel numerus" "gpnpag02: fel genus "gpnpag03: fel form av substantivet" "gpnpag08: numerusfel" "gpnpag14: fel form av adjektivet" "gpnpca01: grundkasus i st f genitiv" "gpnpss01: artikel saknas i bestämd nominalfras i sing "gpnpss02: fel form av substantivet efter genitivattribut"
Scarrie-lexikonet Baserat på SvD/UNT-korpusen: 220 086 artiklar, 70 miljoner ordförekomster och 1 672 993 ordtyper Alla ordtyper som endast förekom en gång i korpusen togs bort, vilket lämnade 618 099 ordtyper. Ordformerna kategoriserades utifrån vilka teckentyper de innehöll, t.ex. poster bestående enbart av sifferuttryck vilka uteslöts. Resterande 350 000 ordtyper frekvens två och högreanalyserades morfologiskt i UCP inkl. sammansättningsanalys Resultatet av analysen efter viss gallringen var 252 180 ordformer vilka representerar 88 325 lemman
Slut
Ex. på felrapportering Nu räcker det i princip med att den som tillhör #2#underrrepresenterat kön är tillräckligt kvalificerad --> 2.underrepresenterat för tjänsten för att positiv särbehandling skall kunna tillämpas. An example of a spell checking error from the log-file Ett viktigt motiv för de svenska EU-medlemskapet - också för socialdemokraterna - var just möjligheten att vara med i de fora där besluten fattas. $!43$ --> 43.intervall: 6-7 typ av fel: gpnpag01: fel numerus An example of a grammar checking error from the log-file
Ex. från utvärderingsprotokoll 1) GPVFMF01 066/570 S: $GPVFMF01$Därefter var har han verksam som byggnadssnickare och även finsnickare. H: $GPVFMF01$Därefter var har han verksam som byggnadssnickare och även finsnickare. F: Därefter var han verksam som byggnadssnickare och även finsnickare. 2) GPNPAG01 000/570 S: $GPNPAG01$Politiker och tjänstemän vill gå mer varsamt fram och ta hänsyn också till de positiva värdena som ofta finns i det här områdena. H: F: S: Scarrie, H: Human evaluator F: Gold standard
Ex. från utvärderingsprotokoll, forts. 3) PUCOPH03 000/322 S: För riskpersoner till exempel äldre och hjärtsjuka med svåra symtom kan det dock vara rekommendabelt att uppsöka sjukhusvård. H: $PUCOPH03$För riskpersoner till exempel äldre och hjärtsjuka med svåra symtom kan det dock vara rekommendabelt att uppsöka sjukhusvård. F: För riskpersoner, till exempel äldre och hjärtsjuka med svåra symtom, kan det dock vara rekommendabelt att söka sjukhusvård.
Parsning Tilldelning av lingvistisk struktur till ett språkligt uttryck Morfologisk parsning Ord Syntaktisk parsning Fras Sats Mening