Language Technology at UiT

The Divvun and Giellatekno teams build language technology aimed at minority and indigenous languages

View GiellaLT on GitHub divvungiellatekno/giellalt.uit.no

Page Content

Grammatikkontrollmøte 12.10.2016

Til stades: Linda, Kevin, Sjur

kontrakt for Kevin

Vi diskuterte status. Sjur tek saka vidare med Trond.

status for hfst-tokenise og segmentering

Kevin flettar inn eigne tillegg. Sjur organiserer møte i Helsingfors med Sam, Krister og Kevin.

Kevin døypar om –gtd til –giella-cg, og skriv meir dokumentasjon i hjelpeteksten.

sammesatte ord

Døme: Davvi-Norggas

Davvi Norggas leat sihke sámi olbmot ja dáččat eallán bálddalaga áiggiid čađa,
náitaladdan ruossut rássut , eai leat čielga dieđut gostege mo lea mihkkege ja
mii lea vuođđun .
"<Davvi>"
        "davvi" N Sem/Plc Sg Nom <W:0> @SPRED> MAP:16919 &msyn-addhyphen #1->1 ADD:9013:addhyphen
msyn-addhyphen
        "davvi" N Sem/Plc <W:0> @SPRED> MAP:16919 Cmp/SgNom Cmp/SplitR &SUGGEST #1->1 COPY:9014:hyphen
davvi+N+Cmp/SgNom+Cmp/SplitR    davve-,davvi-
:
"<Norggas>"
        "Norga" §LO N Prop Sem/Plc Sg Loc <W:0> @HAB SELECT:3475:r855 MAP:16708:r497 #2->3 SUBSTITUTE:8686
        "Norga" §LO N Prop Sem/Sur Sg Loc <W:0> @HAB SELECT:3475:r855 MAP:16708:r497 #2->3 SUBSTITUTE:8686
* **"norga" Err/Lex N Sem/Dummytag Sg Acc PxSg3 <W:0> SELECT:3475**: r855
* **"norga" Err/Lex N Sem/Dummytag Sg Gen PxSg3 <W:0> SELECT:3475**: r855
* **"norga" Err/Lex N Sem/Dummytag Sg Loc <W:0> SELECT:3475**: r855
* **"norga" Err/Lex NN Sem/Dummytag Der/Dimin N Sg Acc Err/Orth Err/Spellrelax <W:0> SELECT:3475**: r855
* **"norga" Err/Lex NN Sem/Dummytag Der/Dimin N Sg Gen Err/Orth Err/Spellrelax <W:0> SELECT:3475**: r855
* **"norga" Err/Lex NN Sem/Dummytag Der/Dimin N Sg Nom Err/Spellrelax <W:0> SELECT:3475**: r855

Dette blir no retta til: Davvi- Norggas, som blir feil (det skal ikkje vera mellomrom).

Ordet finst leksikalisert i analysatoren:

Davvi-Norgga
Davvi-Norgga    Davvi-Norga+N+Prop+Sem/Plc+Sg+Gen

$ echo Davvi-Norggas | hfst-lookup -q -p src/analyser-disamb-gt-desc.hfstol
Davvi-Norggas        Davvi-Norga+N+Prop+Sem/Plc+Sg+Loc        0,000000
Davvi-Norggas        Davvi-Norga+N+Prop+Sem/Sur+Sg+Loc        0,000000
Davvi-Norggas        Davvi-Norga+N+Prop+Sem/Plc+Sg+Loc        0,000000
Davvi-Norggas        Davvi-Norga+N+Prop+Sem/Sur+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Dummytag+Cmp/SgNom+Cmp-#Norga+N+Prop+Sem/Plc+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Dummytag+Cmp/SgNom+Cmp-#Norga+N+Prop+Sem/Sur+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Plc+Cmp/SgNom+Err/Orth+Cmp-#Norga+N+Prop+Sem/Plc+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Plc+Cmp/SgNom+Err/Orth+Cmp-#Norga+N+Prop+Sem/Sur+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Plc+Cmp/SgNom+Cmp-#Norga+N+Prop+Sem/Plc+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Plc+Cmp/SgNom+Cmp-#Norga+N+Prop+Sem/Sur+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Plc+Cmp/SgNom+Cmp-#Norga+N+Prop+Sem/Plc+Sg+Loc        0,000000
Davvi-Norggas        davvi+N+Sem/Plc+Cmp/SgNom+Cmp-#Norga+N+Prop+Sem/Sur+Sg+Loc        0,000000

Jf:

illu boddui -> illuboddui

"<illu boddui>"
        "illuboddu" N Sem/Time Sg Ill Err/SpaceCmp <W:0> @ADVL> MAP:16752 &msyn-compound #2->2 ADD:8933:compound
msyn-compound
        "illuboddu" N Sem/Time Sg Ill <W:0> @ADVL> MAP:16752 &SUGGEST #2->2 COPY:8935:compound
illuboddu+N+Sg+Ill      illuboddui
* **"boddu" N Sem/Time Sg Ill <W**: 0> "<boddui>"
* **"illu" N Sem/Perc-emo Sg Nom <W**: 0> "<illu>"
:

Og her er analysen frå tokeniser’n:

$ echo Davvi Norggas | hfst-tokenise --giella-cg tokeniser-gramcheck-gt-desc.pmhfst
"<Davvi>"
        "davvi" N Sem/Plc Sg Nom <W:0>
