giellalt / bugzilla-dummy

0 stars 0 forks source link

possible to represent MWE-ambiguity within pmatch? (Bugzilla Bug 2162) #925

Closed albbas closed 7 years ago

albbas commented 8 years ago

This issue was created automatically with bugzilla2github

Bugzilla Bug 2162

Date: 2016-03-02T13:52:29+01:00 From: Kevin Brubeck Unhammer <<unhammer+apertium>> To: Sjur Nørstebø Moshagen <> CC: lene.antonsen, linda.wiechetek, sjur.n.moshagen, thomas.omma, trond.trosterud

Blocker for: #2160 Last updated: 2017-09-08T14:40:47+02:00

albbas commented 8 years ago

Comment 11214

Date: 2016-03-02 13:52:29 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

For Bug #2160, we want certain kinds of MWE ambiguity to be at least partly (the linguistic part) represented on the FST level. We will likely also need new language-general mechanisms regarding how to do formatting and tokenising.

What we want:


I've looked at using pmatch for this by simply repeating the lexicon, e.g.

Define morphology @bin"analyser-disamb-gt-desc.hfst" ; Define blank Whitespace | Punct ; Define morphoword morphology LC([blank | #]) RC([blank | # ]); Define morphowords morphology % :%# morphology LC([blank | #]) RC([blank | # ]); Define token [ morphoword | morphowords ] EndTag(token); regex token ;

Consider "dalle go" – this might be unambiguous, but treat it as ambiguous for this example. The above pmscript will give

$ echo dalle go | hfst-tokenise --cg -kawu: ana.bin "" "go" Pcle Qst "dalle" Adv Sem/Time "go" CS "dalle" Adv Sem/Time "dalle go" CS :\n

but of course that fails when there's a word before:

echo 'go dan dihte' | hfst-tokenise --cg -kawu: ana.bin "" "dalle go" CS "go" CS

since now it looks at the MWE ambiguity between "go" and "dalle go" – and pmatch always wants the longest possible match.


This issue seems solvable by intersecting the forms of the morphology with the repeated morphology, although I couldn't get this to work within the pmscript (one would think [morpho2words & [morphology].u] would work, but no such luck). It seems to work with plain HFST commands though:

Makefile:

space.hfst: echo '% :%#' | hfst-regexp2fst -o $@

repeated.hfst: analyser-disamb-gt-desc.hfst space.hfst hfst-concatenate -1 $< -2 space.hfst -o analyser-space.hfst hfst-concatenate -F -1 analyser-space.hfst -2 $< -o analyser-space-analyser.hfst hfst-invert analyser-space-analyser.hfst -o generator-space-generator.hfst hfst-project -p upper $< -o forms.hfst hfst-compose-intersect -1 generator-space-generator.hfst -2 forms.hfst -o generator-repeated.hfst hfst-invert generator-repeated.hfst -o $@ echo dan dihte | hfst-lookup $@ echo go dan dihte | hfst-lookup $@

pmscript:

Define morphology @bin"analyser-disamb-gt-desc.hfst" ; Define repeated @bin"repeated.hfst" ; Define blank Whitespace | Punct ; Define morphoword morphology LC([blank | #]) RC([blank | # ]); Define morphowords repeated LC([blank | #]) RC([blank | # ]); Define token [ morphoword | morphowords ] EndTag(token); regex token ;

This looks closer to what we want:

$ echo dalle go | hfst-tokenize --cg -kawu: rep.pmhfst "" "go" Pcle Qst "dalle" Adv Sem/Time "go" CS "dalle" Adv Sem/Time "dalle go" CS :\n

$ echo go dalle go hfst-tokenize --cg -kawu: rep.pmhfst "" "go" Pcle Qst "go" CS

"" "go" Pcle Qst "dalle" Adv Sem/Time "go" CS "dalle" Adv Sem/Time "dalle go" CS :\n

The repeated.hfst took quite a lot of time+ram+disk space, but perhaps that can be optimised – the final file seems to be just 28M.


Are the problems with this method not shown above?

If we add an error-tagged entry in the noun compounding lexicon that inserts a space before the compound border, will it work fine for catching compound-space errors (while still showing the ambiguity with non-errors that are simply two nouns)?

albbas commented 8 years ago

Comment 11215

Date: 2016-03-02 14:10:46 +0100 From: Sjur Nørstebø Moshagen <>

(In reply to Kevin Brubeck Unhammer from comment #0)

For Bug #2160, we want certain kinds of MWE ambiguity to be at least partly (the linguistic part) represented on the FST level.

Yes.

What we want:

  • Treat "good morning" as ambiguous between a single interjection "<good morning>", and an adj "" followed by noun "" as in "this is a good morning".

  • Similarly treat "3." as ambiguous between single ordinal, and numeral followed by punctuation; "<3.>" vs "<3>" "<.>".

  • Not have to treat "we are" as ambiguous between single and multiple cohorts – it's always exactly two; and similarly not look at "we 3." ambiguous between "<we 3.>" and "" "<3.>", but ambiguous between "" "<3.>" and "" "<3>" "<.>".

Agree.

This issue seems solvable by intersecting the forms of the morphology with the repeated morphology, although I couldn't get this to work within the pmscript (one would think [morpho2words & [morphology].u] would work, but no such luck). It seems to work with plain HFST commands though:

Makefile:

space.hfst: echo '% :%#' | hfst-regexp2fst -o $@

repeated.hfst: analyser-disamb-gt-desc.hfst space.hfst hfst-concatenate -1 $< -2 space.hfst -o analyser-space.hfst hfst-concatenate -F -1 analyser-space.hfst -2 $< -o analyser-space-analyser.hfst hfst-invert analyser-space-analyser.hfst -o generator-space-generator.hfst hfst-project -p upper $< -o forms.hfst hfst-compose-intersect -1 generator-space-generator.hfst -2 forms.hfst -o generator-repeated.hfst hfst-invert generator-repeated.hfst -o $@ echo dan dihte | hfst-lookup $@ echo go dan dihte | hfst-lookup $@

[...]

Are the problems with this method not shown above?

If we add an error-tagged entry in the noun compounding lexicon that inserts a space before the compound border, will it work fine for catching compound-space errors (while still showing the ambiguity with non-errors that are simply two nouns)?

I have an uncommitted change on my computer with exactly this, the core of which is:

+Err/SpaceCmp+Cmp#:% Noun ;

That should in theory catch all instances of split compounds, while leaving other sequences of word + space + word as separate items/segments.

I haven't committed this because the consequences can be quite dramatic for some applications, and it needs further testing. On the other hand, if I don't commit it, noone will test it.

Unless there are major objections, I will commit this change later today so that Kevin, Lene and others can test it.

albbas commented 8 years ago

Comment 11217

Date: 2016-03-02 15:21:22 +0100 From: Lene Antonsen <>

Unless there are major objections, I will commit this change later today so that Kevin, Lene and others can test it.

Jeg forstår dette ikke helt, så jeg kan ikke komme med major objections.

Kunne du komme med et eksempel, Sjur (ikke go dalle go)

albbas commented 8 years ago

Comment 11219

Date: 2016-03-02 15:42:34 +0100 From: Sjur Nørstebø Moshagen <>

(In reply to Lene Antonsen from comment #2)

Jeg forstår dette ikke helt, så jeg kan ikke komme med major objections.

Kunne du komme med et eksempel, Sjur (ikke go dalle go)

Eg skal prøva:

Hovudtemaet for denne og andre relaterte lusmeldingar (klitika) gjeld utfordringar med segmentering / tokenisering der segmentgrensene ikkje svarar til ortografiske ord (dvs bokstavar skilde med anten blankteikn eller eintydige ordskiljeteikn som t.d. komma). Av desse er det tre typar:

1) Samskriving der ein kunne eller burde hatt særskriving ("3." er eitt slikt døme, klitika eit anna)

2) Særskriving der ein burde hatt samskriving (feil delte samansette ord)

3) Fleirordsuttrykk som ein vil analysera som éi eining, men som potensielt kan analyserast som to separate ord ("good morning" som MWE eller som ein analyserbar NP)

Kodeendringa mi gjeld 2).

Tanken er at vi (med ein +Err-tagg) analyserer to substantiv etter kvarandre som om dei var eitt samansett substantiv som eit alternativ til å gje dei kvar sin analyse:

$ echo "gielisvuohta viessu" | hfst-lookup -q analyser-mt-gt-desc.hfstol | cg-conv -f "" "viessu" N Sem/Build Sg Nom "gielis" AA Sem/Hum Attr Der/vuohta N Cmp/SgNom Err/Orth Err/SpaceCmp Cmp "viessu" N Sem/Build Sg Nom "gielis" AA Sem/Hum Der/vuohta N Cmp/SgNom Err/Orth Err/SpaceCmp Cmp

Problemet er at dette heilt sikkert vil overgenerera, så det er viktig at vi tek vare på den alternative analysen:

$ echo "gielisvuohta viessu" | tr ' ' '\n' | hfst-lookup -q analyser-mt-gt-desc.hfstol | cg-conv -f "" "gielisvuohta" N Sem/Feat Sg Nom "gielis" AA Sem/Hum Attr Der/vuohta N Sg Nom "gielis" AA Sem/Hum Der/vuohta N Sg Nom "vuohta" Err/Lex N Sg Nom "gielis" A Sem/Hum Cmp/Attr Cmp "vuohta" Err/Lex N Sg Nom "gielis" A Sem/Hum Cmp/SgNom Cmp "" "viessu" N Sem/Build Sg Nom "viessat" V IV Imprt Du1 "viessut" V IV Imprt Du1 "viessut" V IV Imprt Du2 "viessut" V IV Ind Prs Sg3 "viessut" V IV PrsPrc "viessut" VV IV Der/NomAg N Sg Acc "viessut" VV IV Der/NomAg N Sg Gen "viessut" VV IV Der/NomAg N Sg Nom

Korleis dette skal skje og bli representert er ein del av diskusjonen, eg er usikker. Men Kevin har kanskje eit forslag?

Uansett, eg håper at det no er litt klårare kva eg hadde i tankane.

albbas commented 8 years ago

Comment 11220

Date: 2016-03-02 15:53:05 +0100 From: Lene Antonsen <>

Det er viktig hvordan analysen vil se ut, at vi ikke får det første substantivet bare som underlesning. Hvilke restriksjoner hadde du tenkt? Skal dette skje når det er to alternativer i lexc for de den spesifikke strengen: to enkle ord eller MWE, eller hadde du tenkt dette som en generell greie?

albbas commented 8 years ago

Comment 11221

Date: 2016-03-02 16:01:57 +0100 From: Sjur Nørstebø Moshagen <>

(In reply to Lene Antonsen from comment #4)

Det er viktig hvordan analysen vil se ut, at vi ikke får det første substantivet bare som underlesning.

Eg veit, og eg vil gjerne ha tilbakemelding frå Kevin korleis vi kan få til dette. Sjølv er eg veldig usikker, men vi treng ein måte å representera tvetydig segmentering i CG-format på, slik at ein kan bruka CG-reglar til å avgjera om det skal vera to eller eitt segment / token.

Hvilke restriksjoner hadde du tenkt? Skal dette skje når det er to alternativer i lexc for de den spesifikke strengen: to enkle ord eller MWE, eller hadde du tenkt dette som en generell greie?

I dette tilfellet hadde eg tenkt det som ei generell greie som datagrunnlag for å identifisera særskriving. Men det er mogleg det blir for kraftig - men det veit vi ikkje før vi har testa.

I tilfelle der vi har eit MWE i leksikon og vil gje ein alternativ analyse som to uavhengige ord, pratar vi om type 3) i lista mi.

albbas commented 8 years ago

Comment 11222

Date: 2016-03-02 20:40:58 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Sjur Nørstebø Moshagen from comment #1)

I have an uncommitted change on my computer with exactly this, the core of which is:

+Err/SpaceCmp+Cmp#:% Noun ;

That should in theory catch all instances of split compounds, while leaving other sequences of word + space + word as separate items/segments.

I haven't committed this because the consequences can be quite dramatic for some applications, and it needs further testing. On the other hand, if I don't commit it, noone will test it.

Unless there are major objections, I will commit this change later today so that Kevin, Lene and others can test it.

Det er kanskje litt farleg å ta den med i standardanalysatorane allereie? (Utan andre endringar vil det jo fjerna to-kohort-lesinga.)

albbas commented 8 years ago

Comment 11232

Date: 2016-03-07 10:32:26 +0100 From: Linda Wiechetek <>

What we want:

  • Similarly treat "3." as ambiguous between single ordinal, and numeral followed by punctuation; "<3.>" vs "<3>" "<.>".

Agree.

I CG bruker vi punctuation <.> som delimiter for vinduet vi scanne innafor en regel. Hvis vi alltid har ambiguitet der kommer det til å være store forandringer der.

albbas commented 8 years ago

Comment 11234

Date: 2016-03-07 11:28:29 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Linda Wiechetek from comment #7)

What we want:

  • Similarly treat "3." as ambiguous between single ordinal, and numeral followed by punctuation; "<3.>" vs "<3>" "<.>".

Agree.

I CG bruker vi punctuation <.> som delimiter for vinduet vi scanne innafor en regel. Hvis vi alltid har ambiguitet der kommer det til å være store forandringer der.

Det er derfor eg seier det må vera mwe-disambiguering først :)

Altså:

hfst-tokenise | mwe-disambiguering | formatfiksing | disambiguering

Eit døme på alle steg i pipelinen:

INPUT: Ta 3. Også

Etter hfst-tokenise: "" "ta" Verb Inf "" "ta" Verb Imp "" "<3.>" "3" Num "<3>" "." PUNCT "<.>" "3." Adj Ord "<3.>" "<Også>" "også" Adv "<Også>"

Etter mwe-disambiguering: "" "ta" Verb Inf "" "ta" Verb Imp "" "<3.>" "3" Num "<3>" "." PUNCT "<.>" "<Også>" "også" Adv "<Også>"

Etter formatfiksing: "" "ta" Verb Inf "ta" Verb Imp "<3.>" "3" Num "<.>" "." PUNCT "<Også>" "også" Adv

Etter (vanleg) disambiguering: "" "ta" Verb Imp "<3.>" "3" Num "<.>" "." PUNCT "<Også>" "også" Adv

Så formålet er at den vanlege disambigueringa i størst mogleg grad skal få same input som før når det gjeld desse fleirordsuttrykka, men stega før disambiguering vil altså ha ein ulik representasjon.

albbas commented 8 years ago

Comment 11239

Date: 2016-03-10 15:39:38 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

Eg har sjekka inn ei endring i sme/tools/preprocess som gjer dette, men for beste effekt bør det testast med hfst frå

git clone -b tokenise-as-gtdivvun-lookup git@github.com:unhammer/hfst.git

Sidan «vaikko mii» ikkje står i leksikon enno får me lata som «dalle go» betyr det same, for skuld eksempelet. Då får eg t.d.

"" "go" Pcle Qst "" "dalle" Adv Sem/Time "" "go" CS "" "dalle" Adv Sem/Time "" "dalle go" CS

Eg la inn i sme/tools/preprocess/Makefile.am at alle sekvensar av «ord mellomrom ord» som finst i leksikon som eitt ord er moglege multiord, som gjer at t.d. blir tvetydig med .

Det går dessverre ikkje like enkelt å ta med alle sekvensar av to ord utan mellomrom som er tvetydige med eitt ord – ein analysator for alle desse blir på 425M (vs 171M for den med mellomrom) og eg har for lite minne til å laga den endelege pmatch-analysatoren.

På den andre sida så er det kanskje like greitt – me vil vel ikkje seia at alle todelingar av eit token er moglege? (Det blir iallfall irriterande om òg gir analysen .) Det at er tvetydig med går det an å spesifisera eksplisitt i leksikonoppslaget der "ba" blir lagt på.

Det går sjølvsagt òg an å stramma inn på dei med mellomrom – der er vel spørsmålet om folk synst det er greiast å la alle sekvensar av typen vera moglege og så ta dei med CG (mot litt RAM-bruk ved FST-kompilering), eller om folk har lyst til å seia, på slutten av oppslaget for «dalle», at her går det an å gå til «go» som eit nytt ord (gitt at det faktisk er tvetydig med «dalle go» som eitt ord).

Litt meir output for å visa status nett no:

$ echo 'ukjendord привет dalle, dalle go, go dalle go gáfegáhkkus' hfst-tokenize -wacku: tokeniser-disamb-gt-desc.pmhfst "" "ukjendord" ? : привет "" "dalle" Adv Sem/Time "<,>" "," CLB

"" "go" Pcle Qst "" "dalle" Adv Sem/Time "" "go" CS "" "dalle" Adv Sem/Time "" "dalle go" CS "<,>" "," CLB : "" "go" Pcle Qst "go" CS : "" "go" Pcle Qst "" "dalle" Adv Sem/Time "" "go" CS "" "dalle" Adv Sem/Time "" "dalle go" CS : "<gáfegáhkkus>" "gáhkut" V IV Der/NomAg N Sg Loc "gáffe" N Sem/Plant Cmp/SgGen Cmp "gáhkut" V IV Der/NomAg N Sg Loc "gáfe" N Sem/Plant Err/Orth Cmp/SgNom Cmp "gáhkut" V IV Der/NomAg N Sg Loc "gáfe" N Sem/Plant Cmp/SgNom Cmp "gáhkut" V IV Der/NomAg N Sg Loc "gáfe" N Sem/Plant Cmp/SgGen Cmp :\n

(Linjer med «:» er ting som er «utanfor alfabetet» – CG ignorerer det linjer som ikkje startar med «"» eller tab/mellomrom, men det er nyttig å kunna ha alt av input med i maskinomsetjing og grammatikkontroll.)

albbas commented 8 years ago

Comment 11247

Date: 2016-03-11 17:52:20 +0100 From: Sjur Nørstebø Moshagen <>

I svn rev 130872 har eg sjekka inn ei endring som vi vart samde om på møtet på måndag:

analyser-disamb-gt-desc.hfst (og berre hfst-varianten av han, ikkje xerox) kan no analysera særskrivne samansette ord som eitt ord, med ein +Err-tagg.

No er det opp til Kevin å testa og sjå om det fungerer nokolunde. Er svaret ja, så vil vi ha breiare testing (Linda, Lene, Thomas).

Eg har høge forventningar til denne analysatoren og høve til å fanga opp særskrivingar - eg håper det ikkje blir alt for mykje overgenerering og problem med å skilja ut falske alarmar :-)

albbas commented 8 years ago

Comment 11248

Date: 2016-03-11 19:36:21 +0100 From: Sjur Nørstebø Moshagen <>

(In reply to Sjur Nørstebø Moshagen from comment #10)

I svn rev 130872 har eg sjekka inn ei endring som vi vart samde om på møtet på måndag:

Gløymde å leggja ved eit døme som viser korleis det funkar med disamb-analysatoren:

$ echo skuvla busse | hfst-lookup -q src/analyser-disamb-gt-desc.hfstol skuvla busse skuvla+N+Sem/Edu_Org+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Acc 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Gen+Allegro 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Gen 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Nom 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Err/Orth+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Acc 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Err/Orth+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Gen+Allegro 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Err/Orth+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Gen 10,000000 skuvla busse skuvla+N+Sem/Edu_Org+Err/Orth+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain-clth_Veh+Sg+Nom 10,000000

Dersom dette blir brukt i lag med pmatch-srkptet til Kevin, blir resultatet meir cg-likt, men dømet over burde gje ein omtrentleg idé om korleis det blir.

albbas commented 8 years ago

Comment 11252

Date: 2016-03-15 14:46:07 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Sjur Nørstebø Moshagen from comment #11)

(In reply to Sjur Nørstebø Moshagen from comment #10)

I svn rev 130872 har eg sjekka inn ei endring som vi vart samde om på møtet på måndag:

Gløymde å leggja ved eit døme som viser korleis det funkar med disamb-analysatoren:

$ echo skuvla busse | hfst-lookup -q src/analyser-disamb-gt-desc.hfstol skuvla busse skuvla+N+Sem/Edu_Org+Cmp/SgNom+Err/SpaceCmp+Cmp#busse+N+G3+Sem/Ctain- clth_Veh+Sg+Acc 10,000000 skuvla busse […]

Eg får ikkje til same resultat når eg kompilerer sjølv, men det er sikkert noko feil i mitt oppsett. Men når eg prøvde å legga inn .hfst-fila du hadde i http://filebin.net/mvvnmqgal0 i mappa mi, så fekk eg:

$ echo skuvla busse | hfst-tokenise -wacku: tokeniser-disamb-gt-desc.pmhfst "" "busse" N G3 Sem/Ctain-clth_Veh Sg Nom "skuvla" N Sem/Edu_Org Err/Orth Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Acc "skuvla" N Sem/Edu_Org Err/Orth Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Gen Allegro "skuvla" N Sem/Edu_Org Err/Orth Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Gen "skuvla" N Sem/Edu_Org Err/Orth Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Nom "skuvla" N Sem/Edu_Org Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Acc "skuvla" N Sem/Edu_Org Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Gen Allegro "skuvla" N Sem/Edu_Org Cmp/SgNom Err/SpaceCmp Cmp "busse" N G3 Sem/Ctain-clth_Veh Sg Gen "skuvla" N Sem/Edu_Org Cmp/SgNom Err/SpaceCmp Cmp :\n

Så det underanalyserer – me vil jo ha to-ordsanalysen inn her òg.

Grunnen til at "" "" ikkje kjem med er at eg har prøvd (og feila) å filtrera to-ordsanalysane til dei som er tvetydige med eittordsanalysar (dette for å unngå at alle vilkårlege sekvensar, som «ja skuvla», blei analysert i hop). Altså, me treng ein analysator som gir analyse til «ja», «skuvla», «busse», «skuvla busse», men ikkje «ja skuvla». Det eg gjorde var å først laga ein som tok alle to-ordssekvensar, og så ta intersect med formar frå analysatoren for å få dei tvetydige.

Dette fungerte fint for «dalle go»; viss A={"dalle go","go","dalle","ja"} så er A ∩ A" "A ={"dalle go"}

Då skulle ein tru at det fungerte med A={"skuvla busse","skuvla","busse","ja"} → A ∩ A" "A ={"skuvla busse"} men greia med «skuvla busse» er at formen som ligg i FST-en ikkje er «skuvla busse», men «@P.Px.add@Skuvla@U.NeedsVowRed.ON@@P.CmpFrst.FALSE@@P.CmpPref.FALSE@@D.CmpLast.TRUE@@D.CmpNone.TRUE@@U.CmpNone.FALSE@@P.CmpOnly.TRUE@@U.NeedsVowRed.ON@@C.NeedsVowRed@ @P.Px.add@busse@D.CmpOnly.FALSE@@D.CmpPref.TRUE@@D.NeedNoun.ON@».

og når me prøver A={ "@P.Px.add@skuvla@U.NeedsVowRed.ON@@P.CmpFrst.FALSE@@P.CmpPref.FALSE@@D.CmpLast.TRUE@@D.CmpNone.TRUE@@U.CmpNone.FALSE@@P.CmpOnly.TRUE@@U.NeedsVowRed.ON@@C.NeedsVowRed@ @P.Px.add@busse@D.CmpOnly.FALSE@@D.CmpPref.TRUE@@D.NeedNoun.ON@", "@P.Px.add@skuvla@D.CmpOnly.FALSE@@D.CmpPref.TRUE@@D.NeedNoun.ON@", "@P.Px.add@busse@D.CmpOnly.FALSE@@D.CmpPref.TRUE@@D.NeedNoun.ON@", "ja" } så får me A ∩ A" "A ={} sidan «skuvla» og «busse» har ulike flagg frå «skuvla busse».

Eg prøvde å eliminera flagg på eit mindre leksikon med flaggdiakritika, og då fekk eg dei rette analysane, men når eg prøver å eliminera flagg på den fulle FST-en (om det er via foma eller hfst-substitute+grep) går alltid tom for RAM før eg får kompilert ferdig.

Kanskje er det mogleg å eliminera berre visse flagg (men det krev jo at folk held ting ved like), eller kanskje eg berre må ha meir enn 8GB RAM, eller kanskje me må prøva noko heilt anna.

albbas commented 8 years ago

Comment 11253

Date: 2016-03-15 15:59:31 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Kevin Brubeck Unhammer from comment #12)

Eg prøvde å eliminera flagg på eit mindre leksikon med flaggdiakritika, og då fekk eg dei rette analysane, men når eg prøver å eliminera flagg på den fulle FST-en (om det er via foma eller hfst-substitute+grep) går alltid tom for RAM før eg får kompilert ferdig.

Kanskje er det mogleg å eliminera berre visse flagg (men det krev jo at folk held ting ved like), eller kanskje eg berre må ha meir enn 8GB RAM, eller kanskje me må prøva noko heilt anna.

… og sjølv med 32GB RAM ser det ut til å feila.


Kanskje må me gi opp å automatisk finna alle mellomrom-tvetydige ord, og i staden eksplisitt markera i lexc for dei fleirordsuttrykka me vil at skal vera fleirtydige (iallfall for stiar med flaggdiakritika).

Altså, gitt at «dan dihte+Adv» var tvetydig med pron+verb eller noko, så fordi «dan dihte+Adv» står med flagg måtte me i tillegg hatt ein sti frå «dan+Pron» via mellomrom til verbleksikonet. Meir styrete, men sjølvsagt òg færre unødvendig tvetydige oppslag.


Det tredje alternativet eg ser er å ikkje ha nokon endringar i leksikon eller repeterte analysatorar, men laga ei ganske ulik utgåve av hfst-tokenise som er slik at viss det analyserer noko og ser at det har mellomrom i seg, så prøver det å analysera det på nytt som fleire ord òg.

albbas commented 8 years ago

Comment 11302

Date: 2016-04-18 13:13:43 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

Sjur hadde ein genial idé som burde løysa dette: Me lar eit visst symbol i FST-en signalisera at her må det ein «backtrack» til for å få med alle analysar. Så ved særskrivingsanalyse, når me har lese «ananas» og rett før me skal inn i « biter»-leksikonet, så legg me inn @Backtrack@ (eller noko), og då vil me ikkje berre få særskrivingsanalysen «ananas biter», men òg alle moglege analysar av «ananas» følgt av «biter» som to ord.

hfst-tokenise må då sjå i alle analysar etter @Backtrack@, som signaliserer at her må du ikkje berre ta lengste analyse, men òg analysera oppdelt, på akkurat det punktet som @Backtrack@ finst.

Då må altså den overgangen i lexc kor me går over i særskrivingsfeil ha ein sånn Backtrack-tagg.


Denne løysinga kunne me òg brukt for «leaba», ved å ha @Backtrack@ mellom «lea» og «ba» i leaba Du3 (altså éin-kohortslesinga), men det blir litt uelegant. Det ideelle er nok å ha begge moglegheitene, som då blir spegelvendte av kvarandre:

LEXICON V leat+V+Du3:leaba C; leat+V+Sg3:lea C;

LEXICON C

;

@MWESplit@+Pcle+ba:ba;

LEXICON N ananas+N+Err/SpaceCmp+Backtrack:ananas% LEXICON N; bit+N+Pl:biter;

Så for input «leaba» gir FST-en sjølv to analysar, éin med MWESplit og éin utan. Den analysen som hadde MWESplit blir delt opp der taggen var.

For input «ananas biter» gir FST-en sjølv éin analyse, men med Backtrack-taggen. Sidan hfst-tokenise såg ein Backtrack-tagg, vil programmet analysera strengen på nytt, delt opp der Backtrack-taggen var.

(Ved fleire Backtrack-taggar prøver me alle kombinasjonar.)

albbas commented 8 years ago

Comment 11310

Date: 2016-04-21 19:41:34 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

Linda nemnte noko viktig: Me må kanskje reanalysera utan mellomrom òg; det er nemleg svært verdifull informasjon for særskrivingsdisambiguering at «skuvlabusses» har ein leksikalisert analyse, medan t.d. «bárdnibusses» ikkje har det (som gjer at «bárdni busses» meir sannsynleg er korrekt enn «skuvla busses»).

albbas commented 8 years ago

Comment 11311

Date: 2016-04-21 19:49:42 +0200 From: Sjur Nørstebø Moshagen <>

(In reply to Kevin Brubeck Unhammer from comment #15)

Linda nemnte noko viktig: Me må kanskje reanalysera utan mellomrom òg; det er nemleg svært verdifull informasjon for særskrivingsdisambiguering at «skuvlabusses» har ein leksikalisert analyse, medan t.d. «bárdnibusses» ikkje har det (som gjer at «bárdni busses» meir sannsynleg er korrekt enn «skuvla busses»).

Men vil ikkje slike feil bli oppdaga som valensfeil? T.d. som manglande objekt etter verb t.d. Spørsmålet er kor mykje tvetydigheit vi får dersom vi byrjar å reanalysera på denne måten. Og: vil det ikkje vera betre at vi gjer ei slik reanalysering i CG?

albbas commented 8 years ago

Comment 11312

Date: 2016-04-21 21:30:40 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Sjur Nørstebø Moshagen from comment #16)

(In reply to Kevin Brubeck Unhammer from comment #15)

Linda nemnte noko viktig: Me må kanskje reanalysera utan mellomrom òg; det er nemleg svært verdifull informasjon for særskrivingsdisambiguering at «skuvlabusses» har ein leksikalisert analyse, medan t.d. «bárdnibusses» ikkje har det (som gjer at «bárdni busses» meir sannsynleg er korrekt enn «skuvla busses»).

Men vil ikkje slike feil bli oppdaga som valensfeil? T.d. som manglande objekt etter verb t.d. Spørsmålet er kor mykje tvetydigheit vi får dersom vi byrjar å reanalysera på denne måten. Og: vil det ikkje vera betre at vi gjer ei slik reanalysering i CG?

Hm, ja me vil jo ikkje ha ein ekstra analyse, men informasjonen om at ein ekstra analyse ville vore mogleg om det ikkje var eit mellomrom der. Altså, «skuvla busse» er tvetydig mellom +N+Err/SpaceCmp og to ord +N +N, men sjølvsagt ikkje med den feilfrie eittordsanalysen.

Likevel ville det vore svært verdifullt for grammatikkontrollen å vita at «skuvlabusse» er leksikalisert. I CG-en hadde det kanskje vore greiast om det var ein tagg som sa at SpacecmpHasLex. Er det mogleg vha. FST-operasjonar å legga ein sånn tagg på berre dei dynamiske samansetjingane som òg finst som leksikaliserte? (Dette minner skummelt om den minneslukande snittoperasjonen frå tidlegare …)

albbas commented 8 years ago

Comment 11315

Date: 2016-04-26 12:02:12 +0200 From: Linda Wiechetek <>

Kevin har rett, det som er av verdi er nettopp det å vite om det er leksikalisert. Problemet er jo at CGen ikkje kan referere til 2 ord, sette dem sammen og sjekke om de er leksikaliserte. Og en syntaktisk analyse aleine gir dårlige resultat (vi har prøvd og lagt til en hel rekke med unntakk) fordi det fins en hel del syntaktiske kontekster med to substantiver ved siden av hverandre der første er nominativ som er korrekte.

Forresten kan man vurdere å utelukke sånne som har substantiv på "i" i første ledd da det blir til "e" i det sammensatte ordet, dvs. "bárdnebusse" og ikkje "bárdnibusse", men kanskje en feilanalyse er nødvendig først, altså vi må se om det i realitet fins mange feil med -i substantiv i nominativ.

(In reply to Kevin Brubeck Unhammer from comment #17)

(In reply to Sjur Nørstebø Moshagen from comment #16)

(In reply to Kevin Brubeck Unhammer from comment #15)

Linda nemnte noko viktig: Me må kanskje reanalysera utan mellomrom òg; det er nemleg svært verdifull informasjon for særskrivingsdisambiguering at «skuvlabusses» har ein leksikalisert analyse, medan t.d. «bárdnibusses» ikkje har det (som gjer at «bárdni busses» meir sannsynleg er korrekt enn «skuvla busses»).

Men vil ikkje slike feil bli oppdaga som valensfeil? T.d. som manglande objekt etter verb t.d. Spørsmålet er kor mykje tvetydigheit vi får dersom vi byrjar å reanalysera på denne måten. Og: vil det ikkje vera betre at vi gjer ei slik reanalysering i CG?

Hm, ja me vil jo ikkje ha ein ekstra analyse, men informasjonen om at ein ekstra analyse ville vore mogleg om det ikkje var eit mellomrom der. Altså, «skuvla busse» er tvetydig mellom +N+Err/SpaceCmp og to ord +N +N, men sjølvsagt ikkje med den feilfrie eittordsanalysen.

Likevel ville det vore svært verdifullt for grammatikkontrollen å vita at «skuvlabusse» er leksikalisert. I CG-en hadde det kanskje vore greiast om det var ein tagg som sa at SpacecmpHasLex. Er det mogleg vha. FST-operasjonar å legga ein sånn tagg på berre dei dynamiske samansetjingane som òg finst som leksikaliserte? (Dette minner skummelt om den minneslukande snittoperasjonen frå tidlegare …)

albbas commented 8 years ago

Comment 11316

Date: 2016-04-26 12:15:42 +0200 From: Linda Wiechetek <>

Duommá sa forresten at det er mange leksikaliserte sammensetninger i substantivfila siden han jobba med det for spellcheckeren. Det er jo en resurs som vi burde utnytte.

(In reply to Linda Wiechetek from comment #18)

Kevin har rett, det som er av verdi er nettopp det å vite om det er leksikalisert. Problemet er jo at CGen ikkje kan referere til 2 ord, sette dem sammen og sjekke om de er leksikaliserte. Og en syntaktisk analyse aleine gir dårlige resultat (vi har prøvd og lagt til en hel rekke med unntakk) fordi det fins en hel del syntaktiske kontekster med to substantiver ved siden av hverandre der første er nominativ som er korrekte.

Forresten kan man vurdere å utelukke sånne som har substantiv på "i" i første ledd da det blir til "e" i det sammensatte ordet, dvs. "bárdnebusse" og ikkje "bárdnibusse", men kanskje en feilanalyse er nødvendig først, altså vi må se om det i realitet fins mange feil med -i substantiv i nominativ.

(In reply to Kevin Brubeck Unhammer from comment #17)

(In reply to Sjur Nørstebø Moshagen from comment #16)

(In reply to Kevin Brubeck Unhammer from comment #15)

Linda nemnte noko viktig: Me må kanskje reanalysera utan mellomrom òg; det er nemleg svært verdifull informasjon for særskrivingsdisambiguering at «skuvlabusses» har ein leksikalisert analyse, medan t.d. «bárdnibusses» ikkje har det (som gjer at «bárdni busses» meir sannsynleg er korrekt enn «skuvla busses»).

Men vil ikkje slike feil bli oppdaga som valensfeil? T.d. som manglande objekt etter verb t.d. Spørsmålet er kor mykje tvetydigheit vi får dersom vi byrjar å reanalysera på denne måten. Og: vil det ikkje vera betre at vi gjer ei slik reanalysering i CG?

Hm, ja me vil jo ikkje ha ein ekstra analyse, men informasjonen om at ein ekstra analyse ville vore mogleg om det ikkje var eit mellomrom der. Altså, «skuvla busse» er tvetydig mellom +N+Err/SpaceCmp og to ord +N +N, men sjølvsagt ikkje med den feilfrie eittordsanalysen.

Likevel ville det vore svært verdifullt for grammatikkontrollen å vita at «skuvlabusse» er leksikalisert. I CG-en hadde det kanskje vore greiast om det var ein tagg som sa at SpacecmpHasLex. Er det mogleg vha. FST-operasjonar å legga ein sånn tagg på berre dei dynamiske samansetjingane som òg finst som leksikaliserte? (Dette minner skummelt om den minneslukande snittoperasjonen frå tidlegare …)

albbas commented 8 years ago

Comment 11331

Date: 2016-05-18 14:31:07 +0200 From: Sjur Nørstebø Moshagen <>

(In reply to Kevin Brubeck Unhammer from comment #17)

(In reply to Sjur Nørstebø Moshagen from comment #16)

(In reply to Kevin Brubeck Unhammer from comment #15)

Linda nemnte noko viktig: Me må kanskje reanalysera utan mellomrom òg; det er nemleg svært verdifull informasjon for særskrivingsdisambiguering at «skuvlabusses» har ein leksikalisert analyse, medan t.d. «bárdnibusses» ikkje har det (som gjer at «bárdni busses» meir sannsynleg er korrekt enn «skuvla busses»).

Men vil ikkje slike feil bli oppdaga som valensfeil? T.d. som manglande objekt etter verb t.d. Spørsmålet er kor mykje tvetydigheit vi får dersom vi byrjar å reanalysera på denne måten. Og: vil det ikkje vera betre at vi gjer ei slik reanalysering i CG?

Hm, ja me vil jo ikkje ha ein ekstra analyse, men informasjonen om at ein ekstra analyse ville vore mogleg om det ikkje var eit mellomrom der. Altså, «skuvla busse» er tvetydig mellom +N+Err/SpaceCmp og to ord +N +N, men sjølvsagt ikkje med den feilfrie eittordsanalysen.

Likevel ville det vore svært verdifullt for grammatikkontrollen å vita at «skuvlabusse» er leksikalisert. I CG-en hadde det kanskje vore greiast om det var ein tagg som sa at SpacecmpHasLex. Er det mogleg vha. FST-operasjonar å legga ein sånn tagg på berre dei dynamiske samansetjingane som òg finst som leksikaliserte? (Dette minner skummelt om den minneslukande snittoperasjonen frå tidlegare …)

Det finst ein enkel måte å gjera dette på:

å la # i alle samansette, leksikaliserte ord (som har # som ordgrense før dei blir fjerna i den endelege analysatoren) valfritt gå til " " (mellomrom). Då vil særskriving av leksikaliserte ord bli analyserte som leksikaliserte ord :) Og dette burde ikkje gje ein mykje større fst.

Det som kompliserer det heile er at vi vil samtidig leggja til ein feiltagg når og berre når vi lar #:" ", slik at vi kan identifisera dei i cg-en. Men eg har tankar om korleis vi kan ordna det òg, men her kan fst-storleiken nok bli ein del større. Vi må eksperimentera...

albbas commented 8 years ago

Comment 11332

Date: 2016-05-24 12:41:34 +0200 From: Sjur Nørstebø Moshagen <>

(In reply to Sjur Nørstebø Moshagen from comment #20)

Likevel ville det vore svært verdifullt for grammatikkontrollen å vita at «skuvlabusse» er leksikalisert. I CG-en hadde det kanskje vore greiast om det var ein tagg som sa at SpacecmpHasLex. Er det mogleg vha. FST-operasjonar å legga ein sånn tagg på berre dei dynamiske samansetjingane som òg finst som leksikaliserte? (Dette minner skummelt om den minneslukande snittoperasjonen frå tidlegare …)

Det finst ein enkel måte å gjera dette på:

å la # i alle samansette, leksikaliserte ord (som har # som ordgrense før dei blir fjerna i den endelege analysatoren) valfritt gå til " " (mellomrom). Då vil særskriving av leksikaliserte ord bli analyserte som leksikaliserte ord :) Og dette burde ikkje gje ein mykje større fst.

Det som kompliserer det heile er at vi vil samtidig leggja til ein feiltagg når og berre når vi lar #:" ", slik at vi kan identifisera dei i cg-en. Men eg har tankar om korleis vi kan ordna det òg, men her kan fst-storleiken nok bli ein del større. Vi må eksperimentera...

Denne delen er no i boks, og fst-en har vorte mindre (ikkje pga denne endringa, men pga at eg retta ein logisk brest som hadde vorte oversett).

Det som står att no er:

albbas commented 8 years ago

Comment 11333

Date: 2016-05-24 14:30:13 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Sjur Nørstebø Moshagen from comment #21)

(In reply to Sjur Nørstebø Moshagen from comment #20)

Likevel ville det vore svært verdifullt for grammatikkontrollen å vita at «skuvlabusse» er leksikalisert. I CG-en hadde det kanskje vore greiast om det var ein tagg som sa at SpacecmpHasLex. Er det mogleg vha. FST-operasjonar å legga ein sånn tagg på berre dei dynamiske samansetjingane som òg finst som leksikaliserte? (Dette minner skummelt om den minneslukande snittoperasjonen frå tidlegare …)

Det finst ein enkel måte å gjera dette på:

å la # i alle samansette, leksikaliserte ord (som har # som ordgrense før dei blir fjerna i den endelege analysatoren) valfritt gå til " " (mellomrom). Då vil særskriving av leksikaliserte ord bli analyserte som leksikaliserte ord :) Og dette burde ikkje gje ein mykje større fst.

Det som kompliserer det heile er at vi vil samtidig leggja til ein feiltagg når og berre når vi lar #:" ", slik at vi kan identifisera dei i cg-en. Men eg har tankar om korleis vi kan ordna det òg, men her kan fst-storleiken nok bli ein del større. Vi må eksperimentera...

Denne delen er no i boks, og fst-en har vorte mindre (ikkje pga denne endringa, men pga at eg retta ein logisk brest som hadde vorte oversett).

Det som står att no er:

  • å få korrekte analyser for ikkje-samansetjingsanalysene (er på veg, truleg i boks snart)

Eg er veldig usikker på om den metoden eigentleg er nok – det innebærer mykje manuell pirk i leksikon for noko som burde vera mogleg å automatisera. Altså, problemet er som tidlegare at me vil ha fleirordsanalysar av alle og berre dei analysane som er tvetydige med særskrivingsfeil.

For å ta eit ekstremt døme: Pronomenet "dan" er tvetydig med feilstavinga "dan" av ei form av adjektivet "dánska", som gjer at "dančuođi" får ein Cmp-analyse, som igjen gjer at "dan čuođi" (korpus "…gal dan čuođi proseantta") får ein SpaceCmp-analyse. Men då må me òg ha ein alternativ sti frå pronomenet "dan" inn i både N, Num og V for å få same sett med ikkje-SpaceCmp-analysar som standard preprocess/lookup/lookup2cg ville gitt. I prinsippet kan jo ord frå kva som helst av ordklasser vera tvetydige med substantiv, men som eksperimenta over viste er det umogleg å på FST-nivå finna alle og berre desse (utan å gå tom for ram).

Så alternativa, etter det eg kan sjå, er:

1) backtracking i hfst-tokenise, som skildra i http://giellatekno.uit.no/bugzilla/show_bug.cgi?id=2162#c14 (analyser først lengste moglege streng; viss me såg eit backtracking-symbol, så prøver me alle måter å analysera delene)

2) me godtek at alt i prinsippet kan gå til alt via mellomrom, og prøver å fjerna mest mogleg tull med manuelle unntak i FST og CG-reglar i mwe-dis

I det lange løp trur eg nok 1) er betre; eg trur iallfall me bør prøva det så me får samanlikna.

  • å retta ein regresjon i hfst som gjer at ordformer med etterfylgjande punktteikn ikkje blir analyserte

Denne er no retta – nye hfst-pmatch2fst har som standard at token må ha separatorar mellom seg, så eg la inn «set need-separators off» i pmscriptet.

albbas commented 8 years ago

Comment 11334

Date: 2016-05-25 10:08:57 +0200 From: Sjur Nørstebø Moshagen <>

(In reply to Kevin Brubeck Unhammer from comment #22)

(In reply to Sjur Nørstebø Moshagen from comment #21)

Det som står att no er:

  • å få korrekte analyser for ikkje-samansetjingsanalysene (er på veg, truleg i boks snart)

Eg er veldig usikker på om den metoden eigentleg er nok – det innebærer mykje manuell pirk i leksikon for noko som burde vera mogleg å automatisera. Altså, problemet er som tidlegare at me vil ha fleirordsanalysar av alle og berre dei analysane som er tvetydige med særskrivingsfeil. [...] Så alternativa, etter det eg kan sjå, er:

1) backtracking i hfst-tokenise, som skildra i http://giellatekno.uit.no/bugzilla/show_bug.cgi?id=2162#c14 (analyser først lengste moglege streng; viss me såg eit backtracking-symbol, så prøver me alle måter å analysera delene)

Eg er samd, og etter at vi no har testa alternativet, og eg har tenkt meir på saka, ser eg det som det einaste fungerande alternativet. Eg har skrive e-post til Sam og Krister for å høyra kva dei meiner.

2) me godtek at alt i prinsippet kan gå til alt via mellomrom, og prøver å fjerna mest mogleg tull med manuelle unntak i FST og CG-reglar i mwe-dis

Eg har kome fram til at dette ikkje er ein farbar veg, av fleire grunnar:

I det lange løp trur eg nok 1) er betre; eg trur iallfall me bør prøva det så me får samanlikna.

Samd. Rettare trur eg no, etter at vi har prøvd alternativet, at dette er den einaste fungerande løysinga.

Sjølv om vi ikkje har fått svar frå Krister og Sam enno, så trur eg du berre kan byrja å arbeida med ei slik løysing med ein gong. Då har vi i det minste noko å testa og visa til.

albbas commented 8 years ago

Comment 11338

Date: 2016-05-30 15:38:09 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

http://sprunge.us/AHCV?diff med «git clone -b tokenise-backtrack https://github.com/unhammer/hfst» er no ganske nærme noko brukbart (men har nok enno noko krasj ein stad)

For å ta ein ikkje-feil først, så gir det no http://sprunge.us/DGLg?sh der det før gav http://sprunge.us/FFiA?sh – utan at heile den strengen er spesifisert som ikkje-feil i lexc.

Så det som manglar er lengste-match (areála+ektui go vs areála+ektui+go), men eg veit ikkje om det er vits i å bruka tid på enno – det er jo noko som den «elegante» løysinga burde gi oss, men som me ikkje veit enno om me treng pga. me uansett først må innskrenka ganske kraftig det me analyserer som særskriving i lexc.

Eit anna problem med å begynna på lengste-match er at dei vil inkludera særskrivingsanalysar, og det vil me jo ikkje ha. Altså, viss «A B C» hadde backtracking-punkt mellom alle ord, og me først skal prøva «A B+C» vs «A+B C» (før me eventuelt prøver «A+B+C»), så er det god sjanse for at «A+B C» inkluderer ein særskrivingsanalyse av «B C» – skal me då ha hardkoda visse ting i tokenize som fjernar SpaceCmp frå backtracking? Det blir veldig hackete.


Viss me derimot klarer å innskrenka særskrivinga ein del først, så kan det henda at me klarer oss utan lengste-match, iallfall fram til me har ein sånn pmatch-spesifisert versjon av backtracking som Sam & Krister snakka om. Linda & Duommá og meg snakka om t.d. berre særskriving av leksikaliserte til å begynna med; og eventuelt dynamiske uderiverte N+ – og så går det an å sjå på kva slags feil det ikkje fangar opp, om det er verdt den ekstreme tvetydigheita å utvida meir.

albbas commented 8 years ago

Comment 11546

Date: 2016-10-13 20:22:38 +0200 From: Sjur Nørstebø Moshagen <>

(In reply to Kevin Brubeck Unhammer from comment #24)

Viss me derimot klarer å innskrenka særskrivinga ein del først, så kan det henda at me klarer oss utan lengste-match, iallfall fram til me har ein sånn pmatch-spesifisert versjon av backtracking som Sam & Krister snakka om. Linda & Duommá og meg snakka om t.d. berre særskriving av leksikaliserte til å begynna med; og eventuelt dynamiske uderiverte N+ – og så går det an å sjå på kva slags feil det ikkje fangar opp, om det er verdt den ekstreme tvetydigheita å utvida meir.

Det har vore stille lenge her:-)

Vi har gått over til berre å ha særskrivingsanalyse av leksikaliserte samansetjingar, og det ser ut til å vera akkurat det vi vil ha. Løysinga er generell, og samtidig avgrensa nok til at vi unngår uhorveleg mange analyser og stor tvetydigheit.

Etter det eg kan sjå er vi no snart klare til å lukka denne lusmeldinga.

albbas commented 8 years ago

Comment 11584

Date: 2016-10-19 19:26:40 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

Ja; det er rett nok enno nokre ting som er litt rare, men det er kanskje sånt me berre fiksar med lingvistikken i lexc/CG.

T.d..

$ echo servodat dilálašvuođain | hfst-tokenise -g tokeniser-gramcheck-gt-desc.pmhfst "<servodat dilálašvuođain>" "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Pl Loc Err/Orth Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Pl Loc Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Sg Com Err/Orth Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Sg Com Err/SpaceCmp "vuohta" Err/Lex N Pl Loc Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Sg Com Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Sg Com Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Pl Loc Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Sg Com Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Sg Com Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Sg Com Err/Orth "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Sg Com Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Sg Com Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Sg Com "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Pl Loc Err/Orth "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Pl Loc Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Pl Loc Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Pl Loc "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" :\n

albbas commented 8 years ago

Comment 11585

Date: 2016-10-19 19:32:12 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

dvs. http://sprunge.us/QgWA?sh – bugzilla brekker lange linjer :/

albbas commented 7 years ago

Comment 11795

Date: 2016-12-07 11:40:15 +0100 From: Linda Wiechetek <>

(In reply to Kevin Brubeck Unhammer from comment #26)

Ja; det er rett nok enno nokre ting som er litt rare, men det er kanskje sånt me berre fiksar med lingvistikken i lexc/CG.

T.d..

$ echo servodat dilálašvuođain | hfst-tokenise -g tokeniser-gramcheck-gt-desc.pmhfst "<servodat dilálašvuođain>" "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Pl Loc Err/Orth Err/SpaceCmp

"servodatdilálašvuohta" N Sem/State Pl Loc Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Sg Com Err/Orth Err/SpaceCmp "servodatdilálašvuohta" N Sem/State Sg Com Err/SpaceCmp "vuohta" Err/Lex N Pl Loc Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Sg Com Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Sg Com Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "vuohta" Err/Lex N Pl Loc Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Pl Loc Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Sg Com Err/Orth Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Sg Com Err/SpaceCmp "servodatdilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/SgGen Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Sg Com "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc Err/Orth "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "servodat" N Sem/Org Sg Nom "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "vuohta" Err/Lex N Pl Loc "< dilálašvuođain>" "dilli" NN Sem/State Der/lasj A Cmp/Attr Cmp "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Sg Com Err/Orth "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Sg Com Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Sg Com Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Sg Com "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Pl Loc Err/Orth "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Pl Loc Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Pl Loc Err/Orth "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilálašvuohta" N Sem/State Pl Loc "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilálašvuohta" N Sem/State Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilálašvuohta" N Sem/State Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Sg Com "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc "< dilálašvuođain>" "servodat" N Sem/Org Sg Nom "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs Sg3 "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc "< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg "" :\n

Kosjn har du tenkt å fikse sånt i CG?

albbas commented 7 years ago

Comment 11797

Date: 2016-12-07 12:29:29 +0100 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Linda Wiechetek from comment #28)

(In reply to Kevin Brubeck Unhammer from comment #26)

Ja; det er rett nok enno nokre ting som er litt rare, men det er kanskje sånt me berre fiksar med lingvistikken i lexc/CG.

T.d..

$ echo servodat dilálašvuođain | hfst-tokenise -g tokeniser-gramcheck-gt-desc.pmhfst "<servodat dilálašvuođain>" "servodatdilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc Err/SpaceCmp […] Kosjn har du tenkt å fikse sånt i CG?

På same måte som andre CG-reglar … er det noko spesifikt som ikkje går an å få til her?

albbas commented 7 years ago

Comment 12122

Date: 2017-03-08 00:10:16 +0100 From: Sjur Nørstebø Moshagen <>

(In reply to Kevin Brubeck Unhammer from comment #26)

Ja; det er rett nok enno nokre ting som er litt rare, men det er kanskje sånt me berre fiksar med lingvistikken i lexc/CG.

T.d..

$ echo servodat dilálašvuođain | hfst-tokenise -g tokeniser-gramcheck-gt-desc.pmhfst [...] "" "dilli" NN Sem/State Der/lasj AA Attr Der/vuota N Err/Orth Pl Loc

"< dilálašvuođain>" "dat" Pcle "" "searvat" VV IVV Der/PassS V IV Ind Prs ConNeg

Jepp, kvifor 'dat' lagar samansetjing t.d. - det forstår eg ikkje, og det er samtidig noko som heilt klårt må løysast i lexc.

Eg reknar med dette denne lusmeldinga som løyst.

albbas commented 7 years ago

Comment 12540

Date: 2017-09-08 10:54:09 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

Created attachment 207 tavleskribleriar om with-flag

Me bør etter kvart sjå på om me kan bruka FST-lokale flagg, ein ny funksjon som Sam har lagt til i Pmatch: https://github.com/hfst/hfst/commit/b5b7995be645d845477c403ab4de6981f26badb4

Kort fortalt skal det altså gå an å ha stiar inn i same FST (t.d. heile leksikon) frå to ulike stadar i tokeniser-FST-en, der dei to stiane har ulike start-verdiar for eit visst flagg. Så i ein viss tokeniseringskontekst slår me opp ord med flagget på, i ein annan, med flagget av.

Kombinert med RC/right context (ein sjekk som skjer ved køyring og ikkje ved kompilering), burde det i teorien vera mogleg å bruka dette maskineriet til å berre analysera særskrivingsfeil viss dei i tillegg finst utan mellomrom i leksikonet (og dermed fjerna min backtracking-kode, som er litt for oppgåvespesifikk).

Attached file: with-flag.png (image/png, 270043 bytes) Description: tavleskribleriar om with-flag

albbas commented 7 years ago

Comment 12543

Date: 2017-09-08 14:40:47 +0200 From: Kevin Brubeck Unhammer <<unhammer+apertium>>

(In reply to Kevin Brubeck Unhammer from comment #31)

Created attachment 207 [details] tavleskribleriar om with-flag

Me bør etter kvart sjå på om me kan bruka FST-lokale flagg, ein ny funksjon som Sam har lagt til i Pmatch: https://github.com/hfst/hfst/commit/b5b7995be645d845477c403ab4de6981f26badb4

Kort fortalt skal det altså gå an å ha stiar inn i same FST (t.d. heile leksikon) frå to ulike stadar i tokeniser-FST-en, der dei to stiane har ulike start-verdiar for eit visst flagg. Så i ein viss tokeniseringskontekst slår me opp ord med flagget på, i ein annan, med flagget av.

Kombinert med RC/right context (ein sjekk som skjer ved køyring og ikkje ved kompilering), burde det i teorien vera mogleg å bruka dette maskineriet til å berre analysera særskrivingsfeil viss dei i tillegg finst utan mellomrom i leksikonet (og dermed fjerna min backtracking-kode, som er litt for oppgåvespesifikk).

-r156774 har ein enkel proof-of-concept på dette