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

Møte 3. januar 2017

Hangouts: Kevin, Lene

Saker:

  1. Behandling av semtagger (vs bidix-paradigme)
  2. PoS-endring og transfer
  3. Semtagger for proper nouns: cog vs top
  4. Parallelltekst-skript
  5. out whole vs clip-delar
  6. Bruke advl-tagger med -ine og -ela
  7. Variabler
  8. Hyphen i sammensetninger
  9. Guovdageainnu suohkana jođiheaddji
  10. Hvordan finne svn-logg for Apertium
  11. Hash-lister fra større oversettinger

Semtag vs bidix-paradigme

Fra epost-diskusjon:

Lene skrev:

Vi har etterhvert fått mer og mer semtagger, både på substantiv og adjektiv. Taggene er i bruk også i disambiguering.

I sme-smX blir taggene med over i apertium, sjøl om de ikke er med i dix, og de er dermed med i disambigueringa (bedre resultat)
  (ordet får to analyser, en med og en uten semtagg:

"<bargobáikkis>"

"bargobáiki" n sem_plc sg loc

"bargobáiki" n sg loc

, og analysen med semtagg blir valgt i functions.cg3 for disambigueringa. Analysen uten semtagg blir parret med dix)

og de kan også brukes i transferreglene
Taggene blir fjerna i t1x.

Kevin skrev:

I sme-nob har me brukt bidix-paradigme til tre relevante ting her:

1. Til å endra/fjerna taggar som generelle reglar:
   Paradigmet "__adj" gjer cmp_attr.cmp → pst.mf.sg.ind og
   ess → pst.GD.ND (medan andre taggar blir overført likt).

2. Til å markera leksikalske unntak frå regelen:
   Paradigmet "pl__n" gjer t.d. alle sg-lesingar til pl:
   <e><p><l>bivvu<s n="n"/><s n="sem_clth"/></l><r>klær<s n="n"/><s n="nt"/></r></p><par n="pl__n"/></e>
   <e><p><l>beaiveruhta<s n="n"/><s n="sem_money"/></l><r>dagpenger<s n="n"/><s n="m"/></r></p><par n="pl__n"/></e>
   … der dei fleste substantiv bruker "__n" som lar sg gå til sg.

3. Til å trimma analysar me ikkje vil ha med:
   Ved å ha eit bidix-paradigme som *ikkje* har med
   <e><p><l/><r/></p></e>
   , men berre t.d.
   <e><p><l><s n="inf"/></r><s n="inf"/></r>
   osb., får du ikkje med dei analysane som ikkje er spesifisert i
   paradigmet.


Alle tre funksjonane er moglege å utføra på andre måtar, og eg ser
fordelen med å sleppa å spesifisera sem-taggar i bidix; me må berre
passa på at me ikkje mistar noko i omskrivinga.

Punkt 1. er jo gjort med transferreglar i sme-smX, det kan me gjera her
òg.

Punkt 2. er vanskelegare – viss me ikkje skal spesifisera sem-taggar,
kan me heller ikkje spesifisera taggar som kjem etter sem-taggen på
sme-sida (for då får me berre ikkje-sem-analysen med). Altså,

   <e><p><l>bivvu<s n="n"/><s n="sg"/></l><r>klær<s n="n"/><s n="nt"/><s n="pl"/></r></p></e>

vil trimma sem-analysen. Me kan heller ikkje ha

   <e><p><l>bivvu<s n="n"/></l><r>klær<s n="n"/><s n="nt"/><s n="pl"/></r></p></e>

sidan me då får bidix-output
^bivvu<n><sem_clth><sg><nom>/klær<n><nt><pl><sem_clth><sg><nom>$, som
berre blir eit rot.

Eitt alternativ for leksikalske unntak er at me rett og slett seier «ok,
for dei må me ha sem-taggar med i bidix», men me kan jo bruka eit
paradigme av sem-taggar så det ikkje er så farleg om ting endrar seg,
altså:

<pardef n="semtags">
  <e><p><l><s n="sem_clth"/></l><r></r></p></e>
  <e><p><l><s n="sem_jna."/></l><r></r></p></e>
  <!-- ingen sem-tagg: -->
  <e><p><l/><r/></p></e>
</pardef>
<pardef n="pl__n">
  <e><par n="semtags"/><p><l><s n="sg"/></l><r><s n="pl"/></r></p></e>
  <e><par n="semtags"/><p><l><s n="pl"/></l><r><s n="pl"/></r></p></e>
</pardef>
<e><p><l>bivvu<s n="n"/></l><r>klær<s n="n"/><s n="nt"/></r></p><par n="pl__n"/></e>

Punkt 3. kan me nok løysa i rm-deriv-cmp.twol – det er kanskje bra å
ha alt på éin plass der uansett?

Leksikalske unntak spesifisert med paradigme

