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" Pron Sem/Hum Pers Sg1 Nom @SUBJ> SUBSTITUTE:3251 MAP:17277 #1->1 : "" "dovdat" V TV Ind Prs Sg1 @+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 SELECT:3914 : "" "ahte" CS @CVP MAP:7690:r11 SELECT:7708:r990 #3->3 ; "áhtti" N Sem/Dummytag Sg Gen Allegro Err/Spellrelax REMOVE:3451:too-much-spellrelax ; "ahte" CC @CVP @CNP MAP:7693:r12 SELECT:7708:r990 ; "áhtat" V TV Ind Prs Du1 Err/Spellrelax REMOVE:3451:too-much-spellrelax ; "áhtat" V TV Ind Prt Pl3 Err/Spellrelax 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 }}} # 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 "addit" V TV Ind Prs Pl3 Err/Spellrelax "addit" V TV Ind Prt Sg2 Err/Spellrelax "áddet" V TV Ind Prs Pl1 "áddet" V TV Ind Prs Sg2 "áddet" V TV Inf "áddet" VV TV Der/h V Imprt Sg2 "áddet" VV TV Der/h V Imprt ConNeg "áddet" VV TV Der/h V Ind Prs ConNeg "áddet" VV TV Der/d V Imprt Sg2 "áddet" VV TV Der/d V Imprt ConNeg "áddet" VV TV Der/d V Ind Prs ConNeg :\n }}} # 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) "" ---- another rule should hit!!!! "sáhttit" V IV VGen &syn-Sg3-not-VGen #11->11 ADD:10533:syn-Sg3-not-VGen syn-Sg3-not-VGen "sáhttit" V IV Ind Prt Sg3 &SUGGEST #11->11 COPY:10537:syn-Sg3-not-VGen sáhttit+V+IV+Ind+Prt+Sg3 sáhtii "" "ba" Pcle @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. "" "bivdi" N NomAg Sem/Hum Pl Nom @13 "bivdit" VV TV Der/NomAg N Pl Nom @13 ; "bivdit" V TV Imprt Pl2 REMOVE:6815 ; "bivdit" V TV Ind Prs Pl1 REMOVE:9442:r1809 ; "bivdit" V TV Inf @-FMAINV MAP:9960:-FMAINVInf SELECT:12033:r2360 : "" "báhccat" V IV PrfPrc Err/Orth Err/Spellrelax @-FMAINV SELECT:9636:r1855 MAP:10192:r409 #14->14 SUBSTITUTE:7306:SubV=mv "báhcit" V IV PrfPrc Err/Orth Err/Spellrelax @-FMAINV SELECT:9636:r1855 MAP:10192:r409 #14->14 SUBSTITUTE:7306:SubV=mv "báhccat" V IV PrfPrc Err/Spellrelax @-FMAINV SELECT:9636:r1855 MAP:10192:r409 #14->14 SUBSTITUTE:7306:SubV=mv ; "báhccat" VV IV Der/NomAct N Sg Nom Err/Spellrelax REMOVE:3520:r542 ; "báhccat" VV IV Der/NomAct N Sg Gen Err/Spellrelax REMOVE:3520:r542 ; "báhčči" N NomAg Sem/Hum Sg Nom PxSg1 REMOVE:5257:r992 ; "báhčči" N NomAg Sem/Hum Sg Acc PxSg1 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" Adv @ADVL> MAP:16722 #1->1 : "" "leat" V IV Ind Prs Pl3 @+FMAI NV MAP:10095 #2->2 SUBSTITUTE:7277:SubV=mv SUBSTITUTE:8759 SUBSTITUTE:9397 "leat" V IV Ind Prs Pl1 @+FMAI NV MAP:10095 #2->2 SUBSTITUTE:7277:SubV=mv SUBSTITUTE:8759 SUBSTITUTE:9397 ; "leat" V IV Ind Prs ConNeg REMOVE:9356:NotConNegNotNe g ; "leat" V IV Inf REMOVE:9460:r1820 ; "leat" V IV Ind Prs Sg2 @+FMAINV MAP:10095 REMOVE:154 60:r3257 : "" "sihke" Adv @>CC MAP:15639:r41 #3->3 : "" "bálvalus" Err/Orth N Sem/Act Err/Orth Pl Loc Err/Spellrelax @4 "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp #4->4 "bálvalus" N Sem/Act Err/Orth Pl Loc @4 "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp #4->4 "bálvalus" N Sem/Act Pl Loc @4 "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp #4->4 "bálvalus" Err/Orth N Sem/Act Err/Orth Pl Loc Err/Spellrelax @4 "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp #4->4 "bálvalus" N Sem/Act Err/Orth Pl Loc @4 "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp #4->4 "bálvalus" N Sem/Act Pl Loc @4 "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp #4->4 "bálvalus" Err/Orth N Sem/Act Err/Orth Pl Loc Err/Spellrelax @4 "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp #4->4 "bálvalus" N Sem/Act Pl Loc Err/Spellrelax @4 "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp #4->4 ; "bálvalus" Err/Orth N Sem/Act Err/Orth Sg Com Err/Spellrelax SELECT:13676:r2778 ; "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp ; "bálvalus" N Sem/Act Err/Orth Sg Com SELECT:13676:r2778 ; "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp ; "bálvalus" N Sem/Act Sg Com SELECT:13676:r2778 ; "neahtta" N Sem/Dummytag Cmp/SgNom Cmp/Hyph Cmp ; "bálvalus" Err/Orth N Sem/Act Err/Orth Sg Com Err/Spellrelax SELECT:13676:r2778 ; "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp ; "bálvalus" N Sem/Act Err/Orth Sg Com SELECT:13676:r2778 ; "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp ; "bálvalus" N Sem/Act Sg Com SELECT:13676:r2778 ; "neahtis" A Sem/Hum Cmp/Attr Cmp/Hyph Cmp ; "bálvalus" Err/Orth N Sem/Act Err/Orth Sg Com Err/Spellrelax SELECT:13676:r2778 ; "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp ; "bálvalus" N Sem/Act Sg Com Err/Spellrelax SELECT:13676:r2778 ; "neahtis" A Sem/Hum Cmp/SgGen Cmp/Hyph Cmp : "" "já" Interj @INTERJ MAP:15540:r15 #5->5 "ja" CC @CVP MAP:7668:r12 #5->5 ; "ja" CC @CNP MAP:7668:r12 REMOVE:7857:r1466 : "" "mobiila" N Sem/Dummytag Sg Loc @6 ; "mobiila" A Sem/Dummytag Sg Loc REMOVE:10260:r1961 ; "mobiila" N Sem/Dummytag Sg Acc PxSg3 REMOVE:13046:r2613 ; "mobiila" N Sem/Dummytag Sg Gen PxSg3 REMOVE:13046:r2613 : "" "átnut" V TV Ind Prs Sg3 Err/Spellrelax @+FMAINV MAP:10136:r406 SELECT:14843:r3094 #7->7 SUBSTITUTE:7277:SubV=mv ; "atnu" N Sem/Dummytag Sg Nom @ @ SELECT:14843:r3094 ; "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax @>N MAP:16234:r227 SELECT:14843:r3094 "" "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com @8 "prográmma" N G3 Sem/Tool-it Pl Loc @8 "prográmma" N G3 Sem/Tool-it Sg Com @8 "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc @8 "<.>" "." CLB #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 "" "atnuprográmma" N G3 Sem/Dummytag Err/Orth Sg Com Err/SpaceCmp "atnuprográmma" N G3 Sem/Dummytag Err/Orth Pl Loc Err/SpaceCmp "atnuprográmma" N G3 Sem/Dummytag Sg Com Err/SpaceCmp "atnuprográmma" N G3 Sem/Dummytag Pl Loc Err/SpaceCmp ; "prográmma" N G3 Sem/Tool-it Pl Loc "" ; "átnut" V TV Ind Prs Sg3 Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Pl Loc "" ; "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Pl Loc "" ; "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Pl Loc "" ; "atnu" N Sem/Dummytag Sg Nom "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Sg Com "" ; "átnut" V TV Ind Prs Sg3 Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Sg Com "" ; "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Sg Com "" ; "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Sg Com "" ; "atnu" N Sem/Dummytag Sg Nom "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc "" ; "átnut" V TV Ind Prs Sg3 Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc "" ; "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc "" ; "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Pl Loc "" ; "atnu" N Sem/Dummytag Sg Nom "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com "" ; "átnut" V TV Ind Prs Sg3 Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com "" ; "ádnu" N Sem/Dummytag Sg Gen Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com "" ; "ádnu" N Sem/Dummytag Sg Acc Err/Spellrelax "" REMOVE:2024:longest-match ; "prográmma" N G3 Sem/Tool-it Err/Orth Sg Com "" ; "atnu" N Sem/Dummytag Sg Nom "" REMOVE:2024:longest-match :\n }}}