:
"<Norggas>"
        "Norga" N Prop Sem/Plc Sg Loc <W:0>
        "Norga" N Prop Sem/Sur Sg Loc <W:0>
        "norga" Err/Lex N Sem/Dummytag Sg Acc PxSg3 <W:0>
        "norga" Err/Lex N Sem/Dummytag Sg Gen PxSg3 <W:0>
        "norga" Err/Lex N Sem/Dummytag Sg Loc <W:0>
        "norga" Err/Lex NN Sem/Dummytag Der/Dimin N Sg Acc Err/Orth Err/Spellrelax <W:0>
        "norga" Err/Lex NN Sem/Dummytag Der/Dimin N Sg Gen Err/Orth Err/Spellrelax <W:0>
        "norga" Err/Lex NN Sem/Dummytag Der/Dimin N Sg Nom Err/Spellrelax <W:0>
:\n

Konklusjon: vi vil handtera leksikaliserte, samansette ord som krev bindestrek på same måten som dei som ikkje krev bindestrek, dvs at vi lar bindestrek gå til mellomrom (med ein Error-tagg).

Vi får fortsatt:

"<dasa lassin>"
        "dasa lassin" Adv <W:0>
        "dasa lassin" Err/Orth Adv Err/SpaceCmp <W:0>
        "lassi" N Sem/Amount Ess <W:0> "<lassin>"
                "dát" Pron Dem Sg Ill Err/Spellrelax <W:0> "<dasa>"
        "lassi" N Sem/Amount Ess <W:0> "<lassin>"
                "dat" Pron Dem Sg Ill <W:0> "<dasa>"
        "lassi" N Sem/Amount Ess <W:0> "<lassin>"
                "dassat" V TV VGen <W:0> "<dasa>"
        "lassi" N Sem/Amount Ess <W:0> "<lassin>"
                "dassat" V TV Ind Prs ConNeg <W:0> "<dasa>"
        "lassi" N Sem/Amount Ess <W:0> "<lassin>"
                "dassat" V TV Imprt Sg2 <W:0> "<dasa>"
        "lassi" N Sem/Amount Ess <W:0> "<lassin>"
                "dassat" V TV Imprt ConNeg <W:0> "<dasa>"


dasalassin dasa lassin Err/Orth Adv
dasalassin dasa lassin Err/UnspaceCmp Adv

dasa lassin
dasa lassin    dasa lassin+Adv

dasa lassin+Err/Orth:dasa# lassin
1. → " "+Err/SpaceCmp ! Burde kanskje ikkje fyra ved Unspacecmp i same sti (elles må CG fjerna)

dasa% lassin:dasa% lassin adv ; ----> dasa lassin
dasa% lassin+Err/UnspaceCmp:dasa#lassin adv; ! --> dasalassin

Kvifor får vi ein Err/Orth-tagg i analysen over? Sjur sjekkar.

webdemo

Kevin har ein ny variant på gang :-) Burde vera på lufta denne veka :-)

Linda finn fram fleire eksempeltekstar.

kopling mellom innstillingar og feildetekteringsreglar

Vi bruker CG-seksjonar: ein seksjon for kvar regeltype/feiltype. Seksjonane kan ein slå av og på ved oppstart, og dermed kontrollera kva slags reglar som skal brukast, dvs kva slags feil som blir funne. Seksjonane skal deretter koplast til innstillingar, slik at brukarane sjølve kan bestemma kva slags reglar som skal brukast av grammatikkontrollen, og dermed kva slags feil som han skal sjå etter. Når brukarane endrar innstillingar, betyr det i praksis ein omstart av grammatikkontrollen med dei nye innstillingane.

arkivformat, kommandorør

Må kunne spesifisera kvart brukarval og kva verknad dei har på pipelinen:

brukarval $1 $2 $3
realword 2,3,7 cat cat
teiknsetjing 1,3 cat B
dialektx 1,5 stat-munge ngram.bin B
combiner($1)=concat
combiner($2)=union
combiner($3)=union

Til dømes:

pipeline_template=hfst-tokenise foo.hfst | vislcg3 -g foo.cg3 --sections=$1 | $2 | $3 | cg-foo | hfst-optimised-lookup bar

Me unngår pipeline_template=hfst-tokenise foo.hfst | vislcg3 -g foo.cg3 --sections=1,3,1,5 | $2 | BB | cg-foo | hfst-optimised-lookup bar sidan $3 er union, så når både teiknsetjing og dialektx er valt, så vil me ha berre B.

Fleire alternative pipelines: Anten:

pipeline_template=[ hfst-tokenise foo.hfst | vislcg3 -g foo.cg3 --sections=$1 | $2 | $3 | cg-foo | hfst-optimised-lookup bar ]( punct.m4 )

Eller:

pipeline_1=hfst-tokenise foo.hfst | vislcg3 -g foo.cg3 --sections=$1 | $2 | $3 | cg-foo | hfst-optimised-lookup bar
pipeline_2=punct.m4

Kevin og Sjur jobbar vidare med detaljane.

formathandtering

     We could have rules in pmscript like
     : Define superblank %[ ?* %] EndTag(superblank);
     : Define cohort [ morphoword | unknownwordEmpty ]( incondword ) EndTag(cohort);
     (which actually has to be more complicated since we have to
     handle escaped brackets), but then hfst-tokenise still needs some
     exception that says that a <superblank> is formatted one way, and
     a <cohort> is output like the unmatched input.

Kevin undersøkjer meir om det er mogleg å gjera dette med rein pmatch-kode. Kevin og Sjur diskuterer dette med Krister og Sam.

tegnsettingsregler?

Kevin føreslår å bruka eit enkelt pmscript til å finna teiknsetjingsfeil, og cg + forslagsgenerering for resten, og alt som ei parallell kommandorekke til den avanserte feilfinningsrekka. Eit slikt oppsett kan ein nytta for teiknsetjingsfeil som ikkje krev syntaktisk analyse.