lemma n sg

    <e><p><l>vuovdi<s n="n"/></l><r>vyevdi<s n="n"/></r></p></e>
    <e><p><l>vuovdi<s n="n"/><s n="nomag"/></l><r>vyebdee<s n="n"/><s n="nomag"/></r></p></e>

    <e><p><l>dikšu<s n="n"/><s n="sem_act"/></l><r>tipšo<s n="n"/></r></p></e><!-- Nom Actionis -->
    <e><p><l>dikšu<s n="n"/><s n="nomag"/></l><r>tipšoo<s n="n"/><s n="nomag"/></r></p></e><!-- Dahkkinamma -->

    <e><p><l>gullevaš<s n="adj"/><s n="sem_dummytag"/><s n="attr"/></l><r>kuullâđ¹<s n="vblex"/><s n="prsprc"/></r></p></e>
   <e><p><l>bivvu<s n="n"/><!--sem--><s n="sg"/></l><r>klær<s n="n"/><s n="nt"/><s n="pl"/></r></p></e>
$ echo '^bivvu<n><sem_clth><sg><nom>$' | lt-proc -b sme-nob.autobil.bin
^bivvu<n><sem_clth><sg><nom>/@bivvu<n><sem_clth><sg><nom>$

Mogleg alternativ:

<pardef n="semtags">
  <e><p><l><s n="sem_clth"/></l><r></r></p></e>
  <e><p><l><s n="sem_jna."/></l><r></r></p></e>
  <!-- ingen sem-tagg: -->
  <e><p><l/><r/></p></e>
</pardef>
<pardef n="pl__n">
  <e><par n="semtags"/><p><l><s n="sg"/></l><r><s n="pl"/></r></p></e>
  <e><par n="semtags"/><p><l><s n="pl"/></l><r><s n="pl"/></r></p></e>
</pardef>
<e><p><l>bivvu<s n="n"/></l><r>klær<s n="n"/><s n="nt"/></r></p><par n="pl__n"/></e>

(for å sleppa å eksplisitt spesifisera sem-taggar på unntaka òg)

rm-deriv-cmp i staden for paradigme-basert trimming

   <rule comment="C[] NOM.GEN ADJ_ATTR NOM




        <choose><when><test> <!-- Lene: for sápmi.n.sg.gen samisk.adj -->
        <equal><clip pos="1" side="tl" part="a_adj"/><lit-tag v="adj"/></equal></test>
        <call-macro n="set_defnes2"><with-param pos="2"/><with-param pos="1"/></call-macro>
        <call-macro n="modify_adj_gen_nbr"><with-param pos="2"/><with-param pos="1"/></call-macro>
        <let>
          <var n="pre-nom"/>
          <concat>
            <lit v="^"/>
              <clip pos="1" side="tl" part="lemh"/>
              <clip pos="1" side="tl" part="a_adj"/>
              <clip pos="1" side="tl" part="grau"/>
              <clip pos="1" side="tl" part="gen"/>
              <clip pos="1" side="tl" part="nbr"/>
              <lit-tag v="3"/>
              <clip pos="1" side="tl" part="lemq"/>
            <lit v="$"/>
            <b pos="1"/>
            <lit v="^"/>
              <clip pos="2" side="tl" part="lemh"/>
              <clip pos="2" side="tl" part="a_adj"/>
              <clip pos="2" side="tl" part="grau"/>
              <clip pos="2" side="tl" part="gen"/>
              <clip pos="2" side="tl" part="nbr"/>
              <lit-tag v="def"/>
              <clip pos="2" side="tl" part="lemq"/>
            <lit v="$"/>
            <b pos="2"/>
          </concat>
        </let>
        </when>
        <otherwise>

PoS-endring og transfer

sápmi→samisk feiler når ordet ikkje er head i chunken (out_nom handterer det, men me har ingen macro for pre-nom)

Semtagger for proper nouns: cog vs top

Alle top kan også være cog, pluss at mange går til feil paradigme i nob.dix

Alle cog/top i nob.jdix har like paradigmer

TODO: legge til RL i nob.dix for generering uten cog eller top tagg

Parallelltekst-skript

[/mt/infra/Paralleltexts.html] (burde kanskje hatt P(osition-independent)WER òg? ofte nyttigare metrikk for gisting)

out whole vs clip-delar

I smenob brukes clip med enkeltdeler for output. Dette er mer robust i fohrold til endringer i tagging i source language.

I smesmX endrer vi tagstringen med regler og macro, og så clip whole ut. Dette gjør det enklere å skifte mellom ordklasser osv, men er passer kanskje best for nære språkpar.

Fordel med å bytta til smesmX-metoden at ting blir likare på tvers av sme-par. Ulempe med å bytta: veldig mykje koda med clip-delar, stor jobb, kanskje mindre robust resultat(?).

Bruke advl-tagger med -ine og -ela

echo Mun boađán skuvllas | apertium -d. sme-nob-syntax
^Mun<prn><pers><p1><sg><nom><@SUBJ→><MAP:1677:subj>Pers>$ ^boahtit<vblex><iv><indic><pres><p1><sg><@+FMAINV>$ ^skuvla<n><sem_edu_org><sg><loc><@←ADVL-ela><MAP:1865:V<advl>$^.<sent>$

echo Mun ráhkadan láibbi čázis | apertium -d. sme-nob-syntax
^Mun<prn><pers><p1><sg><nom><@SUBJ→><MAP:1677:subj>Pers>$ ^ráhkadit<vblex><tv><indic><pres><p1><sg><@+FMAINV>$ ^láibi<n><sem_food><sg><acc><@←OBJ><MAP:2051:TV<obj>$ ^čáhci<n><sem_plc_substnc_wthr><sg><loc><@←ADVL-ela><MAP:1869:V<advl>$^.<sent>$
echo Mun boađán doppe | apertium -d. sme-nob-syntax
^Mun<prn><pers><p1><sg><nom><@SUBJ→><MAP:1677:subj>Pers>$ ^boahtit<vblex><iv><indic><pres><p1><sg><@+FMAINV>$ ^doppe<adv><sem_plc><@←ADVL-ela><MAP:1865:V<advl><SELECT:2253>/¬doppe<adv><@←ADVL-ela><MAP:1865:V<advl><SELECT:2253>$^.<sent>$
$ echo "Mihttomearri lea beassat hálddašanguovllus."|apertium -d . sme-nob-syntax
^Mihttomearri<n><sem_semcon><sg><nom><@SPRED→><MAP:1658:spred>SubjInf>$ ^leat<vblex><iv><indic><pres><p3><sg><@+FMAINV>$ ^beassat<vblex><iv><inf><@←SUBJ>$ ^hálddašeapmi<n><cmp_sgnom><cmp>+guovlu<n><sg><loc><@-F←ADVL-ela><MAP:1801:f<advl>$^..<sent>$

@-F←ADVL-ela – ekvivalent med @←ADVL-ela

Variabler

http://wiki.apertium.org/wiki/Northern_Sámi_and_Norwegian/Regression_tests

Setninger som er avhengig av variabler

  • Son lea čeahpes bárdni. : lexical selection med tagger
  • ii livčče čállán. - legg til subjekt
  • dan maŋŋá gildui sámegiella. - lexical selection? SELECT (“den”i m) (0 (“"i)) ;
  • Harald liiko návddašit luonddu, dan dahká son go sihkkelastá. - lexical selection?
  • dan geažil. - lexical selection?
  • nuorran son lea dan juo oahppan. - lexical selection?
  • nuorran son lea dan oahppan. - lexical selection?
  • mun dadjen dan sámegillii. - lexical selection?
  • Dat lea buot mii mus lea. - lexical selection?
  • Gonagas Harald liiko návddašit luonddu, dan dahká son go bivdá. - lexical selection?
  • sirdui. legg til subjekt
  • Dat lea sihke buorre ja heittot. - lexical selection?

^det/den/den/den$^./.$

det adv er ikke i nob

datdet

hyphen i sammensetninger

echo lotto-speallu | apertium -d. sme-nob
et lottospill
echo lotto-speallu | apertium -d. sme-nob-disam
^lotto-speallu/lotto<n><sem_game><cmp_sgnom><cmp_hyph><cmp>+speallu<n><sg><nom>$^./.<sent>$
  • TODO: cmp_hyph => guio i taggendringsfila (lene studerer bruken av denne taggen, om det er eigentleg Err/Orth eller kva)
$ echo '^lotto<n><m><sg><ind><guio>$'|lt-proc -d nob/nob.autogen.bin
lotto-

      <e><p><l><s n="cmp_sgnom"/><s n="cmp_hyph"/><s n="cmp"/></l><r><s n="sg"/><s n="nom"/></r></p></e> <!-- Lene added - we should have hyphen also at nob. -->

Guovdageainnu suohkana sátnejođiheaddji mangler caseprep

Ordføreren i/av Kautokeino kommune

<rule comment="C[] NOM.GEN NOM.GEN NOM
"set_caseprep"

Vi prøvde å debugge denne, men blei ikke ferdige

svn-logg

[https://sourceforge.net/p/apertium/svn/HEAD/tree/languages/apertium-nob]

Dagens hash-liste fra oversetting av free_facta

2511 #samisk<sg><ind>
2260 #som
 713 #samme<det><dem><nt><sp><def>
 643 #samme<det><dem><m><sp><def>
 497 #Davvi
 366 #kjent<adj><sint><pst><mf><sg><ind>
 254 #Stortinget<np><nt>
 253 #samme<det><dem><f><sp><def>
 230 #kjent<adj><sint><pst><un><pl><ind>
 212 #Jesus<np><ant><m>
 202 #Min
 195 #samisk<sg><def>
 186 #selv<det><emph>
 176 #gymnas<n><m><sg><ind>
 168 #Ávvir<np>  <== fra Aasen**np til Wikipedia**np
 167 #ILO<np>
 166 #gymnas<n><m><sg><def>
 163 #nær<sup><def>
 156 #kjent<adj><sint><pst><nt><sg><ind>
 155 #Guttorm<np><cog>
 154 #selv<det><emph><un><un><sp>
 150 #samisk<pl><ind>
 146 #Universitetet
 130 #hverandre<prn><res><pl>
 102 #ILO<np><gen>
 100 #noen<mf><sp>
  99 #Karen<np><cog>
  97 #ForfatternesForlag<np>
  95 #kjent<adj><sint><pst><un><sp><def>