2016-06-29

Grammatikkontroll-prosjektet - status

Kommandorekka:

  • backtracking-koden bør reinskrivast, gjerast ryddigare
  • handteringa av abbr, ordenstal osb (uttrykk som sluttar med punktum) er ikkje på plass enno
    • backtracking-koden må kanskje ha ei endring for å tillata backtrack saman med input-marks
    • døme: «Jan.»: jan+N+ABBR|.+PUNCT, jan.+N+ABBR, eller namnet Jan+N+Prop|.+PUNCT – her vil me i abbr-leksikon seia at mellom «jan» og «.» skal det vera input-mark, men i tillegg tillata backtrack pga. Jan+N+Prop står ein heilt annan plass (og me vil ikkje manuelt spesifisera alt som er tvetydig med abbr-utan-punktum)
  • spellrelax treng rydding i lexc
    • døme: ja får já+Interj utan spellrelax-tagg
    • interaksjon med særskriving
    • meir restriktiv spellrelax i gramsjekk
  • feilmeldingar i errors.xml bør dekka alle &taggar
  • brukervennlig feedback

ABBR/ordinaltal vs setningsgrenser

Per tok den fyrste boka. Kari den 3. Eg tok den siste.

"<3.>"
   "3." Adj Ord
   "." PUNCT
       "3" Num
   "." PUNCT
       "3." Adj Ord

Vi vil ha (ved setningsslutt):

"<3>"
    "3." Adj Ord
"<.>"
    "." PUNCT

Når det ikkje er setningsslutt:

"<3.>"
    "3." Adj Ord

Andre uttrykk med punktum:

03.04.
§ 1.7.
kapittel 1.5.
jan.
«Dette skjer i slutten av jan. Så kom det nedbør …»
«Dette skjer i slutten av jan. så vi bør …»

Spellrelax

ikkje ved ord frå lukka ordklasser:

  • ahte-áhtti/áhtat
  • ja-já
"<Mun>"
        "mun" Pron Sem/Hum Pers Sg1 Nom <W:0> @SUBJ> SUBSTITUTE:3251 MAP:17277 #1->1
: 
"<dovddan>"
        "dovdat" <mv> V <EX-Nom-Ani> <TH-Acc-Any><TH-PrfPrc> <TH-Acc-Any><TH-AktioEss> <TH-Inf><RO-Ess-Any> <TH-Acc-Any><RO-Ess-Any> <TH-go> <TH-FS-Qpron> <TH-ahte> <TH-Acc-Any> <TH-0> TV Ind Prs Sg1 <W:0> @+FMAINV SELECT:3914 MAP:10161:r406 #2->2 SUBSTITUTE:7306:SubV=mv SETCHILD:7857 SETCHILD:7861 SETCHILD:7857 SETCHILD:7861
;       "dovdda" N Sem/Perc-emo Ess <W:0> SELECT:3914
: 
"<ahte>"
        "ahte" CS <W:0> @CVP MAP:7690:r11 SELECT:7708:r990 #3->3
;       "áhtti" N Sem/Dummytag Sg Gen Allegro Err/Spellrelax <W:0> REMOVE:3451:too-much-spellrelax
;       "ahte" CC <W:0> @CVP @CNP MAP:7693:r12 SELECT:7708:r990
;       "áhtat" V TV Ind Prs Du1 Err/Spellrelax <W:0> REMOVE:3451:too-much-spellrelax
;       "áhtat" V TV Ind Prt Pl3 Err/Spellrelax <W:0> REMOVE:3451:too-much-spellrelax
: 

Vi vil ha ein eigen spellrelax for grammatikkontrollen, ikkje den same som den vanlege.

Døme:

áddet-addit:
áddet-addet
ádden-adden
  1. Slik det ser ut akkurat no i input, med Spellrelax:
