Apertium

Apertium Descrierea imaginii Apertium-tolk.png. informație
Ultima versiune 3.7.1 (21 decembrie 2020)
Depozit github.com/apertium
Scris in C ++ și Java
Mediu inconjurator Cross-platform
Limbi Multilingv ( d )
Tip Software de traducere automată ( d )
Politica de distribuție Gratuit
Licență GNU GPL
Site-ul web www.apertium.org

Apertium este un software pentru traducere automată bazat pe dicționare și reguli de transfer dezvoltat inițial de Universitatea din Alicante . Este un software gratuit distribuit în condițiile licenței GNU GPL 2.0.

Originea și evoluția proiectului

Proiectul Apertium a fost creat de grupul de cercetare Transducens al Departamentului de Limbi și Sisteme de Calcul de la Universitatea din Alicante .

Acesta este unul dintre cele două răspunsuri la proiectul Opentrad (Free Machine Translation Software for Spanish State Languages) lansat în 2004–2005.

Inițial, Apertium a fost, prin urmare, conceput pentru a permite traducerea unor perechi de limbi similare, cum ar fi limbile vorbite în Spania. Primele perechi de limbi validate în 2005 permit traduceri în spaniolă ⇆ catalană, spaniolă ⇆ galiciană și spaniolă ⇆ portugheză.

De-a lungul anilor, proiectul Apertium s-a deschis către alte perechi de limbi: ambele grupuri de limbi apropiate unele de altele, cum ar fi limbile scandinave, precum și pentru traducerea unor limbi mai îndepărtate. În 2012 există chiar proiecte de traducători între unele limbi asiatice și engleză.

În prezent, studenți din diferite universități din Europa și din restul lumii și profesori sunt implicați în acest proiect, unii ca parte a pregătirii unui doctorat. Din 2008 , echipa proiectului Apertium a oferit subiecte de studiu pentru Google Summer of Code, care le permite studenților să lucreze pe software-ul gratuit în timpul verii.

Cum funcționează Apertium

Apertium este un sistem de traducere bazat pe dicționare și reguli de transfer. Este alcătuit din 3 părți:

  1. Un motor de traducere automată independent de limbă (deși a fost perfecționat de-a lungul anilor pentru a gestiona particularitățile noilor limbi). Este scris în C ++ .
  2. Instrumente pentru gestionarea datelor lingvistice necesare traducerii unei perechi de limbi.
  3. Perechi de limbi. Acestea sunt prezentate ca fișiere XML folosind în prezent setul de caractere UTF-8 .

În practică, fișierele XML care constituie perechea de limbi sunt compilate înainte de a putea fi utilizate de motorul de traducere. Motorul de traducere este alcătuit dintr-un set de instrumente, fiecare efectuând o parte a procesării:

Pentru a lucra cu o pereche de limbi, motorul de traducere Apertium folosește fișiere de dicționar și transferă fișiere.

Dicționare morfologice

În primul rând, fiecare pereche de limbi include un dicționar morfologic pentru fiecare limbă care permite, pentru fiecare cuvânt listat al acestei limbi, să găsească într-un text diferitele forme pe care le poate avea acest cuvânt:

Dicționarul morfologic începe cu alfabetul caracterelor folosite.

În cazul limbii engleze, putem fi mulțumiți de caractere neaccentuate:

<alphabet>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</alphabet>

Alfabetul francez presupune că sunt furnizate caractere suplimentare. Au fost adăugate și numerele:

<alphabet>ÀÂÄÇÈÉÊËÎÔàâäçèéêëîïôùûABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</alphabet>

Apoi, trebuie să definim diferitele tipuri de cuvinte pe care le vom întâlni și caracteristicile lor. De exemplu :

<sdefs> <sdef n="nom"/> <sdef n="verbe"/> <sdef n="adjectif"/> .... </sdefs>

În practică, etichetele <sdef>sunt mult mai numeroase (câteva zeci), iar tipurile enumerate au denumiri prescurtate.

În cele din urmă, cea mai mare parte este cea care vă va permite să găsiți diferitele cuvinte ale limbii sub toate formele lor. Dicționarul morfologic include, de asemenea, indicații privind natura cuvântului și caracteristicile gramaticale ale diferitelor sale forme.

De exemplu, pentru numele bere , putem avea:

<e> <p> <l>bière</l> <r>bière<s n="nom"/><s n="feminin"/><s n="singulier"/></r> </p> </e> <e> <p> <l>bières</l> <r>bière<s n="nom"/><s n="feminin"/><s n="pluriel"/></r> </p> </e>

Cuvântul poate fi găsit în două forme lexicale:

  • bere: care este un substantiv la feminin singular,
  • beri: care este un substantiv feminin plural.

În ceea ce privește toate cuvintele limbii, este necesar să putem analiza diferitele forme lexicale posibile (care se află în etichetă <l>), scrierea dicționarelor morfologice poate deveni rapid plictisitoare.

De asemenea, proiectul Apertium a planificat definirea paradigmelor pentru fabricarea automată a diferitelor forme de cuvinte dintr-un exemplu.

Astfel, multe nume în franceză (și în engleză) se schimbă de la singular la plural prin adăugarea literei s .

Definiți doar această regulă pentru una dintre ele, de exemplu cuvântul bere . Este suficient să atașați textul precedent cu etichete <pardef>:

<pardef n="biere__n"> <e> <p> <l/> <r><s n="nom"/><s n="feminin"/><s n="singulier"/></r> </p> </e> <e> <p> <l>s</l> <r><s n="nom"/><s n="feminin"/><s n="pluriel"/></r> </p> </e> </pardef>

Identificatorul „bere__n” corespunde unei categorii de cuvinte care se comportă în franceză ca numele feminin bere , adică care trec de la singular la plural prin adăugarea unui s .

În același mod, va trebui făcută o paradigmă similară pentru numele mele masculine care merg de la singular la plural prin adăugarea unui s . De exemplu numele „accesoriu”.

Alte nume există la masculin și la feminin, de exemplu lup pentru care există următoarea paradigmă:

<pardef n="lou/p__n"> <e><p><l>p</l><r>p<s n="nom"/><s n="masculin"/><s n="singulier"/></r></p></e> <e><p><l>ps</l><r>p<s n="nom"/><s n="masculin"/><s n="pluriel"/></r></p></e> <e><p><l>ve</l><r>p<s n="nom"/><s n="feminin"/><s n="singulier"/></r></p></e> <e><p><l>ves</l><r>p<s n="nom"/><s n="feminin"/><s n="pluriel"/></r></p></e> </pardef>

Apoi putem defini cuvintele mai simplu folosind paradigme:

<section id="main" type="standard"> <e lm="bière"><i>bière</i><par n="bière__n"/></e> <e lm="école"><i>école</i><par n="bière__n"/></e> <e lm="ordinateur"><i>ordinateur</i><par n="accessoire__n"/></e> <e lm="maison"><i>maison</i><par n="bière__n"/></e> <e lm="loup"><i>lou</i><par n="loup__n"/></e> .... </section>

Paradigmele sunt și mai interesante pentru verbele obișnuite. Definim odată pentru totdeauna cum se conjugă aceste verbe și apoi este suficient să enumerăm diferitele verbe ale unui anumit tip la infinitiv.

Definiția cuvântului conține o parte invariantă în interiorul etichetelor <i> ... </i> . Pentru unele cuvinte, partea invariantă corespunde lemei. Dar uneori este mai scurt ca pentru cuvântul lup și mai general pentru verbe.

Dicționare bilingve

Dicționarele bilingve vă permit să traduceți cuvinte între 2 limbi. Ca și în cazul dicționarelor morfologice, sunt specificate caracteristicile gramaticale ale cuvintelor celor două limbi. Exemplu:

<e><p><l>skingomz<s n="n"/><s n="f"/></l><r>radio<s n="n"/><s n="f"/></r></p></e> <e><p><l>skinwel<s n="n"/><s n="m"/></l><r>télévision<s n="n"/><s n="f"/></r></p></e>

poate fi interpretat ca:

  • Cuvântul skingomz este un nume feminin care este tradus în franceză prin radio, care este, de asemenea, un nume feminin.
  • Cuvântul skinwel este un nume masculin care este tradus în franceză de televiziune, care este un nume feminin.

Putem vedea în treacăt că termenii substantivelor , masculin , feminin sunt aici sub formă prescurtată. Utilizarea mnemonicii scurte este mult mai frecventă în fișierele Apertium decât numele complete.

În cazul acestor 2 linii, traducerea se poate face în ambele direcții:

  • fie din partea stângă ( l tânga în limba engleză) în partea dreaptă ( r reptului în limba engleză). În acest caz, la etapa de transfer lexical , textul dintre <l>... et ...</l>va fi înlocuit cu cel dintre<r>... et ...</r>
  • fie din partea dreaptă până în partea stângă. În acest caz, textul dintre <r>... et ...</r>va fi înlocuit cu cel dintre<l>... et ...</l>

Să aruncăm o privire la un exemplu puțin mai complicat:

<e r="LR"><p><l>adeiladour<s n="n"/><s n="m"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e> <e r="LR"><p><l>adeiladour<s n="n"/><s n="f"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e> <e r="RL"><p><l>adeiladour<s n="n"/><s n="GD"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e>

poate fi interpretat ca:

  • Cuvântul adeiladour folosit ca nume masculin se traduce în franceză ca architecte care este un nume masculin sau feminin.
  • Cuvântul adeiladour folosit ca nume feminin se traduce în franceză de architecte care este un nume masculin sau feminin.
  • Cuvântul arhitect care este un nume masculin sau feminin se traduce prin numele adeiladour .

În realitate, (dicționarele bilingve nu o menționează, dar problema a fost abordată în dicționarul morfologic), cuvântul adeiladour prezintă mai multe scrieri în funcție în special dacă este masculin sau feminin. Dacă luăm în considerare și singularul și pluralul, obținem un total de 6 posibilități:

adeiladour:adeiladour<n><m><sg> → architecte:architecte<n><mf><sg> adeiladourien:adeiladour<n><m><pl> → architectes:architecte<n><mf><pl> adeiladourez:adeiladour<n><f><sg> → architecte:architecte<n><mf><sg> adeiladourezed:adeiladour<n><f><pl> → architectes:architecte<n><mf><pl>  ?:adeiladour<n><GD><sg> ← architecte:architecte<n><mf><sg>  ?:adeiladour<n><GD><pl> ← architecte:architecte<n><mf><pl>

Să revenim la explicațiile anterioare:

Pentru a traduce în franceză:

  • Cuvântul adeiladour este un substantiv la singularul masculin care se traduce în franceză prin architecte care este un substantiv la masculin sau la feminin singular.
  • Cuvântul adeiladourien este un substantiv masculin plural care se traduce în franceză de către arhitecți, care este un substantiv plural masculin sau feminin.
  • Cuvântul adeiladourez este un substantiv feminin singular care se traduce în franceză prin architecte care este un substantiv masculin sau feminin singular.
  • Cuvântul adeiladourezed este un substantiv feminin plural care se traduce în franceză de către arhitecți, care este un substantiv plural masculin sau feminin.

Pentru a traduce din franceză în limba din stânga:

  • Cuvântul arhitect care este un substantiv la masculin sau feminin singular este tradus prin cuvântul adeiladour folosit la singular. Scrierea exactă a acestui cuvânt (în acest caz adeiladour sau adeiladourez ) va fi decisă în funcție de sexul cuvântului care urmează să fie determinat.
  • Cuvântul arhitecți care este un substantiv la pluralul masculin sau feminin este tradus prin cuvântul adeiladour folosit la plural. Scrierea exactă a acestui cuvânt (în acest caz adeiladourien sau adeiladourezed ) va fi decisă în funcție de sexul cuvântului care urmează să fie determinat.

Dacă ne întoarcem la începutul acestui 2 - lea  exemplu:

<e r="LR"><p><l>adeiladour<s n="n"/><s n="m"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e> <e r="LR"><p><l>adeiladour<s n="n"/><s n="f"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e> <e r="RL"><p><l>adeiladour<s n="n"/><s n="GD"/></l><r>architecte<s n="n"/><s n="mf"/></r></p></e>

remarcăm prezența atributelor r = "LR" sau r = "RL" ceea ce face posibilă definirea pentru ce direcție de traducere (LR = de la stânga la dreapta, RL = de la dreapta la stânga) datele din expresia <er = ".."> ... </e> se aplică.

De asemenea, menționăm prezența n = "GD" pentru sexul care urmează să fie determinat .

În cele din urmă, putem vedea că același dicționar bilingv a fost folosit pentru a traduce în ambele direcții. Aceasta este alegerea făcută pentru perechile lingvistice Apertium.

Transferurile

Pașii de transfer constau în procesarea cuvintelor + seturi de descrieri gramaticale pentru a trece de la o limbă la alta.

Eliminați ambiguitățile din textul sursă

În primul rând, trebuie să eliminăm ambiguitățile despre limba originală. Luați de exemplu 2 propoziții:

  1. Ușa e deschisă.
  2. Eu port o valiză.

Înțelegerea acestor 2 propoziții nu oferă nicio dificultate specială unui om vorbitor de franceză.

În cazul Apertium, analiza cuvântului poartă va da trei rezultate:

  • un substantiv feminin la singular care corespunde unui truc de lemn folosit pentru a permite sau preveni accesul în camere sau clădiri,
  • verbul porter conjugat la prezent, prima sau a treia persoană singular (2 cazuri în total).

La sfârșitul fazei de analiză (care folosește dicționarul morfologic), pentru cele 2 propoziții, recuperăm aceste trei rezultate pentru cuvântul ușă .

Analiza naturii cuvintelor din jur face posibilă rezolvarea ambiguității.

Pentru propoziția Ușa este deschisă , dacă alegem verbul portar , obținem structura propoziției:

article ou pronom + verbe + verbe être + adjectif

Avem în special 2 verbe consecutive cu verbul a fi în a 2 -a  poziție.

Structura propoziției:

article ou pronom + nom + verbe être + adjectif

are mai mult sens. Putem chiar deduce că primul cuvânt este un articol.

La fel, în cazul propoziției port o valiză , dacă pentru ușă alegem numele, avem structura:

pronom + nom + article + nom

Pe de o parte, un pronume este urmat de un substantiv, pe de altă parte, propoziția nu are verb.

Dimpotrivă, structura

pronom + verbe + article + nom

oferă o structură de propoziție comună în franceză. În plus, pronumele „I” este folosit pentru a selecta între prima și a 3- a  persoană singular pentru verb.

Din statistici privind structura propozițiilor în limba originală (obținute în prealabil prin analiza unui număr mare de propoziții cu traducerea lor), pasul de dezambiguizare face posibilă păstrarea pentru fiecare dintre cuvintele textului sursă a unei singure analize, adică partea dreaptă a descrierii unui cuvânt <r>...</r>.

Notă: Chiar dacă am folosit paradigme pentru a defini diferitele cuvinte ale limbii, analiza obținută va detalia toate caracteristicile cuvântului. De exemplu pentru verbul portar, analiza selectată va indica persoana verbului ales: <p1><sg>pentru prima persoană singular, <p3><sg>pentru a treia persoană singular.

Transfer lexical

Fiecare cuvânt din limba sursă fiind analizat într-un mod unic, acesta poate fi tradus într-un mod unic folosind dicționarul bilingv. De exemplu, pentru cuvântul „ușă”, dați cuvântul ușă (nume) în cazul primei propoziții și purtați (verb) pentru a doua, dacă facem o traducere în limba engleză.

Transferul structurii

Tocmai am trecut de la limba sursă la limba țintă. Dar lucrarea nu este terminată. Trebuie să respectați constrângerile gramaticale ale limbii țintă. De exemplu :

  • În unele limbi, inclusiv franceza, adjectivul este de acord în gen și număr cu substantivul. În altele, inclusiv în engleză, este invariabil.
  • Majoritatea adjectivelor sunt puse în franceză după substantiv, în engleză sunt întotdeauna înainte.
  • Am văzut în capitolul dicționarelor bilingve că un cuvânt poate fi masculin într-o limbă și feminin în alta.

Această etapă de transfer constă în luarea în considerare a acestor particularități, și anume:

  • în unele limbi sunt de acord anumite cuvinte cu altele,
  • uneori schimbă ordinea cuvintelor în raport cu textul în limba sursă (aceste schimbări de ordine pot fi uneori foarte considerabile, ca în cazul traducerii din bască în spaniolă sau engleză),
  • eliminați anumite cuvinte din limba sursă (de exemplu, adverbul „pas” de la negarea francezei atunci când traduceți în spaniolă sau catalană),
  • adăugați anumite cuvinte în limba țintă (de exemplu, adverbul „pas” al negării francezei atunci când traduceți din spaniolă sau catalană).

În concluzie

  1. Pasul de analiză utilizează dicționarul morfologic al limbii sursă și înlocuiește fiecare cuvânt al textului original cu una sau mai multe descrieri, așa cum se găsește în partea <r> ... </r>. De exemplu, cuvântul beri va da <r>bière<s n="nom"/><s n="pluriel"/></r>sau mai degrabă cu abrevieri:<r>bière<s n="n"/><s n="p"/></r>
  2. Un prim pas de transfer va elimina ambiguitățile pentru cuvintele cu mai multe descrieri posibile
  3. putem traduce apoi fiecare cuvânt. Rezultatul cuvântului beri tradus în engleză va fi ceva de genul:<r>beer<s n="n"/><s n="p"/></r>
  4. Există un alt pas de transfer pentru a lua în considerare particularitățile limbii țintă.
  5. În cele din urmă, etapa de management va folosi dicționarul morfologic al limbii țintă în cealaltă direcție, adică vom trece de la o formă a genului <r>beer<s n="n"/><s n="p"/></r>la cuvântul beri .

Sunt disponibile perechi de limbi

Perechile de limbi dezvoltate pentru Apertium sunt clasificate în 4 categorii în funcție de starea lor de progres:

  • Portbagaj . Acestea sunt perechi de limbi validate, deși pot fi îmbunătățite. Unele permit traducerea în ambele direcții, altele într-o singură direcție.
  • Etalonare  : perechi de limbi care necesită încă câteva săptămâni de muncă pentru a fi operaționale. Puțini, ei rămân în această stare atâta timp cât niciun dezvoltator nu este în măsură să rafineze munca deja realizată.
  • Creșă  : perechi de limbi care necesită încă câteva luni de muncă pentru a trece la nivelul Trunchiului.
  • Incubator pentru perechi de limbi în construcție pentru care rămâne mult de lucru.

La începutul anului 2012 , limbile validate sunt:

Numele perechii Prima versiune Limbi Versiune curentă
apertium-es-ca 2005 Spaniolă ⇆ catalană 1.0.5
apertium-es-gl 2005 Spaniolă ⇆ galiciană 1.0.6
apertium-es-pt 2005 Spaniolă ⇆ portugheză 1.0.3
apertium-en-ca 2006 Engleză ⇆ catalană 0.8.4
apertium-oc-ca 2006 Occitană ⇆ catalană 1.0.5
apertium-fr-ca 2006 Franceză ⇆ catalană 1.0.0
apertium-es-ro 2007 Spaniolă ← română 0.7.1
apertium-fr-es 2007 Franceză ⇆ spaniolă 0,8,0
apertium-cy-en 2008 Galeză ⇆ engleză 0.1.0
apertium-en-es 2008 Engleză ⇆ spaniolă 0.6.0
apertium-eo-ca 2008 Esperanto ← catalană 0.9.0
apertium-eo-es 2008 Esperanto ← spaniolă 0.9.0
apertium-eo-en 2008 Esperanto ⇆ engleză 1.0.2
apertium-eu-es 2008 Bască ⇆ spaniolă 0.3.1
apertium-oc-es 2008 Occitană ⇆ Spaniolă 1.0.5
apertium-pt-ca 2008 Portugheză ⇆ catalană 0.8.1
apertium-en-gl 2008 Engleză ⇆ galiciană 0.5.1
apertium-pt-gl 2008 Portugheză ⇆ galiciană 0.9.1
apertium-nn-nb 2009 Norwegian nynorsk ⇆ Norwegian Bokmål 0.6.5
apertium-sv-da 2009 Suedeză → daneză 0.6.0
apertium-br-fr 2009 Bretonă → franceză 0.4.0
apertium-es-ast 2009 Spaniolă → asturiană 1.0.0
apertium-is-en 2010 Islandeză → engleză 0.1.0
apertium-mk-bg 2010 Macedoneană ⇆ bulgară 0.2.0
apertium-mk-en 2010 Macedoneană ⇆ engleză 0.1.0
apertium-ca-it 2011 Catalană ← italiană 0.1.0
apertium-eo-fr 2011 Esperanto ← franceză 0.9.0
apertium-es-an 2011 Spaniolă ⇆ aragoneză 0.2.1
apertium-af-nl 2012 Afrikaans ↔ olandeză ?
apertium-es-it ? Spaniolă ↔ italiană ?
apertium-eu-en ? Bască → engleză ?
apertium-sh-mk ? Sârbo-croată ↔ macedoneană ?
apertium-tr-az ? Turcă → azeră ?
apertium-tr-ky ? Turcă → kârgâză ?
apertium-sme-nob 2012 Northern Sámi → Norwegian Bokmål 0,5,0
apertium-kaz-tat 2013 Kazahă ⇆ tătară 0.1.0

Lista completă a perechilor de limbi clasificate în funcție de starea lor de progres este vizibil pe wiki -ul Apertium, multe dintre ale căror pagini explicative au fost de când traduse în franceză.septembrie 2011.

Referințe

  1. „  https://github.com/apertium/apertium/releases/tag/v3.7.1  ” ,21 decembrie 2020(accesat pe 29 ianuarie 2021 )
  2. http://wiki.apertium.org/wiki/List_of_Apertium_mentors Unii dintre principalii actori ai proiectului
  3. http://wiki.apertium.org/wiki/Google_Summer_of_Code Pagini Wiki legate de Google Summer of Code
  4. http://wiki.apertium.org/wiki/Balisage_d%27une_partie_de_discours Explicația metodei statistice de dezambiguizare
  5. http://wiki.apertium.org/wiki/Classement_des_paires_de_langues_selon_leur_%C3%A9tat_d%27avancement Cele 4 categorii de perechi de limbi
  6. http://wiki.apertium.org/wiki/Language_and_pair_maintainer#Released_pairs_with_or_without_a_maintainer Listă de perechi de limbi validate.
  7. http://wiki.apertium.org/wiki/Category:Documentation_en_fran%C3%A7 este partea franceză a proiectului Apertium wiki.

linkuri externe