2016-11-23
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)
- VV, NN, osb (retta i twol for generator?)
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>"
"mun" §AG Pron Sem/Hum Pers Sg1 Nom <W:0> @SUBJ> SUBSTITUTE:3252 MAP:17282 #1->1 SUBSTITUTE:8476
:
"<beroštan>"
"beroštit" <mv> V <AG-Nom-Any> <TH-AktioLoc> <TH-Inf> <TH-Loc-Any> <TH-ahte> IV Ind Prs Sg1 <W:0> @+FMAINV SELECT:5086:r949 MAP:10165:r406 #2->2 SUBSTITUTE:7357:SubV=mv
; "beroštit" V <AG-Nom-Any> <TH-Inf> <TH-Loc-Any> <TH-ahte> IV Actio Gen <W:0> SELECT:5086:r949
; "beroštit" V IV Actio Nom <W:0> SELECT:5086:r949
; "beroštit" V <AG-Nom-Any> <TH-AktioLoc> <TH-Inf> <TH-Loc-Any> <TH-ahte> IV Ind Prt ConNeg <W:0> SELECT:5086:r949
; "beroštit" V <AG-Nom-Any> <TH-AktioLoc> <TH-Inf> <TH-Loc-Any> <TH-ahte> IV PrfPrc <W:0> SELECT:5086:r949
:
"<animašungursii>"
"animašunkursa" N Sem/Edu Sg Ill <W:0> @<ADVL MAP:16745 &msyn-valency-loc-ill #3->3 ADD:10323:msyn-valency-loc-ill
msyn-valency-loc-ill
"animašunkursa" N Sem/Edu Sg <W:0> @<ADVL MAP:16745 Loc &SUGGEST #3->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 <W:10>
; "animašuvdna" N Sem/Dummytag Cmp/SgNom Cmp <W:10> REMOVE:2053:longest-match
"<.>"
"." CLB <W:0> #4->4
+vN-taggar manglar i gramcheck-analysatoren:
"<1999:s>"
"1999" Num Arab Sg Loc <W:0> #1->1
"1999" Num Sem/Year Sg Loc <W:0> #1->1
:
"<bidjui>"
"bidju" N Sem/Dummytag Sg Ill <W:0> &real-biddjui #2->2 ADD:4060:biddjui ADD:4070:biddjui ADD:4060:biddjui ADD:4070:biddjui
real-biddjui
"biedju" N Sem/Plc Sg Ill <W:0> &real-biddjui #2->2 ADD:4060:biddjui ADD:4070:biddjui ADD:4060:biddjui ADD:4070:biddjui
real-biddjui
"bidjat" Sem/Dummytag <W:0> 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 <W:0> 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>"
"nu gohčoduvvon" A Sem/Dummytag Attr <W:0> @>N SELECT:8955:r1736 MAP:15815:r86 #3->3
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr Err/SpaceCmp <W:0> @>N SELECT:8955:r1736 MAP:15815:r86 #3->3
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr <W:0> @>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 <W:0> SELECT:8955:r1736
; "nu gohčoduvvon" A Sem/Dummytag Sg Nom <W:0> SELECT:8955:r1736
; "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Pl Nom Err/SpaceCmp <W:0> SELECT:8955:r1736
; "nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Sg Nom Err/SpaceCmp <W:0> SELECT:8955:r1736
; "gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
; "nu" Pcle <W:0> "<nu>" REMOVE:2053:longest-match
; "gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
; "nu" Adv <W:0> "<nu>" REMOVE:2053:longest-match
; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg <W:0> "< gohčoduvvon>"
; "nu" Pcle <W:0> "<nu>" REMOVE:2053:longest-match
; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg <W:0> "< gohčoduvvon>"
; "nu" Adv <W:0> "<nu>" REMOVE:2053:longest-match
; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 <W:0> "< gohčoduvvon>"
; "nu" Pcle <W:0> "<nu>" REMOVE:2053:longest-match
; "gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 <W:0> "< gohčoduvvon>"
; "nu" Adv <W:0> "<nu>" REMOVE:2053:longest-match
; "gohčodit" VV TVV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
; "nu" Pcle <W:0> "<nu>" REMOVE:2053:longest-match
$ echo "nugohčoduvvon" | hfst-tokenise --giella-cg tools/preprocess/tokeniser-gramcheck-gt-desc.pmhfst
"<nugohčoduvvon>"
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr <W:0>
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Pl Nom <W:0>
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Sg Nom <W:0>
:\n
$ echo "nu gohčoduvvon" | hfst-tokenise --giella-cg tools/preprocess/tokeniser-gramcheck-gt-desc.pmhfst
"<nu gohčoduvvon>"
"nu gohčoduvvon" A Sem/Dummytag Attr <W:0>
"nu gohčoduvvon" A Sem/Dummytag Pl Nom <W:0>
"nu gohčoduvvon" A Sem/Dummytag Sg Nom <W:0>
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Attr Err/SpaceCmp <W:0>
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Pl Nom Err/SpaceCmp <W:0>
"nu gohčoduvvon" Err/UnspaceCmp A Sem/Dummytag Sg Nom Err/SpaceCmp <W:0>
"gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
"nu" Pcle <W:0> "<nu>"
"gohččut" VV TVV Der/d VV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
"nu" Adv <W:0> "<nu>"
"gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg <W:0> "< gohčoduvvon>"
"nu" Pcle <W:0> "<nu>"
"gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prt ConNeg <W:0> "< gohčoduvvon>"
"nu" Adv <W:0> "<nu>"
"gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 <W:0> "< gohčoduvvon>"
"nu" Pcle <W:0> "<nu>"
"gohččut" VV TVV Der/d VV Der/PassL V IV Ind Prs Sg1 <W:0> "< gohčoduvvon>"
"nu" Adv <W:0> "<nu>"
"gohčodit" VV TVV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
"nu" Pcle <W:0> "<nu>"
"gohčodit" VV TVV Der/PassL V IV PrfPrc <W:0> "< gohčoduvvon>"
"nu" Adv <W:0> "<nu>"
"gohčodit" VV TVV Der/PassL V IV Ind Prt ConNeg <W:0> "< gohčoduvvon>"
"nu" Pcle <W:0> "<nu>"
"gohčodit" VV TVV Der/PassL V IV Ind Prt ConNeg <W:0> "< gohčoduvvon>"
"nu" Adv <W:0> "<nu>"
"gohčodit" VV TVV Der/PassL V IV Ind Prs Sg1 <W:0> "< gohčoduvvon>"
"nu" Pcle <W:0> "<nu>"
"gohčodit" VV TVV Der/PassL V IV Ind Prs Sg1 <W:0> "< gohčoduvvon>"
"nu" Adv <W:0> "<nu>"
:\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
Sjekk etter at UnspaceCmp har fått skrik på rette plassen:
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
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,
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