$ echo áddet | bash modes/smegram-morph.mode 
"<áddet>"
    "addit" V TV Imprt Pl2 Err/Spellrelax <W:0>
    "addit" V TV Ind Prs Pl3 Err/Spellrelax <W:0>
    "addit" V TV Ind Prt Sg2 Err/Spellrelax <W:0>
    "áddet" V TV Ind Prs Pl1 <W:0>
    "áddet" V TV Ind Prs Sg2 <W:0>
    "áddet" V TV Inf <W:0>
    "áddet" VV TV Der/h V Imprt Sg2 <W:0>
    "áddet" VV TV Der/h V Imprt ConNeg <W:0>
    "áddet" VV TV Der/h V Ind Prs ConNeg <W:0>
    "áddet" VV TV Der/d V Imprt Sg2 <W:0>
    "áddet" VV TV Der/d V Imprt ConNeg <W:0>
    "áddet" VV TV Der/d V Ind Prs ConNeg <W:0>
:\n
  1. men grammarchecker.cg3/disambiguation.cg3 baserer seg berre på analyse-som-om-input-er-rett:
$ grep -c '^ADD:áddet (&real-áddet) TARGET ("addit")' grammarchecker.cg3 
45
Jienasteddjiide sáhttá šaddat váttis áddet, mo olgeš- ja ovddádusbellodat sáhtiba ovddidit oktasaš sámepolitihkka  jus dát bellodagat fidnejit ráđđehus válddi boahtte čavčča Stuorradikke válggain.

sáhttiba (Du3- ba)

"<sáhti>" ---- another rule should hit!!!!
        "sáhttit" V <TH-Acc-Obj><XT-Acc-Measure> <DE-Ill-Plc> <Inf> IV VGen <W:0> &syn-Sg3-not-VGen #11->11 ADD:10533:syn-Sg3-not-VGen
syn-Sg3-not-VGen
        "sáhttit" V <TH-Acc-Obj><XT-Acc-Measure> <DE-Ill-Plc> <Inf> IV <W:0> Ind Prt Sg3 &SUGGEST #11->11 COPY:10537:syn-Sg3-not-VGen
sáhttit+V+IV+Ind+Prt+Sg3        sáhtii
"<ba>"
        "ba" Pcle <W:0> @PCLE MAP:15565:r16 #12->12

spellrelax ruins it:

LIST DOUBLE-CONSONANT-IT-VERBS = (".*hčit"r V) (".*hčit"r V*) (".*httit"r V*) ;    

ADD:syn-prfprc-not-pxsg1 (&syn-prfprc-not-pxsg1) TARGET DOUBLE-CONSONANT-IT-VERBS IF (0 (VV TVV Der/NomAg N Sg Gen PxSg1) OR (VV TVV Der/NomAg N Sg Acc PxSg1) OR (VV TVV Der/NomAg N Sg Nom PxSg1))(NEGATE *-1 ("mun" Pron Pers Sg3 Nom) BARRIER GRAMCHK-S-BOUNDARY) ;

COPY:syn-prfprc-not-pxsg1 (V TV PrfPrc &SUGGEST) EXCEPT (VV TVV Der/NomAg N Sg Gen PxSg1 &syn-prfprc-not-pxsg1) OR (VV TVV Der/NomAg N Sg Acc PxSg1 &syn-prfprc-not-pxsg1) OR (VV TVV Der/NomAg N Sg Nom PxSg1 &syn-prfprc-not-pxsg1) TARGET (&syn-sg1-not-pxsg1) ;
    ## Dán guovllus eai galggašii leat boranávddit, ja dáid máŋemuš jágiid leat bivdit báhččán álbasiid Dielddasullos.



"<bivdit>"
        "bivdi" N NomAg Sem/Hum Pl Nom <W:0> @<SPRED SELECT:12033:r2360 MAP:16886 #13->13
        "bivdit" VV TV Der/NomAg N Pl Nom <W:0> @<SPRED SELECT:12033:r2360 MAP:16886 #13->13
;       "bivdit" V <RE-Loc-Ani><TH-FS-Qst> <TH-Acc-*Ani><RE-Loc-Ani> <PA-Acc-Ani><PU-Ill-Any> <PA-Acc-Ani> <TO-ahte> <RE-Acc-Ani><TO-Ill-Any> <TH-Inf> <TH-Acc-Any><RE-Loc-Ani> <TH-ahte> <TH-Acc-*Ani> TV Imprt Pl2 <W:0> REMOVE:6815
;       "bivdit" V <RE-Loc-Ani><TH-FS-Qst> <TH-Acc-*Ani><RE-Loc-Ani> <PA-Acc-Ani><PU-Ill-Any> <PA-Acc-Ani> <TO-ahte> <RE-Acc-Ani><TO-Ill-Any> <TH-Inf> <TH-Acc-Any><RE-Loc-Ani> <TH-ahte> <TH-Acc-*Ani> TV Ind Prs Pl1 <W:0> REMOVE:9442:r1809
;       "bivdit" V <RE-Loc-Ani><TH-FS-Qst> <TH-Acc-*Ani><RE-Loc-Ani> <PA-Acc-Ani><PU-Ill-Any> <PA-Acc-Ani> <TO-ahte> <RE-Acc-Ani><TO-Ill-Any> <TH-Inf> <TH-Acc-Any><RE-Loc-Ani> <TH-ahte> <TH-Acc-*Ani> TV Inf <W:0> @-FMAINV MAP:9960:-FMAINVInf SELECT:12033:r2360
: 
"<báhččán>"
        "báhccat" <mv> V IV PrfPrc Err/Orth Err/Spellrelax <W:0> @-FMAINV SELECT:9636:r1855 MAP:10192:r409 #14->14 SUBSTITUTE:7306:SubV=mv
        "báhcit" <mv> V <AT-Abe-Any> <MA-Adv-Manner> <LO-Ill-Plc> <LO-Loc-Any> <LO-ala-Plc> <LO-Ill-Plc> <DE-Ill-Plc><PU-Inf> <PU-Inf> <RO-Ess-Any> <TH-haga-Any> IV PrfPrc Err/Orth Err/Spellrelax <W:0> @-FMAINV SELECT:9636:r1855 MAP:10192:r409 #14->14 SUBSTITUTE:7306:SubV=mv
        "báhccat" <mv> V IV PrfPrc Err/Spellrelax <W:0> @-FMAINV SELECT:9636:r1855 MAP:10192:r409 #14->14 SUBSTITUTE:7306:SubV=mv
;       "báhccat" VV IV Der/NomAct N Sg Nom Err/Spellrelax <W:0> REMOVE:3520:r542
;       "báhccat" VV IV Der/NomAct N Sg Gen Err/Spellrelax <W:0> REMOVE:3520:r542
;       "báhčči" N NomAg Sem/Hum Sg Nom PxSg1 <W:0> REMOVE:5257:r992
;       "báhčči" N NomAg Sem/Hum Sg Acc PxSg1 <W:0> REMOVE:5257:r992

Redusert spellrelax:

  • ikkje ta med č->c, c->č
  • berre á-a, og då i ein redusert versjon basert på korpusdata (leksikalisera frekvente spellrelax-feil)?
    • eventuelt òg: tillata spellrelax på alt som er i leksikon men ikkje korpus – altså, viss ahte står i leksikon, òg i korpus, så ikkje spellrelax áhte→ahte; viss áhte står i leksikon, men ikkje i korpus, så gi «áhte» ei spellrelax-lesing med lemma «ahte»
      • ekspander leksikon, få ahte, áhte, osb., lag alle spellrelax-variantar áhte, ahte. Filtrer ut «ahte», fordi det står i korpus, men la «áhte» stå igjen (stod ikkje i korpus). No vil input «áhte» få ei lesing «ahte» i tillegg til «áhtti».

compound-error is not recognized: atnu prográmma because atnu gets Spell-relax readings and the real one is discarded:

"<Otne>"
        "otne" Adv <W:0> @ADVL> MAP:16722 #1->1
: 
"<leat>"
        "leat" <mv> V <copula> <copula> <TH-Nom-Any> <mielde> <OR-Loc-HumGroup> <OR-eret-Plc> <LO-Loc-johtu><DE-Ill-Plc> <A
T-Abe-Any> <AT-Nom-Any> <AT-Nom-Adj><EX-Ill-Ani> <PO-Gen-Hum> <MA-mielde-Any> <MA-Adv-Manner> <XT-Gen-Measr> <LO-maŋŋil-Tim
e> <LO-Acc-Time> <LO-Loc-Time> <CO-Com-Ani> <ID-Nom-Any> <TH-Nom-Any><RO-Ess-Any><EX-Ill-Any> <EX-Ill-Ani><TH-Nom-Adj> <EX-
Ill-Ani> <TH-Nom-Obj><RE-Ill-Ani> <LO-Loc-Any> <AktioEss> <RO-Ess-Any><PU-Ill-Act> <RO-Ess-Any> IV Ind Prs Pl3 <W:0> @+FMAI
NV MAP:10095 #2->2 SUBSTITUTE:7277:SubV=mv SUBSTITUTE:8759 SUBSTITUTE:9397
        "leat" <mv> V <copula> <copula> <TH-Nom-Any> <mielde> <OR-Loc-HumGroup> <OR-eret-Plc> <LO-Loc-johtu><DE-Ill-Plc> <A
T-Abe-Any> <AT-Nom-Any> <AT-Nom-Adj><EX-Ill-Ani> <PO-Gen-Hum> <MA-mielde-Any> <MA-Adv-Manner> <XT-Gen-Measr> <LO-maŋŋil-Tim
e> <LO-Acc-Time> <LO-Loc-Time> <CO-Com-Ani> <ID-Nom-Any> <TH-Nom-Any><RO-Ess-Any><EX-Ill-Any> <EX-Ill-Ani><TH-Nom-Adj> <EX-
Ill-Ani> <TH-Nom-Obj><RE-Ill-Ani> <LO-Loc-Any> <AktioEss> <RO-Ess-Any><PU-Ill-Act> <RO-Ess-Any> IV Ind Prs Pl1 <W:0> @+FMAI
NV MAP:10095 #2->2 SUBSTITUTE:7277:SubV=mv SUBSTITUTE:8759 SUBSTITUTE:9397
;       "leat" V <TH-Nom-Any> <mielde> <OR-Loc-HumGroup> <OR-eret-Plc> <LO-Loc-johtu><DE-Ill-Plc> <AT-Abe-Any> <AT-Nom-Any>
 <AT-Nom-Adj><EX-Ill-Ani> <PO-Gen-Hum> <MA-mielde-Any> <MA-Adv-Manner> <XT-Gen-Measr> <LO-maŋŋil-Time> <LO-Acc-Time> <LO-Lo
c-Time> <CO-Com-Ani> <ID-Nom-Any> <TH-Nom-Any><RO-Ess-Any><EX-Ill-Any> <EX-Ill-Ani><TH-Nom-Adj> <EX-Ill-Ani> <TH-Nom-Obj><R
E-Ill-Ani> <LO-Loc-Any> <AktioEss> <RO-Ess-Any><PU-Ill-Act> <RO-Ess-Any> IV Ind Prs ConNeg <W:0> REMOVE:9356:NotConNegNotNe
g
;       "leat" V <TH-Nom-Any> <mielde> <OR-Loc-HumGroup> <OR-eret-Plc> <LO-Loc-johtu><DE-Ill-Plc> <AT-Abe-Any> <AT-Nom-Any>
 <AT-Nom-Adj><EX-Ill-Ani> <PO-Gen-Hum> <MA-mielde-Any> <MA-Adv-Manner> <XT-Gen-Measr> <LO-maŋŋil-Time> <LO-Acc-Time> <LO-Lo
c-Time> <CO-Com-Ani> <ID-Nom-Any> <TH-Nom-Any><RO-Ess-Any><EX-Ill-Any> <EX-Ill-Ani><TH-Nom-Adj> <EX-Ill-Ani> <TH-Nom-Obj><R
E-Ill-Ani> <LO-Loc-Any> <AktioEss> <RO-Ess-Any><PU-Ill-Act> <RO-Ess-Any> IV Inf <W:0> REMOVE:9460:r1820
;       "leat" V <TH-Nom-Any> <mielde> <OR-Loc-HumGroup> <OR-eret-Plc> <LO-Loc-johtu><DE-Ill-Plc> <AT-Abe-Any> <AT-Nom-Any>
 <AT-Nom-Adj><EX-Ill-Ani> <PO-Gen-Hum> <MA-mielde-Any> <MA-Adv-Manner> <XT-Gen-Measr> <LO-maŋŋil-Time> <LO-Acc-Time> <LO-Lo
c-Time> <CO-Com-Ani> <ID-Nom-Any> <TH-Nom-Any><RO-Ess-Any><EX-Ill-Any> <EX-Ill-Ani><TH-Nom-Adj> <EX-Ill-Ani> <TH-Nom-Obj><R
E-Ill-Ani> <LO-Loc-Any> <AktioEss> <RO-Ess-Any><PU-Ill-Act> <RO-Ess-Any> IV Ind Prs Sg2 <W:0> @+FMAINV MAP:10095 REMOVE:154
60:r3257
: 
"<sihke>"
        "sihke" Adv <W:0> @>CC MAP:15639:r41 #3->3
: 
"<neahtta-bálvalusain>"
        "bálvalus" Err/Orth N Sem/Act Err/Orth Pl Loc Err/Spellrelax <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" N Sem/Act Err/Orth Pl Loc <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" N Sem/Act Pl Loc <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" Err/Orth N Sem/Act Err/Orth Pl Loc Err/Spellrelax <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" N Sem/Act Err/Orth Pl Loc <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" N Sem/Act Pl Loc <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" Err/Orth N Sem/Act Err/Orth Pl Loc Err/Spellrelax <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp <W:10> #4->4
        "bálvalus" N Sem/Act Pl Loc Err/Spellrelax <W:10> @<ADVL SELECT:13676:r2778 MAP:16715 #4->4
                "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp <W:10> #4->4
;       "bálvalus" Err/Orth N Sem/Act Err/Orth Sg Com Err/Spellrelax <W:10> SELECT:13676:r2778
;               "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp <W:10>
;       "bálvalus" N Sem/Act Err/Orth Sg Com <W:10> SELECT:13676:r2778
;               "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp <W:10>
;       "bálvalus" N Sem/Act Sg Com <W:10> SELECT:13676:r2778
;               "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp <W:10>
;       "bálvalus" Err/Orth N Sem/Act Err/Orth Sg Com Err/Spellrelax <W:10> SELECT:13676:r2778
;               "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp <W:10>
;       "bálvalus" N Sem/Act Err/Orth Sg Com <W:10> SELECT:13676:r2778
;               "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp <W:10>
;       "bálvalus" N Sem/Act Sg Com <W:10> SELECT:13676:r2778
;               "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp <W:10>
;       "bálvalus" Err/Orth N Sem/Act Err/Orth Sg Com Err/Spellrelax <W:10> SELECT:13676:r2778
;               "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp <W:10>
;       "bálvalus" N Sem/Act Sg Com Err/Spellrelax <W:10> SELECT:13676:r2778
;               "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp <W:10>
: 
"<ja>"
        "já" Interj <W:0> @INTERJ MAP:15540:r15 #5->5
        "ja" CC <W:0> @CVP MAP:7668:r12 #5->5
;       "ja" CC <W:0> @CNP MAP:7668:r12 REMOVE:7857:r1466
: 
"<mobiillas>"
        "mobiila" N Sem/Dummytag Sg Loc <W:0> @<ADVL MAP:16718:GramVal #6->6
;       "mobiila" A Sem/Dummytag Sg Loc <W:0> REMOVE:10260:r1961
;       "mobiila" N Sem/Dummytag Sg Acc PxSg3 <W:0> REMOVE:13046:r2613
;       "mobiila" N Sem/Dummytag Sg Gen PxSg3 <W:0> REMOVE:13046:r2613
: 
"<atnu>"
        "átnut" <mv> V <RE-Loc-Ani><TH-FS-Qst> <TH-Acc-*Ani><RE-Loc-Ani> <TH-Acc-Any><RE-Loc-Ani> <TH-ahte> <TH-Acc-Any> TV Ind Prs Sg3 Err/Spellrelax <W:0> @+FMAINV MAP:10136:r406 SELECT:14843:r3094 #7->7 SUBSTITUTE:7277:SubV=mv
;       "atnu" N <TH-Ill-Any> Sem/Dummytag Sg Nom <W:0> @<SUBJ MAP:17292 REMOVE:17670:<SubjIfNotVfin
;       "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax <W:0> @<OBJ MAP:17369:IfNoTransV> SELECT:14843:r3094
;       "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax <W:0> @>N MAP:16234:r227 SELECT:14843:r3094
"<prográmmain>"
        "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com <W:0> @<ADVL MAP:16715 #8->8
        "prográmma" N G3 Sem/Tool-it Pl Loc <W:0> @<ADVL MAP:16715 #8->8
        "prográmma" N G3 Sem/Tool-it Sg Com <W:0> @<ADVL MAP:16715 #8->8
        "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc <W:0> @<ADVL MAP:16715 #8->8
"<.>"
        "." CLB <W:0> #9->9

Mogleg strategi for leksikalisering av spellrelax:

  • «átnu» – finst ikkje i korpus, men «atnu» finst i leksikon+korpus, så legg til at «átnu» er feilstaving av «atnu»
  • «atnu» – finst i korpus, sjekk manuelt om «atnu» er sannsynleg feilstaving av «átnu» (kan kanskje gjera jobben enklare ved å filtrera vekk der rettinga ikkje finst i korpus – så viss «atnu» er i korpus, men ikkje «átnu», vil me aldri retta atnu→átnu)
$ echo atnu prográmmain | bash modes/trace-smegram-mwe-dis.mode 
"<atnu prográmmain>"
    "atnuprográmma" N G3 Sem/Dummytag Err/Orth Sg Com Err/SpaceCmp <W:0>
    "atnuprográmma" N G3 Sem/Dummytag Err/Orth Pl Loc Err/SpaceCmp <W:0>
    "atnuprográmma" N G3 Sem/Dummytag Sg Com Err/SpaceCmp <W:0>
    "atnuprográmma" N G3 Sem/Dummytag Pl Loc Err/SpaceCmp <W:0>
;    "prográmma" N G3 Sem/Tool-it Pl Loc <W:0> "<prográmmain>"
;        "átnut" V TV Ind Prs Sg3 Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Pl Loc <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Pl Loc <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Pl Loc <W:0> "<prográmmain>"
;        "atnu" N Sem/Dummytag Sg Nom <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Sg Com <W:0> "<prográmmain>"
;        "átnut" V TV Ind Prs Sg3 Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Sg Com <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Sg Com <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Sg Com <W:0> "<prográmmain>"
;        "atnu" N Sem/Dummytag Sg Nom <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc <W:0> "<prográmmain>"
;        "átnut" V TV Ind Prs Sg3 Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc <W:0> "<prográmmain>"
;        "atnu" N Sem/Dummytag Sg Nom <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com <W:0> "<prográmmain>"
;        "átnut" V TV Ind Prs Sg3 Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com <W:0> "<prográmmain>"
;        "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax <W:0> "<atnu>" REMOVE:2024:longest-match
;    "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com <W:0> "<prográmmain>"
;        "atnu" N Sem/Dummytag Sg Nom <W:0> "<atnu>" REMOVE:2024:longest-match
:\n