Difference between revisions of "Norwegian Nynorsk and Norwegian Bokmål"
(205 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{TOCD}} |
|||
Dette er ei side med praktisk informasjon for alle som vil bidra til maskinomsetjingsprosjekta til og frå norsk. |
|||
Dette er ei side med praktisk informasjon for alle som vil bidra til maskinomsetjingsprosjekta til og frå norsk. Sjå [[Northern Sámi and Norwegian Bokmål]] om du er interessert i samisk. |
|||
Nyaste offisielle utgåve av språkparet er 1.2.0 (sjå https://github.com/apertium/apertium-nno-nob/releases ), ei oppsummering av endringane står i fila [https://github.com/apertium/apertium-nno-nob/blob/master/NEWS NEWS]. |
|||
For å kunne delta må du ha ein konto på SourceForge, og du må sjekke ut kjeldekoden via SVN. |
|||
apertium-nno-nob er sponsa av: |
|||
Desse er dei viktige filene for prosjektet for maskinomsetjing mellom nynorsk og bokmål. |
|||
* Google Summer of Code (2009, første utgåve, v0.6.0) |
|||
* Wikimedia Foundation (2015–2016, som ein del av [[Scandinavian_MT_project]], v1.1.0) |
|||
* Nynorsk Pressekontor og Kulturdepartementet (2018–2019, v1.2.0) |
|||
Sjå òg [http://hdl.handle.net/10045/12025 artikkelen om apertium-nno-nob]. |
|||
apertium-nn-nb.nb.dix |
|||
apertium-nn-nb.nn-nb.dix |
|||
apertium-nn-nb.nn.dix |
|||
== Vil du bidra? == |
|||
Filene <code>apertium-nn-nb.nb.dix</code> og <code>apertium-nn-nb.nn.dix</code> inneheld dei morfologiske parsarane. |
|||
Det finst mange måtar å bidra til prosjektet. |
|||
Fila <code>apertium-nn-nb.nn-nb.dix</code> er transferleksikonet. |
|||
* Om du ikkje har så mykje programmeringskunnskap kan du likevel enkelt bidra ved å leggje til [http://nn.wikipedia.org/wiki/Wikipedia:Wikiprosjekt_Maskinomsetjing_fr%C3%A5_bokm%C3%A5l/Manglande_omsetjingar forslag til omsetjingar] (wiki). |
|||
Merk at oppslaga (<code><e></code>) kan vere merka med ein restriksjon,, <code><e r="LR"></code>, som viser at oppslaget vil bli analyser, men ikkje generert. |
|||
* Om du har småendringar, ein programretting eller forslag til endringar kan du ta kontakt med t.d. [[User:Unhammer|Unhammer]] eller [[Contact|andre involverte]]. |
|||
==SVN== |
|||
* For å kunne gjere endringar direkte i koden må du ha ein [https://github.com/ konto på Github], og du må sjekke ut kjeldekoden via [[Using git|git]] (sjå nedanfor). |
|||
Sjekk ut kjeldekoden med denne kommandoen: |
|||
Desse er dei viktige filene for prosjektet for maskinomsetjing mellom nynorsk og bokmål: |
|||
* Omsetjingsordboka / transferleksikonet: |
|||
** [https://github.com/apertium/apertium-nno-nob/blob/master/apertium-nno-nob.nno-nob.dix apertium-nno-nob.nno-nob.dix] |
|||
* Dei einspråklege ordbøkene (som gir morfologiske analysatorar/generatorar): |
|||
** [https://github.com/apertium/apertium-nno/blob/master/apertium-nno.nno.dix apertium-nno.nno.dix] |
|||
** [https://github.com/apertium/apertium-nob/blob/master/apertium-nob.nob.dix apertium-nob.nob.dix] |
|||
* [[CG]]-reglar for morfologisk disambiguering: |
|||
** [https://github.com/apertium/apertium-nno/blob/master/apertium-nno.nno.rlx apertium-nno.nno.rlx] |
|||
** [https://github.com/apertium/apertium-nob/blob/master/apertium-nob.nob.rlx apertium-nob.nob.rlx] |
|||
Les òg sida [[Contributing to an existing pair]], som inneheld mykje nyttig informasjon. |
|||
Merk at oppslaga (<code><e></code>) kan vere merka med ein restriksjon, <code><e r="LR"></code>, som viser at oppslaget vil bli analysert, men ikkje generert (dette kan vere nyttig med t.d. klammeformer). |
|||
==Installasjon== |
|||
* Sjå [[/Installasjon]] viss du vil installere nyaste utgåve av apertium-nno-nob, og sjølve apertium osb. |
|||
* Generell installasjonsinformasjon finn du på [[Installation]] |
|||
== Statistikk og status == |
|||
Github har ei side der du kan sjå [https://github.com/apertium/apertium-nno-nob/commits/master nyaste endringar i apertium-nno-nob]. |
|||
===WER på NTB-nyheiter 2018-08-27=== |
|||
På NTB-nyheiter har apertium-nno-nob ein median-WER på under 5 %. |
|||
Dette er frå ein test på 1221 nyheitsartiklar med korrektur, der me finn WER på kvar enkeltartikkel og så tar median (og ulike typar snitt) av WER: |
|||
<pre> |
<pre> |
||
date | hmean | gmean | median | amean | stddev ‖ |
|||
svn co https://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium-nn-nb |
|||
2019-08-01-editinput | 2.81 | 2.71 | 3.95 | 4.98 | 4.56 ‖ |
|||
2019-08-27_e0bab1b | 3.07 | 3.22 | 4.37 | 5.15 | 4.24 ‖ |
|||
</pre> |
</pre> |
||
Linja 2019-08-01-editinput er WER på «editinput», dvs. input til korrekturane frå apertium, der editinput blei laga av ulike apertium-utgåver frå ca. august 2019. |
|||
== Decisions to make == |
|||
=== Garpegenitiv === |
|||
Idea: There's a possibility of "variants" in the monodix, possibly there could be a transfer rule variant on whether or not to keep the "garpegenitiv"/[http://en.wikipedia.org/wiki/His_genitive his-genitive] across translations since it's a bit... disputed. |
|||
--[[User:Unhammer|Unhammer]] |
|||
Linja 2019-08-27_e0bab1b er samanlikning mellom dei korrekturane og ei ny omsetjing (med versjonane [https://github.com/apertium/apertium-nob/commit/f0fc272315bb0e31d24c82b6fbe1bb7b6000f758] [https://github.com/apertium/apertium-nno/commit/1f7631e5184e174f13940b83c0c59ae14b1beb06] [https://github.com/apertium/apertium-nno-nob/commit/e0bab1b3e57a8d529b524d818339c4b9237f7225]). |
|||
==Relevante lenkjer== |
|||
===Dekning på ordbøkene=== |
|||
{| class="wikitable" border="1" |
|||
|- |
|||
! Språk |
|||
! # |
|||
! @ |
|||
! / (bidix) |
|||
! / (gen) |
|||
! Dekning på Wikipedia |
|||
! [#@/] på 20000 linjer frå Wikipedia |
|||
|- |
|||
| Nynorsk |
|||
| 0 |
|||
| 0 |
|||
| 0 |
|||
| 0 |
|||
| 88,9 % |
|||
| 0 |
|||
|- |
|||
| Bokmål |
|||
| 0 |
|||
| 0 |
|||
| 0 |
|||
| 0 |
|||
| 90,0 % |
|||
| 0 |
|||
|} |
|||
Dekninga med samansetjingsanalyse av substantiv på bokmålswikipedia er: <code>91,6 %</code> |
|||
Dei tre første kolonnene får du vha. skriptet <code>dev/testvoc.sh</code>. Teikna #, /, @ og * er forklart på sida [[Apertium stream format]]. Skriptet <code>dev/coverage.sh</code> gir dekning. Feilkoder i korpus får du ved å køyre <code>cat /korpora/nb.txt | sed 's/[@#]/_/g'| fold | head -n 20000 | apertium-nb-nn | ack '[@#]'</code> (evt. <code>grep -c</code>), og omvendt. Korpusa er nnwiki-20090119-pages-articles.xml.bz2 og nowiki-20090108-pages-articles.xml.bz2 (sjå [http://download.wikimedia.org/backup-index.html download.wikimedia.org]). |
|||
Lister over kor mange lemma kvar ordbok har: |
|||
* [[Apertium-nno-nob/stats]] |
|||
* [[Apertium-nno/stats]] |
|||
* [[Apertium-nob/stats]] |
|||
===WER-test 2009-08-28=== |
|||
[http://nn.wikipedia.org/w/index.php?title=Lingvistikk&diff=1052110&oldid=1052109 diff på maskinomsetjing og redigert versjon] |
|||
<pre> |
|||
Statistics about input files |
|||
------------------------------------------------------- |
|||
Number of words in reference: 3750 |
|||
Number of words in test: 3736 |
|||
Number of unknown words (marked with a star) in test: 653 |
|||
Percentage of unknown words: 17.48 % |
|||
Results when removing unknown-word marks (stars) |
|||
------------------------------------------------------- |
|||
Edit distance: 400 |
|||
Word error rate (WER): 10.71 % |
|||
Number of position-independent word errors: 343 |
|||
Position-independent word error rate (PER): 9.18 % |
|||
Results when unknown-word marks (stars) are not removed |
|||
------------------------------------------------------- |
|||
Edit distance: 824 |
|||
Word Error Rate (WER): 22.06 % |
|||
Number of position-independent word errors: 769 |
|||
Position-independent word error rate (PER): 20.58 % |
|||
Statistics about the translation of unknown words |
|||
------------------------------------------------------- |
|||
Number of unknown words which were free rides: 424 |
|||
Percentage of unknown words that were free rides: 64.93 % |
|||
</pre> |
|||
Sjå au [http://unhammer.github.com/apertium-nn-nb-WER/ orddiff med og utan samansetjingsanalyse]. |
|||
==Pipeline== |
|||
[[Image:Nob-nno-pipeline.jpg|thumb|700px|left|Current pipeline for nob-nno direction]] |
|||
==Generell TODO-liste== |
|||
# Utvide vokabular/bidix (meir dekning) |
|||
## f.eks. med <code>lt-expand full.nb.dix | cut -d: -f2 | grep '<POS>' | sed 's/<.*//' | uniq > sjekke</code> og <code>hunspell check -d nn sjekke</code> |
|||
# Fleire høgfrekvente partikkelverb |
|||
# Fleire ord som treng spesielle eigedomspreposisjonar (kapteinen '''på''' skipet, motoren '''i''' bilen), sjå listene "gen-på" og "gen-i" i nb-nn.t1x |
|||
# Konvertere [[norsk#syntaks|syntaksdelen av Oslo-Bergen-taggaren]]; me bør vere sikre på om ein NP er subjekt eller objekt (osb.) før me flyttar ein heil NP |
|||
# Ny variant basert på [http://i18n.skulelinux.no/retningslinjer.html fellesordlista] (ev. la -a-infinitivsvarianten følgja den) |
|||
# Prøv [http://www.aclweb.org/anthology/Y13-1046 PDK]/[http://www.hf.uio.no/iln/om/organisasjon/tekstlab/aktuelt/arrangementer/2015/nodalida15_submission_90.pdf resectioning] på CG-en (evaluer mot språkmodell på målspråket eller parallellkorpus) |
|||
== Variantar og valfridom == |
|||
apertium-nno-nob har ein alternativ nynorsk-variant: '''nno_e''' gir e-form av verb i infinitiv («å sykle»), bruk <code>apertium nob-nno_e</code>. |
|||
Det hadde sjølvsagt vore kult å få like mykje valfridom som [https://web.archive.org/web/20150509115115/http://www.nynodata.no/var/nynodata/storage/images/media/images/innstilling/842-1-nno-NO/innstilling.gif dette], men det krev litt arbeid... |
|||
Ein del sideformar og slikt har iallfall fått '''paradigme''' på toppen av filene, sjå t.d. «mel_LR_mjøl» i nb.dix; dette paradigmet går på alle ord som kan ha anten mel(k) eller mjøl(k) i seg (hvetemel, hvetemjøl). Med god bruk av slike paradigme bør me vere eitt steg nærare slike enkle innstillingar som Nyno har; i tillegg til at det blir enklare å raskt endre seg til nye normalar. |
|||
Ein annan fordel er at me slepp å ha ein haug med LR/RL-element i bidix, som raskt blir rotete og vanskeleg å sjekke for konsistens (tidlegare sto det t.d. ein RL på bokmål «mjølk» medan samansette ord med «-mjølk-» i seg ikkje hadde RL). |
|||
== Multiword expressions, particle verbs == |
|||
nn generally uses more particle verbs than nb, so going from nb->nn we have to be able to generate these; similarly, from nn->nb we might want to analyse particle verbs. |
|||
===Generation=== |
|||
* hun bekjempet ofte fiender => ho kjempa ofte mot fiendar |
|||
[[Multiwords]] (mwe's) like this are typically represented in apertium like: |
|||
<pre> |
|||
<e lm="kjempe mot"> |
|||
<i>kjemp</i><par n="mo/e__vblex"/> |
|||
<p><l><b/>mot</l> |
|||
<r><g><b/>mot</g></r> |
|||
</p> |
|||
</e> |
|||
</pre> |
|||
(see the [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf official documentation], pp.46--47.) |
|||
'kjempe' is the inflected lemma head (lemh), ' mot' the invariable lemma tail (lemq). |
|||
However, the problem here is that we may have strings of arbitrary adverbs in between the two (or even objects, for some mwe's), so after bidix has transferred "bekjempet" to "kjempa_mot", transfer needs to turn this into "kjempa(lemh) ofte<adv> mot(lemq)". This looks a bit hacky, but works quite well. See [http://wiki.apertium.org/wiki/Multiwords#The_Nynorsk_hack this page] for details. |
|||
===Analysis=== |
|||
* Geografisk høyrer ikkje Jurafjella til Alpane, men geologisk gjer dei det. => Geografisk tilhører ikke Jurafjellene Alpene, men geologisk gjør de det. |
|||
For analysis, [http://apertium.svn.sourceforge.net/viewvc/apertium/trunk/apertium-nn-nb/dev/apertium-nn-nb.multiwords.t1x?sortby=date&view=log dev/apertium-nn-nb.multiwords.t1x] has a possible solution. |
|||
echo '^Geografisk<adj><posi><nt><sg><ind>$ ^høyre<vblex><sep><pres>$ ^ikkje<adv>$ ^*Jurafjella$ ^til<part><sep>$ ^*Alpane$' | apertium-transfer -n apertium-nn-nb.multiwords.t1x multiwords.bin |
|||
^Geografisk<adj><posi><nt><sg><ind>$ ^tilhøyre<vblex><sep><pres>$ ^ikkje<adv>$ ^*Jurafjella$ ^*Alpane$ |
|||
(although at the moment this puts all superblanks right before the word "tilhøyre") |
|||
There is more discussion on the page [[Separable verbs]]. |
|||
This method is not used at the moment in nn-nb. We may switch to using https://apertium.svn.sourceforge.net/svnroot/apertium/branches/gsoc2010/skh/multiword-reorder later, which implements the same method as a separate module. |
|||
== Dictionary peculiarities in nn-nb == |
|||
===Formatting=== |
|||
Formatting is as with [[Format dictionaries|apertium-dixtools]] / [[emacs|dix.el (M-x align)]]. (When <e>'s are indented too much this generally signifies that they haven't been thoroughly checked...) |
|||
===Morphological tags=== |
|||
Regardless of part-of-speech category (adj,n,det.dem,...) and whether all markers are represented we should at least have the same '''order of markers''': |
|||
<pre> |
|||
<CAT>... <GEN><NBR><ART> |
|||
</pre> |
|||
eg. |
|||
<pre> |
|||
<det><dem><mf><sg> |
|||
<adj><pst><mf><sg><ind> |
|||
<n><f><sg><def> |
|||
</pre> |
|||
In general, '''gender''' and '''definiteness''' are not specified in plural entries (except for nouns of course). |
|||
===Nouns=== |
|||
All bokmål '''feminine gender nouns''' are doubly listed in the bidix (<code>apertium-nn-nb.nn-nb.dix</code>), like so: |
|||
<pre> |
|||
<e> <p><l>jente<s n="n"/><s n="f"/></l><r>jente<s n="n"/><s n="m"/></r></p></e> |
|||
<e r="RL"><p><l>jente<s n="n"/><s n="f"/></l><r>jente<s n="n"/><s n="f"/></r></p></e> |
|||
</pre> |
|||
...but with the use of bidix pardefs, it now looks like |
|||
<pre> |
|||
<e> <p><l>jente<s n="n"/><s n="f"/></l><r>jente</r></p><par n="n_m_f"/></e> |
|||
</pre> |
|||
(Where ''Norsk ordbank'' has duplicate Nynorsk adjective entries with one m/f and one (LR'ed) masculine, I've just deleted the masculine entry.) |
|||
===Verbs=== |
|||
'''Verbs with adjective forms''' have these listed in their paradigms (eg. <code>s/etje__vblex_adj</code>) and have double bidix entries, like so: |
|||
<pre> |
|||
<e> <p><l>motsetje<s n="vblex"/></l> <r>motsette<s n="vblex"/></r></p></e> |
|||
<e> <p><l>motsetje<s n="adj"/></l> <r>motsette<s n="adj"/></r></p></e> |
|||
</pre> |
|||
(simplified with the bidix pardef <code>vblex_adj</code>.) |
|||
The reason for this is simply that the Oslo-Bergen Tagger CG expects it to be like this, so for now this seems the simplest solution (for transfer to other languages it should be relatively easy to change all <adj><pp> to <vblex><pp> -- in any case, the pp and pprs tags are only used by these verbal adjectives, never by "regular" ones). |
|||
'''st-verbs''' (marked <code>"pstv"</code>) sometimes don't have st-verb translations. If we're translating from an st-verb into a non-st-verb, the passive form of that verb is many times a good translation, for this we have the bidix pardef <code>"pstv_pass"</code> so that we get: |
|||
* takast (inf) => taes |
|||
* tekst (pres) => taes |
|||
* tekest (pp) => tatt |
|||
* tokst (prest) => tok |
|||
...which is about as good as we can hope for. The bidix entry looks like |
|||
<pre> |
|||
<e r="LR"><p><l>takast</l><r>ta</r></p><par n="pstv_pass"/></e> |
|||
</pre> |
|||
(since in the other direction we'll just use the Nynorsk lemma ''ta'') |
|||
However, some st-verbs translate more fluently into non-passive forms, so here we just have bidix entries that remove the <code>"pstv"</code> tag: |
|||
<pre> |
|||
<e r="LR"><p><l>devlast<s n="vblex"/><s n="pstv"/></l><r>krangle<s n="vblex"/></r></p></e> |
|||
</pre> |
|||
===Restricted multiwords=== |
|||
In some cases we've used simple '''multiwords''' to translate (especially some prepositions). However, in some cases these eat up other possible analyses, then we try to restrict them to ''generation''. In monodix we have: |
|||
<pre> |
|||
<e r="RL" lm="i dette"> <i>i<b/>dette</i><par n="i__pr"/></e> |
|||
</pre> |
|||
In this case, we might want to analyse ''dette'' as a determiner rather than a part of a preposition, so the safer route is to not analyse such MWE's since our tagger won't even be given a choice if we do. |
|||
===Forskjellar frå Norsk ordbank=== |
|||
Visse ord i Norsk ordbank har ulike oppslag, medan dei står under eitt oppslag i omsetjingsordboka til Apertium, t.d. inkluderer <i>-gjere</i>-ord i bidix ''-gjøre''-formene (desse har r="LR" i <code><pardef n="g/jere__vblex_adj"/></code> i nn.dix). |
|||
* Verb: |
|||
** -gjere/-gjøre |
|||
* Substantiv: |
|||
** -vit/-vett |
|||
... |
|||
===Store og små bokstavar=== |
|||
Om eit ord typisk har Stor Forbokstav, tek Apertium seg av dette (dvs. «A4-format» blir til «A4-format» sjølv om det står "a4-format" i ordbøkene), her gir me små bokstavar overalt i ordbøkene. |
|||
Om eit ord har store bokstavar ''andre stader enn første bokstav'', t.d. «BCG-vaksine», må me trikse litt. Det er ikkje lurt å ha store bokstavar i lemma (<r>), sidan apertium-transfer ikkje ser forskjell på kva for store bokstavar som kjem frå lemma og kva som kjem frå ordet me las (dvs. «Eg», «A4-format» og «BCG-vaksine» er alle representert på same måte i transfer, sjølv om ein i ordboka skreiv «eg» og «a4-format» men «BCG-vaksine»); og apertium-transfer må kunne endre bokstavstorleik når me flyttar rundt på ord: |
|||
* Vaksinens virkning -> Verknaden til vaksinen |
|||
er ein vanleg transfer-regel, kor «vaksinen» får liten forbokstav, samstundes vil me gjerne ha |
|||
* BCG-vaksinens virkning -> Verknaden til BCG-vaksinen |
|||
men transfer veit ikkje frå input at den store forbokstaven i «BCG-vaksinen» ikkje skal fjernast, transfer sender like godt ut «bcg-vaksine» (som gir # om me har <r>BCG-vaksine</r>). |
|||
Difor har me følgjande i ordbøkene: |
|||
<pre> |
|||
<pardef n="Bb"><e r="LR"><i>b</i></e><e r="RL"><p><l>B</l><r>b</r></p></e></pardef> |
|||
<pardef n="Cc"><e r="LR"><i>c</i></e><e r="RL"><p><l>C</l><r>c</r></p></e></pardef> |
|||
<pardef n="Gg"><e r="LR"><i>g</i></e><e r="RL"><p><l>G</l><r>g</r></p></e></pardef> |
|||
... |
|||
<e lm="BCG-vaksine"> <par n="Bb"/><par n="Cc"/><par n="Gg"/><i>-vaksin</i><par n="r/e__n"/></e> |
|||
</pre> |
|||
Så <r> har berre små bokstavar, men me skriv alltid med store bokstavar på rett plass (om transfer les ''berre'' store bokstavar, vil output au vere berre store bokstavar; det går alltid greit å gå frå små til store i output, men ikkje andre vegen). |
|||
== Enkel WSD / Orddisambiguering == |
|||
Eg har skrive «wsd» i ein del kommentarar rundt omkring i ordbøkene, t.d. i nn.dix står det |
|||
<pre> |
|||
<pardef n="v/ege__vblex"> |
|||
<!-- wsd todo --> |
|||
... |
|||
</pre> |
|||
sidan pardef-en <code>v/ege__vblex</code> er nytta båe for vege_vekt og for vege_veg. |
|||
===Valens=== |
|||
Paradigmedefinisjonar markert med «wsd todo» må etter kvart endrast for å få unike <r> til bruk i bidix, slik at me iallfall for dei formane som er ulike får disambiguering «gratis». Ved t.d. sterke vs svake bøyingar, ''slepte'' vs ''slapp''. For ''sleppe'', der den svake formen er kausativ-transitiv medan den sterke er intransitiv, har me følgjande pardef: |
|||
<pre> |
|||
<pardef n="sl/eppe__vblex_adj" c="-er/-te/-t is ¹ trans; -epp/-app/-oppe is intrans"> |
|||
<e> <p><l>oppen</l> <r>eppe<s n="adj"/><s n="pp"/><s n="f"/><s n="sg"/><s n="ind"/></r></p></e> |
|||
<e> <p><l>oppen</l> <r>eppe<s n="adj"/><s n="pp"/><s n="mf"/><s n="sg"/><s n="ind"/></r></p></e> |
|||
<e> <p><l>oppe</l> <r>eppe<s n="adj"/><s n="pp"/><s n="nt"/><s n="sg"/><s n="ind"/></r></p></e> |
|||
<e r="LR"><p><l>oppi</l> <r>eppe<s n="adj"/><s n="pp"/><s n="nt"/><s n="sg"/><s n="ind"/></r></p></e> |
|||
<e> <p><l>opne</l> <r>eppe<s n="adj"/><s n="pp"/><s n="pl"/></r></p></e> |
|||
<e> <p><l>opne</l> <r>eppe<s n="adj"/><s n="pp"/><s n="sg"/><s n="def"/></r></p></e> |
|||
<e> <p><l>eppande</l><r>eppe<s n="adj"/><s n="pprs"/></r></p></e> |
|||
<e> <p><l>epp</l> <r>eppe<s n="vblex"/><s n="imp"/></r></p></e> |
|||
<e> <p><l>epp</l> <r>eppe</r></p><par n="a_vs_e__vblex_inf"/></e> |
|||
<e> <p><l>eppast</l> <r>eppe<s n="vblex"/><s n="inf"/><s n="pasv"/></r></p></e> |
|||
<e> <p><l>oppe</l> <r>eppe<s n="vblex"/><s n="pp"/></r></p></e> |
|||
<e r="LR"><p><l>oppi</l> <r>eppe<s n="vblex"/><s n="pp"/></r></p></e> |
|||
<e> <p><l>epp</l> <r>eppe<s n="vblex"/><s n="pres"/></r></p></e> |
|||
<e> <p><l>app</l> <r>eppe<s n="vblex"/><s n="pret"/></r></p></e> |
|||
<e> <p><l>eppt</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="mf"/><s n="sg"/><s n="ind"/></r></p></e> |
|||
<e> <p><l>eppt</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="nt"/><s n="sg"/><s n="ind"/></r></p></e> |
|||
<e> <p><l>eppte</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="pl"/></r></p></e> |
|||
<e> <p><l>eppte</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="sg"/><s n="def"/></r></p></e> |
|||
<e> <p><l>eppande</l><r>eppe¹<s n="adj"/><s n="pprs"/></r></p></e> |
|||
<e> <p><l>epp</l> <r>eppe¹<s n="vblex"/><s n="imp"/></r></p></e> |
|||
<e> <p><l>epp</l> <r>eppe¹</r></p><par n="a_vs_e__vblex_inf"/></e> |
|||
<e> <p><l>eppast</l> <r>eppe¹<s n="vblex"/><s n="inf"/><s n="pasv"/></r></p></e> |
|||
<e> <p><l>eppt</l> <r>eppe¹<s n="vblex"/><s n="pp"/></r></p></e> |
|||
<e> <p><l>epper</l> <r>eppe¹<s n="vblex"/><s n="pres"/></r></p></e> |
|||
<e> <p><l>eppte</l> <r>eppe¹<s n="vblex"/><s n="pret"/></r></p></e> |
|||
</pardef> |
|||
</pre> |
|||
==CG: OBT== |
|||
===Konvertering=== |
|||
Føringsgrammatikken (CG) er konvertert frå Oslo-Bergen-taggaren. Me har ulike tags (sjå [[Norsk ordbank]]), hovudsakleg er det eit ein-til-ein-forhold, men visse stader er det meir komplisert (t.d. er ''pers'' i OBT representert som <p1>, <p2> eller <p3> i Apertium, medan <p1> i OBT blir ''pers 1''). Fila <code>dev/OBT-to-Apertium.sh</code> gjorde størsteparten av konverteringa. |
|||
===Store og små bokstavar=== |
|||
Sidan <code>lt-proc</code> representerer store bokstavar frå ordformen i sjølve lemma (baseform), måtte me før ha <code>ri</code> etter alle ord med små bokstavar i CG-filane, dvs. der OBT hadde <code>"<den>"</code> hadde me <code>"<den>"ri</code> (<code>ri</code> var ikkje nytta i OBT frå før av). Så om me las «Den var her.» ville <code>lt-proc</code> gi <code>^Den/Den<det>...</code>, utan <code>ri</code> ville regelen for ordet «den» ikkje køyrt. |
|||
Dette gjorde CG-en 6 gonger treigare... men no køyrer me lt-proc og cg-proc med <code>-w</code>; då har me ordboksform på lemma (<code>^Den/den<...>$ ^var/var<...>$</code>) fram til CG har køyrt, medan cg-proc sørger for at me så legg overflateform på lemma (<code>^Den/Den<...>$ ^var/var<...>$</code>), og me treng ikkje <code>ri</code> på alle strengene. |
|||
===Architecture of CG files=== |
|||
Each morphological disambiguator (<code>apertium-nn-nb.nn-nb.rlx</code> and <code>apertium-nn-nb.nb-nn.rlx</code>) has four domains, each with select rules before remove rules. From the Nynorsk CG, with line numbers: |
|||
<pre> |
|||
1053:CONSTRAINTS |
|||
1054:## select domain |
|||
... |
|||
4524:#CONSTRAINTS |
|||
4525:## remove domain |
|||
... |
|||
7162:CONSTRAINTS |
|||
7163:## select ndomain |
|||
... |
|||
42926:#CONSTRAINTS |
|||
42927:## remove ndomain |
|||
... |
|||
50186:CONSTRAINTS |
|||
50187:## select domain heur |
|||
... |
|||
50595:#CONSTRAINTS |
|||
50596:## remove domain heur |
|||
... |
|||
50738:CONSTRAINTS |
|||
50739:## select ndomain heur |
|||
... |
|||
52939:#CONSTRAINTS |
|||
52940:## remove ndomain heur |
|||
</pre> |
|||
There are no word-specific rules in <code>ndomain</code>s, only <code>domain</code>s. The last half is "heuristic" (ie. safer rules get tried first). |
|||
===Syntaks=== |
|||
Syntaksfilene er ikkje konvertert enno. |
|||
Desse er meint å køyre etter morfologisk disambiguering; i Apertium vil dei altså køyre slik: |
|||
... | cg-proc nn-nb.rlx.bin | cg-proc -w nn-nb.syntax.rlx.bin | apertium-tagger -g nn-nb.proc | ... |
|||
MAP-reglane i syntaksen legg til nye tags, som blir fjerna igjen i apertium-transfer. |
|||
Om me har taggar som @OBJ, kan dei nyttast til t.d.: |
|||
* Om vinteren selges nok kyrne => Om vinteren blir nok kyrne selt |
|||
ved å matche |
|||
<pre> |
|||
<pattern-item n="vblexprespass"/> |
|||
<pattern-item n="adv"/> |
|||
<pattern-item n="@obj"/> |
|||
</pre> |
|||
og |
|||
* Om vinteren selges nok de gamle kyrne => Om vinteren blir nok dei gamle kyrne selt |
|||
ved |
|||
<pre> |
|||
<pattern-item n="vblexprespass"/> |
|||
<pattern-item n="adv"/> |
|||
<pattern-item n="@det>"/> |
|||
<pattern-item n="@adj>"/> |
|||
<pattern-item n="@obj"/> |
|||
</pre> |
|||
==Testing== |
|||
* [[/Regression tests]] |
* [[/Regression tests]] |
||
* [[/Pending tests]] |
* [[/Pending tests]] |
||
* [[Using SVN]] |
|||
==Ressursar== |
|||
* [http://sourceforge.net/account/registration/ Create an account on SourceForge] |
|||
* [[Norsk ordbank]] |
* [[Norsk ordbank]] |
||
* [[North Germanic languages]] |
* [[North Germanic languages]] |
||
* [http://maximos.aksis.uib.no/Aksis-wiki/Oslo-Bergen_Tagger Oslo-Bergen- |
* [http://maximos.aksis.uib.no/Aksis-wiki/Oslo-Bergen_Tagger Oslo-Bergen-taggaren] CG-reglar (bokmål, nynorsk) + leksikon (binærfil) (sjå òg [http://svn.emmtee.net/tags/handon/uib/lisp/projects/morph/compounds.lisp lispkoden til samansetjingsanalysen]) |
||
* [http://omilia.uio.no/obt/ Oslo-Bergen-taggaren] (heimeside) |
|||
* [http://nn.wikipedia.org/wiki/Wikipedia:Gode_nynorskord Gode nynorskord] på Wikipedia – fin liste over gode omsetjingar frå bokmål til nynorsk |
|||
* [http://www.synonymer.no/tiki-listpages.php?initial=&find=&maxRecords=25 Synonymer.no] |
|||
* [http://www.nynorsk.org/ Nynorsk.org] – «valfridom er oppskrytt» |
|||
* [http://www.dokpro.uio.no/bokmaal/nyord/nyord_ramme.html Nyord i norsk] (søk etter t.d. pleonasme, ulike typar samansetjing, anglisisme, komposisjonsfuge (epentese), osb.) |
|||
==Further reading== |
|||
* Unhammer, K. and Trosterud, T. (2009) [http://hdl.handle.net/10045/12025 "Reuse of free resources in machine translation between Nynorsk and Bokmål"]. ''First International Workshop on Free/Open-Source Rule-Based Machine Translation, Alicante, Spain'' |
|||
[[Category:Languages]] |
[[Category:Languages]] |
Latest revision as of 11:56, 16 December 2020
Dette er ei side med praktisk informasjon for alle som vil bidra til maskinomsetjingsprosjekta til og frå norsk. Sjå Northern Sámi and Norwegian Bokmål om du er interessert i samisk.
Nyaste offisielle utgåve av språkparet er 1.2.0 (sjå https://github.com/apertium/apertium-nno-nob/releases ), ei oppsummering av endringane står i fila NEWS.
apertium-nno-nob er sponsa av:
- Google Summer of Code (2009, første utgåve, v0.6.0)
- Wikimedia Foundation (2015–2016, som ein del av Scandinavian_MT_project, v1.1.0)
- Nynorsk Pressekontor og Kulturdepartementet (2018–2019, v1.2.0)
Sjå òg artikkelen om apertium-nno-nob.
Vil du bidra?[edit]
Det finst mange måtar å bidra til prosjektet.
- Om du ikkje har så mykje programmeringskunnskap kan du likevel enkelt bidra ved å leggje til forslag til omsetjingar (wiki).
- Om du har småendringar, ein programretting eller forslag til endringar kan du ta kontakt med t.d. Unhammer eller andre involverte.
- For å kunne gjere endringar direkte i koden må du ha ein konto på Github, og du må sjekke ut kjeldekoden via git (sjå nedanfor).
Desse er dei viktige filene for prosjektet for maskinomsetjing mellom nynorsk og bokmål:
- Omsetjingsordboka / transferleksikonet:
- Dei einspråklege ordbøkene (som gir morfologiske analysatorar/generatorar):
- CG-reglar for morfologisk disambiguering:
Les òg sida Contributing to an existing pair, som inneheld mykje nyttig informasjon.
Merk at oppslaga (<e>
) kan vere merka med ein restriksjon, <e r="LR">
, som viser at oppslaget vil bli analysert, men ikkje generert (dette kan vere nyttig med t.d. klammeformer).
Installasjon[edit]
- Sjå /Installasjon viss du vil installere nyaste utgåve av apertium-nno-nob, og sjølve apertium osb.
- Generell installasjonsinformasjon finn du på Installation
Statistikk og status[edit]
Github har ei side der du kan sjå nyaste endringar i apertium-nno-nob.
WER på NTB-nyheiter 2018-08-27[edit]
På NTB-nyheiter har apertium-nno-nob ein median-WER på under 5 %.
Dette er frå ein test på 1221 nyheitsartiklar med korrektur, der me finn WER på kvar enkeltartikkel og så tar median (og ulike typar snitt) av WER:
date | hmean | gmean | median | amean | stddev ‖ 2019-08-01-editinput | 2.81 | 2.71 | 3.95 | 4.98 | 4.56 ‖ 2019-08-27_e0bab1b | 3.07 | 3.22 | 4.37 | 5.15 | 4.24 ‖
Linja 2019-08-01-editinput er WER på «editinput», dvs. input til korrekturane frå apertium, der editinput blei laga av ulike apertium-utgåver frå ca. august 2019.
Linja 2019-08-27_e0bab1b er samanlikning mellom dei korrekturane og ei ny omsetjing (med versjonane [1] [2] [3]).
Dekning på ordbøkene[edit]
Språk | # | @ | / (bidix) | / (gen) | Dekning på Wikipedia | [#@/] på 20000 linjer frå Wikipedia |
---|---|---|---|---|---|---|
Nynorsk | 0 | 0 | 0 | 0 | 88,9 % | 0 |
Bokmål | 0 | 0 | 0 | 0 | 90,0 % | 0 |
Dekninga med samansetjingsanalyse av substantiv på bokmålswikipedia er: 91,6 %
Dei tre første kolonnene får du vha. skriptet dev/testvoc.sh
. Teikna #, /, @ og * er forklart på sida Apertium stream format. Skriptet dev/coverage.sh
gir dekning. Feilkoder i korpus får du ved å køyre cat /korpora/nb.txt | sed 's/[@#]/_/g'| fold | head -n 20000 | apertium-nb-nn | ack '[@#]'
(evt. grep -c
), og omvendt. Korpusa er nnwiki-20090119-pages-articles.xml.bz2 og nowiki-20090108-pages-articles.xml.bz2 (sjå download.wikimedia.org).
Lister over kor mange lemma kvar ordbok har:
WER-test 2009-08-28[edit]
diff på maskinomsetjing og redigert versjon
Statistics about input files ------------------------------------------------------- Number of words in reference: 3750 Number of words in test: 3736 Number of unknown words (marked with a star) in test: 653 Percentage of unknown words: 17.48 % Results when removing unknown-word marks (stars) ------------------------------------------------------- Edit distance: 400 Word error rate (WER): 10.71 % Number of position-independent word errors: 343 Position-independent word error rate (PER): 9.18 % Results when unknown-word marks (stars) are not removed ------------------------------------------------------- Edit distance: 824 Word Error Rate (WER): 22.06 % Number of position-independent word errors: 769 Position-independent word error rate (PER): 20.58 % Statistics about the translation of unknown words ------------------------------------------------------- Number of unknown words which were free rides: 424 Percentage of unknown words that were free rides: 64.93 %
Sjå au orddiff med og utan samansetjingsanalyse.
Pipeline[edit]
Generell TODO-liste[edit]
- Utvide vokabular/bidix (meir dekning)
- f.eks. med
lt-expand full.nb.dix | cut -d: -f2 | grep '<POS>' | sed 's/<.*//' | uniq > sjekke
oghunspell check -d nn sjekke
- f.eks. med
- Fleire høgfrekvente partikkelverb
- Fleire ord som treng spesielle eigedomspreposisjonar (kapteinen på skipet, motoren i bilen), sjå listene "gen-på" og "gen-i" i nb-nn.t1x
- Konvertere syntaksdelen av Oslo-Bergen-taggaren; me bør vere sikre på om ein NP er subjekt eller objekt (osb.) før me flyttar ein heil NP
- Ny variant basert på fellesordlista (ev. la -a-infinitivsvarianten følgja den)
- Prøv PDK/resectioning på CG-en (evaluer mot språkmodell på målspråket eller parallellkorpus)
Variantar og valfridom[edit]
apertium-nno-nob har ein alternativ nynorsk-variant: nno_e gir e-form av verb i infinitiv («å sykle»), bruk apertium nob-nno_e
.
Det hadde sjølvsagt vore kult å få like mykje valfridom som dette, men det krev litt arbeid...
Ein del sideformar og slikt har iallfall fått paradigme på toppen av filene, sjå t.d. «mel_LR_mjøl» i nb.dix; dette paradigmet går på alle ord som kan ha anten mel(k) eller mjøl(k) i seg (hvetemel, hvetemjøl). Med god bruk av slike paradigme bør me vere eitt steg nærare slike enkle innstillingar som Nyno har; i tillegg til at det blir enklare å raskt endre seg til nye normalar. Ein annan fordel er at me slepp å ha ein haug med LR/RL-element i bidix, som raskt blir rotete og vanskeleg å sjekke for konsistens (tidlegare sto det t.d. ein RL på bokmål «mjølk» medan samansette ord med «-mjølk-» i seg ikkje hadde RL).
Multiword expressions, particle verbs[edit]
nn generally uses more particle verbs than nb, so going from nb->nn we have to be able to generate these; similarly, from nn->nb we might want to analyse particle verbs.
Generation[edit]
- hun bekjempet ofte fiender => ho kjempa ofte mot fiendar
Multiwords (mwe's) like this are typically represented in apertium like:
<e lm="kjempe mot"> <i>kjemp</i><par n="mo/e__vblex"/> <p><l><b/>mot</l> <r><g><b/>mot</g></r> </p> </e>
(see the official documentation, pp.46--47.)
'kjempe' is the inflected lemma head (lemh), ' mot' the invariable lemma tail (lemq). However, the problem here is that we may have strings of arbitrary adverbs in between the two (or even objects, for some mwe's), so after bidix has transferred "bekjempet" to "kjempa_mot", transfer needs to turn this into "kjempa(lemh) ofte<adv> mot(lemq)". This looks a bit hacky, but works quite well. See this page for details.
Analysis[edit]
- Geografisk høyrer ikkje Jurafjella til Alpane, men geologisk gjer dei det. => Geografisk tilhører ikke Jurafjellene Alpene, men geologisk gjør de det.
For analysis, dev/apertium-nn-nb.multiwords.t1x has a possible solution.
echo '^Geografisk<adj><posi><nt><sg><ind>$ ^høyre<vblex><sep><pres>$ ^ikkje<adv>$ ^*Jurafjella$ ^til<part><sep>$ ^*Alpane$' | apertium-transfer -n apertium-nn-nb.multiwords.t1x multiwords.bin ^Geografisk<adj><posi><nt><sg><ind>$ ^tilhøyre<vblex><sep><pres>$ ^ikkje<adv>$ ^*Jurafjella$ ^*Alpane$
(although at the moment this puts all superblanks right before the word "tilhøyre")
There is more discussion on the page Separable verbs.
This method is not used at the moment in nn-nb. We may switch to using https://apertium.svn.sourceforge.net/svnroot/apertium/branches/gsoc2010/skh/multiword-reorder later, which implements the same method as a separate module.
Dictionary peculiarities in nn-nb[edit]
Formatting[edit]
Formatting is as with apertium-dixtools / dix.el (M-x align). (When <e>'s are indented too much this generally signifies that they haven't been thoroughly checked...)
Morphological tags[edit]
Regardless of part-of-speech category (adj,n,det.dem,...) and whether all markers are represented we should at least have the same order of markers:
<CAT>... <GEN><NBR><ART>
eg.
<det><dem><mf><sg> <adj><pst><mf><sg><ind> <n><f><sg><def>
In general, gender and definiteness are not specified in plural entries (except for nouns of course).
Nouns[edit]
All bokmål feminine gender nouns are doubly listed in the bidix (apertium-nn-nb.nn-nb.dix
), like so:
<e> <p><l>jente<s n="n"/><s n="f"/></l><r>jente<s n="n"/><s n="m"/></r></p></e> <e r="RL"><p><l>jente<s n="n"/><s n="f"/></l><r>jente<s n="n"/><s n="f"/></r></p></e>
...but with the use of bidix pardefs, it now looks like
<e> <p><l>jente<s n="n"/><s n="f"/></l><r>jente</r></p><par n="n_m_f"/></e>
(Where Norsk ordbank has duplicate Nynorsk adjective entries with one m/f and one (LR'ed) masculine, I've just deleted the masculine entry.)
Verbs[edit]
Verbs with adjective forms have these listed in their paradigms (eg. s/etje__vblex_adj
) and have double bidix entries, like so:
<e> <p><l>motsetje<s n="vblex"/></l> <r>motsette<s n="vblex"/></r></p></e> <e> <p><l>motsetje<s n="adj"/></l> <r>motsette<s n="adj"/></r></p></e>
(simplified with the bidix pardef vblex_adj
.)
The reason for this is simply that the Oslo-Bergen Tagger CG expects it to be like this, so for now this seems the simplest solution (for transfer to other languages it should be relatively easy to change all <adj><pp> to <vblex><pp> -- in any case, the pp and pprs tags are only used by these verbal adjectives, never by "regular" ones).
st-verbs (marked "pstv"
) sometimes don't have st-verb translations. If we're translating from an st-verb into a non-st-verb, the passive form of that verb is many times a good translation, for this we have the bidix pardef "pstv_pass"
so that we get:
- takast (inf) => taes
- tekst (pres) => taes
- tekest (pp) => tatt
- tokst (prest) => tok
...which is about as good as we can hope for. The bidix entry looks like
<e r="LR"><p><l>takast</l><r>ta</r></p><par n="pstv_pass"/></e>
(since in the other direction we'll just use the Nynorsk lemma ta)
However, some st-verbs translate more fluently into non-passive forms, so here we just have bidix entries that remove the "pstv"
tag:
<e r="LR"><p><l>devlast<s n="vblex"/><s n="pstv"/></l><r>krangle<s n="vblex"/></r></p></e>
Restricted multiwords[edit]
In some cases we've used simple multiwords to translate (especially some prepositions). However, in some cases these eat up other possible analyses, then we try to restrict them to generation. In monodix we have:
<e r="RL" lm="i dette"> <i>i<b/>dette</i><par n="i__pr"/></e>
In this case, we might want to analyse dette as a determiner rather than a part of a preposition, so the safer route is to not analyse such MWE's since our tagger won't even be given a choice if we do.
Forskjellar frå Norsk ordbank[edit]
Visse ord i Norsk ordbank har ulike oppslag, medan dei står under eitt oppslag i omsetjingsordboka til Apertium, t.d. inkluderer -gjere-ord i bidix -gjøre-formene (desse har r="LR" i <pardef n="g/jere__vblex_adj"/>
i nn.dix).
- Verb:
- -gjere/-gjøre
- Substantiv:
- -vit/-vett
...
Store og små bokstavar[edit]
Om eit ord typisk har Stor Forbokstav, tek Apertium seg av dette (dvs. «A4-format» blir til «A4-format» sjølv om det står "a4-format" i ordbøkene), her gir me små bokstavar overalt i ordbøkene.
Om eit ord har store bokstavar andre stader enn første bokstav, t.d. «BCG-vaksine», må me trikse litt. Det er ikkje lurt å ha store bokstavar i lemma (<r>), sidan apertium-transfer ikkje ser forskjell på kva for store bokstavar som kjem frå lemma og kva som kjem frå ordet me las (dvs. «Eg», «A4-format» og «BCG-vaksine» er alle representert på same måte i transfer, sjølv om ein i ordboka skreiv «eg» og «a4-format» men «BCG-vaksine»); og apertium-transfer må kunne endre bokstavstorleik når me flyttar rundt på ord:
- Vaksinens virkning -> Verknaden til vaksinen
er ein vanleg transfer-regel, kor «vaksinen» får liten forbokstav, samstundes vil me gjerne ha
- BCG-vaksinens virkning -> Verknaden til BCG-vaksinen
men transfer veit ikkje frå input at den store forbokstaven i «BCG-vaksinen» ikkje skal fjernast, transfer sender like godt ut «bcg-vaksine» (som gir # om me har <r>BCG-vaksine</r>).
Difor har me følgjande i ordbøkene:
<pardef n="Bb"><e r="LR"><i>b</i></e><e r="RL"><p><l>B</l><r>b</r></p></e></pardef> <pardef n="Cc"><e r="LR"><i>c</i></e><e r="RL"><p><l>C</l><r>c</r></p></e></pardef> <pardef n="Gg"><e r="LR"><i>g</i></e><e r="RL"><p><l>G</l><r>g</r></p></e></pardef> ... <e lm="BCG-vaksine"> <par n="Bb"/><par n="Cc"/><par n="Gg"/><i>-vaksin</i><par n="r/e__n"/></e>
Så <r> har berre små bokstavar, men me skriv alltid med store bokstavar på rett plass (om transfer les berre store bokstavar, vil output au vere berre store bokstavar; det går alltid greit å gå frå små til store i output, men ikkje andre vegen).
Enkel WSD / Orddisambiguering[edit]
Eg har skrive «wsd» i ein del kommentarar rundt omkring i ordbøkene, t.d. i nn.dix står det
<pardef n="v/ege__vblex"> <!-- wsd todo --> ...
sidan pardef-en v/ege__vblex
er nytta båe for vege_vekt og for vege_veg.
Valens[edit]
Paradigmedefinisjonar markert med «wsd todo» må etter kvart endrast for å få unike <r> til bruk i bidix, slik at me iallfall for dei formane som er ulike får disambiguering «gratis». Ved t.d. sterke vs svake bøyingar, slepte vs slapp. For sleppe, der den svake formen er kausativ-transitiv medan den sterke er intransitiv, har me følgjande pardef:
<pardef n="sl/eppe__vblex_adj" c="-er/-te/-t is ¹ trans; -epp/-app/-oppe is intrans"> <e> <p><l>oppen</l> <r>eppe<s n="adj"/><s n="pp"/><s n="f"/><s n="sg"/><s n="ind"/></r></p></e> <e> <p><l>oppen</l> <r>eppe<s n="adj"/><s n="pp"/><s n="mf"/><s n="sg"/><s n="ind"/></r></p></e> <e> <p><l>oppe</l> <r>eppe<s n="adj"/><s n="pp"/><s n="nt"/><s n="sg"/><s n="ind"/></r></p></e> <e r="LR"><p><l>oppi</l> <r>eppe<s n="adj"/><s n="pp"/><s n="nt"/><s n="sg"/><s n="ind"/></r></p></e> <e> <p><l>opne</l> <r>eppe<s n="adj"/><s n="pp"/><s n="pl"/></r></p></e> <e> <p><l>opne</l> <r>eppe<s n="adj"/><s n="pp"/><s n="sg"/><s n="def"/></r></p></e> <e> <p><l>eppande</l><r>eppe<s n="adj"/><s n="pprs"/></r></p></e> <e> <p><l>epp</l> <r>eppe<s n="vblex"/><s n="imp"/></r></p></e> <e> <p><l>epp</l> <r>eppe</r></p><par n="a_vs_e__vblex_inf"/></e> <e> <p><l>eppast</l> <r>eppe<s n="vblex"/><s n="inf"/><s n="pasv"/></r></p></e> <e> <p><l>oppe</l> <r>eppe<s n="vblex"/><s n="pp"/></r></p></e> <e r="LR"><p><l>oppi</l> <r>eppe<s n="vblex"/><s n="pp"/></r></p></e> <e> <p><l>epp</l> <r>eppe<s n="vblex"/><s n="pres"/></r></p></e> <e> <p><l>app</l> <r>eppe<s n="vblex"/><s n="pret"/></r></p></e> <e> <p><l>eppt</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="mf"/><s n="sg"/><s n="ind"/></r></p></e> <e> <p><l>eppt</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="nt"/><s n="sg"/><s n="ind"/></r></p></e> <e> <p><l>eppte</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="pl"/></r></p></e> <e> <p><l>eppte</l> <r>eppe¹<s n="adj"/><s n="pp"/><s n="sg"/><s n="def"/></r></p></e> <e> <p><l>eppande</l><r>eppe¹<s n="adj"/><s n="pprs"/></r></p></e> <e> <p><l>epp</l> <r>eppe¹<s n="vblex"/><s n="imp"/></r></p></e> <e> <p><l>epp</l> <r>eppe¹</r></p><par n="a_vs_e__vblex_inf"/></e> <e> <p><l>eppast</l> <r>eppe¹<s n="vblex"/><s n="inf"/><s n="pasv"/></r></p></e> <e> <p><l>eppt</l> <r>eppe¹<s n="vblex"/><s n="pp"/></r></p></e> <e> <p><l>epper</l> <r>eppe¹<s n="vblex"/><s n="pres"/></r></p></e> <e> <p><l>eppte</l> <r>eppe¹<s n="vblex"/><s n="pret"/></r></p></e> </pardef>
CG: OBT[edit]
Konvertering[edit]
Føringsgrammatikken (CG) er konvertert frå Oslo-Bergen-taggaren. Me har ulike tags (sjå Norsk ordbank), hovudsakleg er det eit ein-til-ein-forhold, men visse stader er det meir komplisert (t.d. er pers i OBT representert som <p1>, <p2> eller <p3> i Apertium, medan <p1> i OBT blir pers 1). Fila dev/OBT-to-Apertium.sh
gjorde størsteparten av konverteringa.
Store og små bokstavar[edit]
Sidan lt-proc
representerer store bokstavar frå ordformen i sjølve lemma (baseform), måtte me før ha ri
etter alle ord med små bokstavar i CG-filane, dvs. der OBT hadde "<den>"
hadde me "<den>"ri
(ri
var ikkje nytta i OBT frå før av). Så om me las «Den var her.» ville lt-proc
gi ^Den/Den<det>...
, utan ri
ville regelen for ordet «den» ikkje køyrt.
Dette gjorde CG-en 6 gonger treigare... men no køyrer me lt-proc og cg-proc med -w
; då har me ordboksform på lemma (^Den/den<...>$ ^var/var<...>$
) fram til CG har køyrt, medan cg-proc sørger for at me så legg overflateform på lemma (^Den/Den<...>$ ^var/var<...>$
), og me treng ikkje ri
på alle strengene.
Architecture of CG files[edit]
Each morphological disambiguator (apertium-nn-nb.nn-nb.rlx
and apertium-nn-nb.nb-nn.rlx
) has four domains, each with select rules before remove rules. From the Nynorsk CG, with line numbers:
1053:CONSTRAINTS 1054:## select domain ... 4524:#CONSTRAINTS 4525:## remove domain ... 7162:CONSTRAINTS 7163:## select ndomain ... 42926:#CONSTRAINTS 42927:## remove ndomain ... 50186:CONSTRAINTS 50187:## select domain heur ... 50595:#CONSTRAINTS 50596:## remove domain heur ... 50738:CONSTRAINTS 50739:## select ndomain heur ... 52939:#CONSTRAINTS 52940:## remove ndomain heur
There are no word-specific rules in ndomain
s, only domain
s. The last half is "heuristic" (ie. safer rules get tried first).
Syntaks[edit]
Syntaksfilene er ikkje konvertert enno.
Desse er meint å køyre etter morfologisk disambiguering; i Apertium vil dei altså køyre slik:
... | cg-proc nn-nb.rlx.bin | cg-proc -w nn-nb.syntax.rlx.bin | apertium-tagger -g nn-nb.proc | ...
MAP-reglane i syntaksen legg til nye tags, som blir fjerna igjen i apertium-transfer.
Om me har taggar som @OBJ, kan dei nyttast til t.d.:
- Om vinteren selges nok kyrne => Om vinteren blir nok kyrne selt
ved å matche
<pattern-item n="vblexprespass"/> <pattern-item n="adv"/> <pattern-item n="@obj"/>
og
- Om vinteren selges nok de gamle kyrne => Om vinteren blir nok dei gamle kyrne selt
ved
<pattern-item n="vblexprespass"/> <pattern-item n="adv"/> <pattern-item n="@det>"/> <pattern-item n="@adj>"/> <pattern-item n="@obj"/>
Testing[edit]
Ressursar[edit]
- Norsk ordbank
- North Germanic languages
- Oslo-Bergen-taggaren CG-reglar (bokmål, nynorsk) + leksikon (binærfil) (sjå òg lispkoden til samansetjingsanalysen)
- Oslo-Bergen-taggaren (heimeside)
- Gode nynorskord på Wikipedia – fin liste over gode omsetjingar frå bokmål til nynorsk
- Synonymer.no
- Nynorsk.org – «valfridom er oppskrytt»
- Nyord i norsk (søk etter t.d. pleonasme, ulike typar samansetjing, anglisisme, komposisjonsfuge (epentese), osb.)
Further reading[edit]
- Unhammer, K. and Trosterud, T. (2009) "Reuse of free resources in machine translation between Nynorsk and Bokmål". First International Workshop on Free/Open-Source Rule-Based Machine Translation, Alicante, Spain