Polished RBMT system
If you're looking for information on corpus annotation and evaluation (precision/recall), that has moved to the Midterm overview page
Measuring trimmed coverage
Apertium RBMT systems use a "trimmed" version of the base transducer for each language in the MT pair. Each transducer is trimmed to only include entries found in the bilingual dictionary (.dix). The trimmed transducers are almost always smaller than the main transducers. Measuring coverage of the trimmed transducer gives you some idea of the ceiling of MT accuracy—or, at least, the percentage of forms in a corpus the MT system can analyse, regardless of translation accuracy.
Measuring trimmed coverage is just the same as measuring coverage, but with the appropriate "trimmed" transducer (e.g., xyz-abc.automorf.bin). You'll need to use the coverage-ltproc script instead of coverage-hfst.
The assignment
This assignment is due at the beginning of week 13 (this semester, at the end of the day on Monday, 27 April 2026, before midnight).
- Before you begin, make sure all previous assignments are done, and add a "structural_transfer" tag to your transducer repositories and your translation pair repository/ies to mark the end of previous assignments.
- Also, please remove all binaries from all repositories! See removing binaries from transducer repo.
- Set up some new corpora based on existing ones:
- Combine and merge your
sentencesandtestscorpora so you [hopefully, but not necessarily] have a new longer parallel corpus. Name the filesabc.longer.txtandxyz.longer.txt. - Make a large monolingual corpus of a bunch of raw text in your language. The more the better. This step may simply consist of you cleaning up and/or combining the existing corpora from the initial corpus assembly assignment, but if there's a large existing corpus you've been meaning to include but haven't yet, now's the time. See if you can get it over 100K words (this won't be possible for all languages). The bigger this corpus is the better. Call it
abc.corpus.large.txt(in your monolingual corpus repo) and add notes to yourMANIFESTfile about where the text comes from.
- Combine and merge your
- Expand your MT pair in at least three of the following ways for each translation direction that you're working on (for most groups just the one), listing in a "Final evaluation" section on the language pair's wiki page what you did (move existing evaluation sections under a new section called "Initial evaluation"), and for every rule (for all of the following except adding stems), list an example of what output was improved.
- At least 100 more stems in the bilingual dictionary (and monolingual dictionaries as needed). This counts for both translation directions, if you are working on two-way translation. (If you've automated creation of your bilingual dictionary, then you can use this task to clean up 100 stems—at least 50 entries in your bilingual dictionary should be different than before—and properly categorise those 100 stems into the monolingual dictionary.)
- Expand your morphology to cover at least 5 more elements of some paradigm(s). This can be anything from additional verb or noun morphology, to adding all the forms of all the determiners (articles, demonstratives, etc.), to implementing nominal morphology on adjectives (e.g., if your language allows adjectives to be substantivised, which you'll want to add a tag for too).
- At least 4 more twol rules that make your (analysis and) generation cleaner in an additional way.
- At least 3 new disambiguation rules that make the output of your tagger more accurate.
- At least 2 new lexical selection rules that make more of the right stems transfer over.
- At least 2 new transfer rule patterns that make more of the output of your MT system closer to an acceptable target translation.
- You could also add multi-word separation and/or recombination modules, with at least one example. See apertium:Apertium separable
- Update
READMEfiles; specifically:- The
READMEfile for your transducer has some "TODO"s that should be replaced. Find a short(ish) sentence that nicely demonstrates both your analyser and your disambiguator (for the-morphand-taggermodes). - The
READMEfile for your translation system has some "TODO"s that should be replaced. Find a short(ish) sentence for each translation direction that nicely demonstrates your translation system. If the output isn't yet a "perfect" rendering in the other language, make note of that, ideally outside of but near the code block. - Optional: feel free to make any other updates to your
READMEfile to make it less "boilerplate" and more specific to your specific language and its community (and anything extra that might be part of your codebase, like a tokeniser). See apertium-zab for an example that some thought was put into. - Make sure everyone in your group is acknowledged either by name or pseudonym in the
AUTHORSfile.
- The
- When you are done with the above:
- Document which of the above options you completed on the pair's wiki page (in a section like "Additions"). You don't have to list the words or rules you added, but do list that you added n words or n transfer rules or the like.
- Add a "polished RBMT system" tag to your repo.
- document the following measures in the "Final evaluation" section of the pair's wiki page:.
- For your monolingual transducer:
- Updated precision and recall against the (updated)
eval.testandeval.goldfiles (see Midterm overview#Evaluating your transducer), - Coverage over the
largecorpus, - The number of words in the
largecorpus, - The number of stems in the transducer.
- Updated precision and recall against the (updated)
- For MT in the direction(s) you developed (
abc-xyzand potentiallyxyz-abc):- WER and PER over
longercorpus. - The proportion of stems translated correctly in the
longercorpus. - Trimmed coverage over
longerandlargecorpora. - The number of tokens in
longerandlargecorpora.
- WER and PER over
- For your monolingual transducer: