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.
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.
Apertium este un sistem de traducere bazat pe dicționare și reguli de transfer. Este alcătuit din 3 părți:
Î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.
Î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:
Î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ț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:
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:
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:
Î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ă:
Pentru a traduce din franceză în limba din stânga:
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.
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:
Î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:
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 + adjectifAvem în special 2 verbe consecutive cu verbul a fi în a 2 -a poziție.
Structura propoziției:
article ou pronom + nom + verbe être + adjectifare 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 + nomPe de o parte, un pronume este urmat de un substantiv, pe de altă parte, propoziția nu are verb.
Dimpotrivă, structura
pronom + verbe + article + nomoferă 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 lexicalFiecare 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 structuriiTocmai 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 :
Această etapă de transfer constă în luarea în considerare a acestor particularități, și anume:
Perechile de limbi dezvoltate pentru Apertium sunt clasificate în 4 categorii în funcție de starea lor de progres:
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.