Wikipedia / Apertium
Wikipedia / Apertium
Apertium is a free/open-source rule-based machine translation platform. It is free software and released under the terms of the GNU General Public License.
Overview
Apertium is a transfer-based machine translation system, which uses finite state transducers for all of its lexical transformations, and Constraint Grammar taggers as well as hidden Markov models or Perceptrons for part-of-speech tagging / word category disambiguation. A structural transfer component is responsible for word movement and agreement; most Apertium language pairs up until now have used "chunking" or shallow transfer rules, though newer pairs use (possibly recursive) rules defined in a Context-free grammar.
Many existing machine translation systems available at present are commercial or use proprietary technologies, which makes them very hard to adapt to new usages. Apertium code and data is free software and uses a language-independent specification, to allow for the ease of contributing to Apertium, more efficient development, and enhancing the project's overall growth.
At present (December 2020), Apertium has released 51 stable language pairs, delivering fast translation with reasonably intelligible results (errors are easily corrected). Being an open-source project, Apertium provides tools for potential developers to build their own language pair and contribute to the project.
History
Apertium originated as one of the machine translation engines in the project OpenTrad, which was funded by the Spanish government, and developed by the Transducens research group at the Universitat d'Alacant. It was originally designed to translate between closely related languages, although it has recently been expanded to treat more divergent language pairs. To create a new machine translation system, one just has to develop linguistic data (dictionaries, rules) in well-specified XML formats.
Language data developed for it (in collaboration with the Universidade de Vigo, the Universitat Politècnica de Catalunya and the Universitat Pompeu Fabra) currently support (in stable version) the Arabic, Aragonese, Asturian, Basque, Belarusian, Breton, Bulgarian, Catalan, Crimean Tatar, Danish, English, Esperanto, French, Galician, Hindi, Icelandic, Indonesian, Italian, Kazakh, Macedonian, Malaysian, Maltese, Northern Sami, Norwegian (Bokmål and Nynorsk), Occitan, Polish, Portuguese, Romanian, Russian, Sardinian, Serbo-Croatian, Silesian, Slovene, Spanish, Swedish, Tatar, Ukrainian, Urdu, and Welsh languages. A full list is available below. Several companies are also involved in the development of Apertium, including Prompsit Language Engineering, Imaxin Software and Eleka Ingeniaritza Linguistikoa.
The project has taken part in the 2009, 2010, 2011, 2012, 2013 and 2014 editions of Google Summer of Code and the 2010, 2011, 2012, 2013, 2014, 2015, 2016 and 2017 editions of Google Code-In.
Translation methodology
This is an overall, step-by-step view how Apertium works.
The diagram displays the steps that Apertium takes to translate a source-language text (the text we want to translate) into a target-language text (the translated text).
Source language text is passed into Apertium for translation.
The deformatter removes formatting markup (HTML, RTF, etc.) that should be kept in place but not translated.
The morphological analyser segments the text (expanding elisions, marking set phrases, etc.), and looks up segments in the language dictionaries, returning dictionary forms and tags for all matches. In pairs that involve agglutinative morphology, including a number of Turkic languages, a Helsinki Finite State Transducer (HFST) is used. Otherwise, an Apertium-specific finite state transducer system called lttoolbox, is used.
The morphological disambiguator (the morphological analyser and the morphological disambiguator together form the part of speech tagger) resolves ambiguous segments (i.e., when there is more than one match) by choosing one match. Apertium uses Constraint Grammar rules (with the vislcg3 parser) for most of its language pairs.
Retokenisation uses a finite state transducer to match sequences of lexical units and may reorder or translate tags (often used for translating idiomatic expressions into something that more approaches the target language grammar)
Lexical transfer looks up disambiguated source-language basewords to find their target-language equivalents (i.e., mapping source language to target language). For lexical transfer, Apertium uses an XML-based dictionary format called bidix.
Lexical selection chooses between alternative translations when the source text word has alternative meanings. Apertium uses a specific XML-based technology, apertium-lex-tools, to perform lexical selection.
Structural transfer (i.e., it is an XML format that allows writing complex structural transfer rules) can consist of one-step chunking transfer, three-step chunking transfer or a CFG-based transfer module. The chunking modules flag grammatical differences between the source language and target language (e.g. gender or number agreement) by creating a sequence of chunks containing markers for this. They then reorder or modify chunks in order to produce a grammatical translation in the target-language. The newer CFG-based module matches input sequences into possible parse trees, selecting the best-ranking one and applying transformation rules on the tree.
The morphological generator uses the tags to deliver the correct target language surface form. The morphological generator is a morphological transducer, just like the morphological analyser. A morphological transducer both analyses and generates forms.
The post-generator makes any necessary orthographic changes due to the contact of words (e.g. elisions).
The reformatter replaces formatting markup (HTML, RTF, etc.) that was removed by the deformatter in the first step.
Apertium delivers the target-language translation.
Supported languages
As of , the following 108 pairs and <onlyinclude>51</onlyinclude> languages and languages varieties are supported by Apertium.
Afrikaans to Dutch
Arabic to Maltese
Aragonese to Catalan
Aragonese to Spanish
Arpitan (Franco-Provençal) to French
Basque to English
Basque to Spanish
Belarusian to Russian
Breton to French
Bulgarian to Macedonian
Catalan to Aragonese
Catalan to English
Catalan to Esperanto
Catalan to French
Catalan to Italian
Catalan to Occitan
Catalan to Aranese
Catalan to Portuguese
Catalan to Brazilian Portuguese
Catalan to European Portuguese (traditional spelling)
Catalan to Romanian
Catalan to Sardinian
Catalan to Spanish
Crimean Tatar to Turkish
Danish to Norwegian (Bokmål)
Danish to Norwegian (Nynorsk)
Danish to Swedish
Dutch to Afrikaans
English to Catalan
English to Valencian
English to Esperanto
English to Galician
English to Serbo-Croatian
English to Spanish
Esperanto to English
French to Arpitan (Franco-Provençal)
French to Catalan
French to Esperanto
French to Occitan
French to Gascon
French to Spanish
Galician to English
Galician to Portuguese
Galician to Spanish
Hindi to Urdu
Icelandic to English
Icelandic to Swedish
Indonesian to Malay
Italian to Catalan
Italian to Sardinian
Italian to Spanish
Kazakh to Tatar
Macedonian to Bulgarian
Macedonian to English
Malay to Indonesian
Maltese to Arabic
Northern Sámi to Norwegian (Bokmål)
Norwegian (Bokmål) to Norwegian (Nynorsk)
Norwegian (Bokmål) to East Norwegian, vi→vi
Norwegian (Bokmål) to Swedish
Norwegian (Nynorsk) to Danish
Norwegian (Nynorsk) to Norwegian (Bokmål)
Norwegian (Nynorsk) to East Norwegian, vi→vi
Norwegian (Nynorsk) to Swedish
East Norwegian, vi→vi to Norwegian (Nynorsk)
Occitan to Catalan
Occitan to French
Occitan to Spanish
Aranese to Catalan
Aranese to Spanish
Gascon to French
Polish to Silesian
Portuguese to Catalan
Portuguese to Galician
Portuguese to Spanish
Romanian to Catalan
Romanian to Spanish
Russian to Belarusian
Russian to Ukrainian
Sardinian to Italian
Serbo-Croatian to English
Serbo-Croatian to Macedonian
Serbo-Croatian to Slovenian
Silesian to Polish
Slovenian to Serbo-Croatian
Spanish to Aragonese
Spanish to Asturian
Spanish to Catalan
Spanish to Valencian
Spanish to English
Spanish to Esperanto
Spanish to French
Spanish to Galician
Spanish to Italian
Spanish to Occitan
Spanish to Aranese
Spanish to Portuguese
Spanish to Brazilian Portuguese
Swedish to Danish
Swedish to Icelandic
Swedish to Norwegian (Bokmål)
Swedish to Norwegian (Nynorsk)
Tatar to Kazakh
Turkish to Crimean Tatar
Ukrainian to Russian
Urdu to Hindi
Welsh to English
See also
Babel Fish (discontinued; redirects to main Yahoo! site)
Jollo (discontinued)
Notes
References
Corbí-Bellot, M. et al. (2005) "An open-source shallow-transfer machine translation engine for the romance languages of Spain" in Proceedings of the European Association for Machine Translation, 10th Annual Conference, Budapest 2005, pp.79–86
Armentano-Oller, C. et al. (2006) "Open-source Portuguese-Spanish machine translation" in Lecture Notes in Computer Science 3960 [Computational Processing of the Portuguese Language, Proceedings of the 7th International Workshop on Computational Processing of Written and Spoken Portuguese, PROPOR 2006], p 50–59.
Forcada, M. L. et al. (2010) "Documentation of the Open-Source Shallow-Transfer Machine Translation Platform Apertium" in Departament de Llenguatges i Sistemes Informatics, University of Alacant.
Forcada, M. L. et al. (2011) "Apertium: a free/open-source platform for rule-based machine translation". in "
External links
End-user services and software
(All services are based on the Apertium engine)
Online translation websites
Offline applications