Grammatikkontrollmøte 23.11.2016 Til stades: Kevin, Linda, Sjur Tema: * Qst particle vs. subjunksjon Err/SpaceCmp * normativitet i gramcheck-analysatoren * fjerne Err/SpaceCmp ved Err/UnspaceCmp analyser (twol eller CG) * web demo * forslagsgenerator: ** VV, NN, osb (retta i twol for generator?) ** dialektvariantar og annan variasjon innanfor norma (vi vil føreslå noko som bruker same variant som input) !!! Variantar {{{ COPY:10258:wrong-valency-ahte-inf beroštit+V+IV+Ind+Prs+Pl1 beroštat,beroštit beroštit beroštit beroštit+V+IV+Inf beroštit beroštit+V+IV+Ind+Prs+Pl1 beroštit beroštit+V+IV+Ind+Prs+Pl3 beroštit beroštit+V+IV+Ind+Prt+Sg2 beroštat beroštat beroštit+V+IV+Ind+Prs+Pl1 beroštat beroštit+V+IV+Ind+Prs+Sg2 }}} Andre døme: {{{ oarpmembealle+v1+CmpN/SgN+CmpN/SgG+CmpN/PlG+Sem/Hum:oarpmem9#beall BEALLE ; oarpmembealle+v2+CmpN/SgN+CmpN/SgG+CmpN/PlG+Sem/Hum:oarpmem9#bealli GOAHTI-IU ; oarpmembealle+v3+CmpN/SgN+CmpN/SgG+CmpN/PlG+Sem/Hum:oarpmen#beall BEALLE ; oarpmembealle+v4+CmpN/SgN+CmpN/SgG+CmpN/PlG+Sem/Hum:oarpmen#bealli GOAHTI-IU ; $ echo oarpmembealle+N+Sg+Loc | hfst-lookup -q src/generator-gt-norm.hfstol oarpmembealle+N+Sg+Loc oarpmembeales 0,000000 oarpmembealle+N+Sg+Loc oarpmembealis 0,000000 oarpmembealle+N+Sg+Loc oarpmenbeales 0,000000 oarpmembealle+N+Sg+Loc oarpmenbealis 0,000000 oambealle+v1+CmpN/SgN+CmpN/SgG+CmpN/PlG+Sem/Hum:oam9#beall BEALLE ; oambealle+v2+CmpN/SgN+CmpN/SgG+CmpN/PlG+Use/NG+Sem/Hum:oam9#bealli GOAHTI-IU ; $ echo oambealle+N+Sg+Loc | hfst-lookup -q src/generator-gt-norm.hfstol oambealle+N+Sg+Loc oambeales 0,000000 oambealle+N+Sg+Loc oambealis 0,000000 }}} Og fleire døme: {{{ animašunkursa+v1+OLang/UND+Sem/Edu:animašun#kur'sa GOAHTI-A ; animašunkursa+v2+OLang/UND+Sem/Edu:animašun#gur'sa GOAHTI-A ; animašunkursa+v3+OLang/UND+Sem/Edu:animašun#gur'se GOAHTI ; animašunkursa+v4+OLang/UND+Sem/Edu:animašuvdna#kur'sa GOAHTI-A ; animašunkursa+v5+OLang/UND+Sem/Edu:animašuvdna#gur'sa GOAHTI-A ; animašunkursa+v6+OLang/UND+Sem/Edu:animašuvdna#gur'se GOAHTI ; $ echo animašunkursa+N+Sg+Loc | hfst-lookup -q src/generator-gt-norm.hfstol animašunkursa+N+Sg+Loc animašungurssas 0,000000 animašunkursa+N+Sg+Loc animašungursses 0,000000 animašunkursa+N+Sg+Loc animašunkurssas 0,000000 animašunkursa+N+Sg+Loc animašuvdnagurssas 0,000000 animašunkursa+N+Sg+Loc animašuvdnagursses 0,000000 animašunkursa+N+Sg+Loc animašuvdnakurssas 0,000000 bábir+v1+Dial/-GG+Sem/Mat_Txt:báh'pir MALIS ; bábir+v2+Dial/-KJ+Sem/Mat_Txt:báh'pi7r MALIS ; bábir+v3+Sem/Mat_Txt:báh'pur MALIS ; Mun beroštan animašungursii. "" "mun" §AG Pron Sem/Hum Pers Sg1 Nom @SUBJ> SUBSTITUTE:3252 MAP:17282 #1->1 SUBSTITUTE:8476 : "" "beroštit" V IV Ind Prs Sg1 @+FMAINV SELECT:5086:r949 MAP:10165:r406 #2->2 SUBSTITUTE:7357:SubV=mv ; "beroštit" V IV Actio Gen SELECT:5086:r949 ; "beroštit" V IV Actio Nom SELECT:5086:r949 ; "beroštit" V IV Ind Prt ConNeg SELECT:5086:r949 ; "beroštit" V IV PrfPrc SELECT:5086:r949 : "" "animašunkursa" N Sem/Edu Sg Ill @3 ADD:10323:msyn-valency-loc-ill msyn-valency-loc-ill "animašunkursa" N Sem/Edu Sg @3 COPY:10329:wrong-valency-loc-ill animašunkursa+N+Sg+Loc animašungurssas,animašungursses,animašunkurssas,animašuvdnagurssas,animašuvdnagursses,animašuvdnakurssas ; "kursa" N Sem/Edu Sg Ill ; "animašuvdna" N Sem/Dummytag Cmp/SgNom Cmp REMOVE:2053:longest-match "<.>" "." CLB #4->4 }}} +vN-taggar manglar i gramcheck-analysatoren: {{{ "<1999:s>" "1999" Num Arab Sg Loc #1->1 "1999" Num Sem/Year Sg Loc #1->1 : "" "bidju" N Sem/Dummytag Sg Ill &real-biddjui #2->2 ADD:4060:biddjui ADD:4070:biddjui ADD:4060:biddjui ADD:4070:biddjui real-biddjui "biedju" N Sem/Plc Sg Ill &real-biddjui #2->2 ADD:4060:biddjui ADD:4070:biddjui ADD:4060:biddjui ADD:4070:biddjui real-biddjui "bidjat" Sem/Dummytag V TV Der/PassS V IV Ind Prt Sg3 &SUGGEST #2->2 COPY:4078:real-biddjui bidjat+V+TV+Der/PassS+V+IV+Ind+Prt+Sg3 biddjui "bidjat" Sem/Plc V TV Der/PassS V IV Ind Prt Sg3 &SUGGEST #2->2 COPY:4078:real-biddjui bidjat+V+TV+Der/PassS+V+IV+Ind+Prt+Sg3 biddjui : "" "nu gohčoduvvon" A Sem/Dummytag Attr @>N SELECT:8955:r1736 MAP:15815:r86 #3->3 "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr Err/SpaceCmp @>N SELECT:8955:r1736 MAP:15815:r86 #3->3 "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr @>N SELECT:8955:r1736 MAP:15815:r86 &SUGGEST #3->3 COPY:8944:compound nu gohčoduvvon+Err/UnspaceCmp+A+Attr ? ; "nu gohčoduvvon" A Sem/Dummytag Pl Nom SELECT:8955:r1736 ; "nu gohčoduvvon" A Sem/Dummytag Sg Nom SELECT:8955:r1736 ; "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Pl Nom Err/SpaceCmp SELECT:8955:r1736 ; "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Sg Nom Err/SpaceCmp SELECT:8955:r1736 ; "gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc "< gohčoduvvon>" ; "nu" Pcle "" REMOVE:2053:longest-match ; "gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc "< gohčoduvvon>" ; "nu" Adv "" REMOVE:2053:longest-match ; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg "< gohčoduvvon>" ; "nu" Pcle "" REMOVE:2053:longest-match ; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg "< gohčoduvvon>" ; "nu" Adv "" REMOVE:2053:longest-match ; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 "< gohčoduvvon>" ; "nu" Pcle "" REMOVE:2053:longest-match ; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 "< gohčoduvvon>" ; "nu" Adv "" REMOVE:2053:longest-match ; "gohčodit" VV TVV Der/PassL V IV PrfPrc "< gohčoduvvon>" ; "nu" Pcle "" REMOVE:2053:longest-match $ echo "nugohčoduvvon" | hfst-tokenise --giella-cg tools/preprocess/tokeniser-gramcheck-gt-desc.pmhfst "" "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Pl Nom "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Sg Nom :\n $ echo "nu gohčoduvvon" | hfst-tokenise --giella-cg tools/preprocess/tokeniser-gramcheck-gt-desc.pmhfst "" "nu gohčoduvvon" A Sem/Dummytag Attr "nu gohčoduvvon" A Sem/Dummytag Pl Nom "nu gohčoduvvon" A Sem/Dummytag Sg Nom "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr Err/SpaceCmp "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Pl Nom Err/SpaceCmp "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Sg Nom Err/SpaceCmp "gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc "< gohčoduvvon>" "nu" Pcle "" "gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc "< gohčoduvvon>" "nu" Adv "" "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg "< gohčoduvvon>" "nu" Pcle "" "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg "< gohčoduvvon>" "nu" Adv "" "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 "< gohčoduvvon>" "nu" Pcle "" "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 "< gohčoduvvon>" "nu" Adv "" "gohčodit" VV TVV Der/PassL V IV PrfPrc "< gohčoduvvon>" "nu" Pcle "" "gohčodit" VV TVV Der/PassL V IV PrfPrc "< gohčoduvvon>" "nu" Adv "" "gohčodit" VV TVV Der/PassL V IV Ind Prt ConNeg "< gohčoduvvon>" "nu" Pcle "" "gohčodit" VV TVV Der/PassL V IV Ind Prt ConNeg "< gohčoduvvon>" "nu" Adv "" "gohčodit" VV TVV Der/PassL V IV Ind Prs Sg1 "< gohčoduvvon>" "nu" Pcle "" "gohčodit" VV TVV Der/PassL V IV Ind Prs Sg1 "< gohčoduvvon>" "nu" Adv "" :\n }}} !!! UnspaceCmp vs SpaceCmp Løysing: legg til skrik på alle ordgrenser som er UnspaceCmp Men hugs at skriket berre skal på #-en som svarer til feilen (viss det er fleire #, skal ikkje dei andre ha skrik). Sjekk etter at UnspaceCmp har fått skrik på rette plassen: Taklar me *faktiske* kombinasjonar av spacecmp og unspacecmp? FEILEN: vivva sásaguovttos → RETTINGA: vivvasása guovttos !!! Grammatikkontrollforslag med kommentarar * vis til forma, ikkje til analysen av forma (folk forstår ikkje analysene) * forklar feilen i generelle vendinga * men illustrer feilen med det konkrete ordet i feilen * Mun oainnán biila. == ikkje retta i gk * Mun oainnán biiløa. == retta i sk+ Kommentar frå Børre om vuosttaš vs vuosttáš: Det er ikkje sikkert folk som ser forslaget kjenner seg trygge på om grammatikkontrollen tar rett eller ikkje. Men viss dei ser eit kort døme på bruken av begge to («okta dain vuosttaš» vs «…») !!! Kontekstsensitiv stavekontroll med CG Me byggjer ein alternativ pipeline: {{{ "hfst-ospell-cg" -l analyser.hfst -m errmodel.hfst \ | vislcg3 -g disambiguator.cg3 | divvun-suggest-liknande }}} * der {{hfst-ospell-cg}} ikkje finst enno, men gjer ~omtrent som {{hfst-tokenise}}, berre at me bruker feilmodellen til å stava alt som elles er ukjend i analyser. * der disambiguator.cg3 er ein «strammare» CG som t.d. fungerer betre på berre venstrekontekst (staving før brukaren har skrive ferdig setninga) og ikkje lar staveforslaga øydelegga disambigueringa av resten av setninga (disambiguering av kontekstord ser på staveforslag som ~ukjende, disambiguering av sjølve staveforslaga gir då betre forslag). {{hfst-ospell-cg}} ventar naivt tokenisert input («a b. C» blir til 'a', 'b', '.', 'C' sjølv om kanskje «a b» er eit fleirordsuttrykk osb.). Vi kan òg vurdera ein naiv MWE-sjekk for stavekontrollen, med opp til tre ord, slik at ord som i seg sjølv er ukjende for stavekontrollen likevel ikkje blir flagga dersom dei er del av ein MWE. Døme på korleis stavekontrollen fungerer no dersom akseptor er ein full analysator, og ikkje berre ein automat: {{{ $ echo mohtorgielkámádija | hfst-ospell -a -S -l analyser-desktopspeller-gt-norm.hfstol -m hfst/errmodel.default.hfst "mohtorgielkámádija" is NOT in the lexicon: Corrections for "mohtorgielkámádija": muhtorgielkámáđija -1.698242 muhtorgielkámáđidja+N+Sg+Acc muhtorgielkámáđija -1.698242 muhtorgielkámáđidja+N+Sg+Gen muhtorgielkámáđija -1.698242 muhtorgielkámáđidja+N+Sg+Gen+Allegro muhtorgielkámáđija -1.698242 muhtorgielká+N+Cmp#máđidja+N+Sg+Gen muhtorgielkámáđija -1.698242 muhtorgielká+N+Cmp#máđidja+N+Sg+Gen+Allegro muhtorgielkámáđija -1.698242 muhtorgielká+N+Cmp#máđidja+N+Sg+Acc muhtorgielkámáđija -1.698242 muhtor+N+Cmp#gielká+N+Cmp#máđidja+N+Sg+Gen muhtorgielkámáđija -1.698242 muhtor+N+Cmp#gielká+N+Cmp#máđidja+N+Sg+Gen+Allegro muhtorgielkámáđija -1.698242 muhtor+N+Cmp#gielká+N+Cmp#máđidja+N+Sg+Acc mohtorgielkámáđija 7.301758 mohtorgielkámáđidja+N+Sg+Acc mohtorgielkámáđija 7.301758 mohtorgielkámáđidja+N+Sg+Gen mohtorgielkámáđija 7.301758 mohtorgielkámáđidja+N+Sg+Gen+Allegro mohtorgielkámáđija 7.301758 mohtorgielká+N+Cmp#máđidja+N+Sg+Gen mohtorgielkámáđija 7.301758 mohtorgielká+N+Cmp#máđidja+N+Sg+Gen+Allegro mohtorgielkámáđija 7.301758 mohtorgielká+N+Cmp#máđidja+N+Sg+Acc mohtorgielkámáđija 7.301758 mohtor+N+Cmp#gielká+N+Cmp#máđidja+N+Sg+Gen mohtorgielkámáđija 7.301758 mohtor+N+Cmp#gielká+N+Cmp#máđidja+N+Sg+Gen+Allegro mohtorgielkámáđija 7.301758 mohtor+N+Cmp#gielká+N+Cmp#máđidja+N+Sg+Acc mohtorgielkámáđijat 17.301758 mohtorgielkámáđidja+N+Pl+Nom mohtorgielkámáđijat 17.301758 mohtorgielká+N+Cmp#máđidja+N+Pl+Nom }}}