Task ideas for Google Code-in
This is the task ideas page for Google Code-in (http://www.google-melange.com/gci/homepage/google/gci2013), here you can find ideas on interesting tasks that will improve your knowledge of Apertium and help you get into the world of open-source development.
The people column lists people who you should get in contact with to request further information. All tasks are 2 hours maximum estimated amount of time that would be spent on the task by an experienced developer, however:
- this does not include time taken to install / set up apertium.
- this is the time expected to take by an experienced developer, you may find that you spend more time on the task because of the learning curve.
Categories:
- code: Tasks related to writing or refactoring code
- documentation: Tasks related to creating/editing documents and helping others learn more
- research: Tasks related to community management, outreach/marketting, or studying problems and recommending solutions
- quality: Tasks related to testing and ensuring code is of high quality.
- interface: Tasks related to user experience research or user interface design and interaction
You can find descriptions of some of the mentors here: List_of_Apertium_mentors.
Task list
Category | Title | Description | Mentors |
---|---|---|---|
code, quality | Improve the quality of a language pair by adding 50 words to its vocabulary | (1) select a language pair, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works and/or get Apertium VirtualBox and update, check out & compile the language pair. (3) Using a large enough corpus of representative text in the source language (e.g. plain text taken from Wikipedia, newspapers, literature, etc.) detect the 50 most frequent unknown words (source words which are not in the dictionaries of the language pair). (4) add these words to the source dictionary (so that they are not unknown anymore), add the correspondence to the bilingual dictionary, and add the word to the target dictionary if not already there. (5) Compile and test again(6) Submit a patch to your mentor (or commit it if you have already gained developer access) | User:Mlforcada User:ilnar.salimzyan User:Xavivars User:Bech Jimregan User:Unhammer User:Fsanchez User:Nikant Fulup User:Japerez User:tunedal User:Juanpabl (alternative mentors welcome) |
code, quality | Add/correct one structural transfer rule to an existing language pair | (1) select a language pair, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works and/or getApertium VirtualBox and update, check out & compile the language pair. (3) Using a large enough corpus of the source language (e.g. plain text taken from Wikipedia, detect one structural transfer rule (.t1x, .t2x, .t3x) wrong or missing (local agreement -gender, number, etc.- is inadequate, local word order in a phrase is inadequate, there is a word too much or a word missing, etc.); (4) write a new rule or correct the existing rule. (5) Compile and test again. (6) Submit a patch to your mentor (or commit it if you have already gained developer access). | User:Mlforcada User:ilnar.salimzyan User:Unhammer User:Nikant Fulup User:Juanpabl (alternative mentors welcome) |
code, quality | Write 10 lexical selection rules for a language pair already set up with lexical selection | (1) select a language pair that is already set up for lexical selection, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works and/or getApertium VirtualBox and update, check out & compile the language pair. (3) Using a large enough corpus of the source language (e.g. plain text taken from Wikipedia, newspapers, literature, etc.), detect cases of inadequate lexical choice, that is, the translation is grammatical but the translation selected for one word is not correct (because the source word is polysemous or has more than one meaning). (4) Add entries to the bilingual dictionary if needed and write 10 lexical selection rules that select the correct translation in the relevant context. (5) Compile and test again. (6) Submit a patch to your mentor (or commit it if you have already gained developer access). | User:Mlforcada, User:Francis Tyers User:ilnar.salimzyan User:Unhammer User:Fsanchez User:Nikant User:Japerez (more mentors welcome) |
code | Set up a language pair to use lexical selection and write 5 rules | (1) select a language pair that is not yet set up for lexical selection, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works and/or getApertium VirtualBox and update, check out & compile the language pair. (3) Using a large enough corpus of the source language (e.g. plain text taken from Wikipedia, newspapers, literature, etc.), detect cases of inadequate lexical choice, that is, the translation is grammatical but the translation selected for one word is not correct (because the source word is polysemous or has more than one meaning). (4) Set up lexical selection for the language pair, add entries to the bilingual dictionary if needed, and write 5 lexical selection rules that select the correct translation in the relevant context. | User:Mlforcada, User:Francis Tyers User:Unhammer Fulup (more mentors welcome) |
code, quality | Write constraint grammar rules to repair part-of-speech tagging errors | (1) select a language pair that already uses constraint grammar for part-of-speech tagging, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works and/or get Apertium VirtualBox and update, check out & compile the language pair. (3) Using a large enough corpus of the source language (e.g. plain text taken from Wikipedia, newspapers, literature, etc.) detect part-of-speech tagging errors (the translation is not adequate because the part-of-speech tagger in Apertium has selected the wrong morphological analysis for a word that had more than one); (4) write 10 constraint grammar rules that select the desired part of speech in the relevant context(s); (5) Compile and test again, possibly after retraining the statistical part-of-speech tagger (6) Submit a patch to your mentor (or commit it if you have already gained developer access) | User:Mlforcada, User:Francis Tyers User:ilnar.salimzyan User:Unhammer Fulup (more mentors welcome) |
code | Set up a language pair such that it uses constraint grammar for part-of-speech tagging | (1) select a language pair that does not yet use constraint grammar for part-of-speech tagging, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works and/or getApertium VirtualBox and update, check out & compile the language pair. (3) Using a large enough corpus of the source language (e.g. plain text taken from Wikipedia, newspapers, literature, etc.) detect part-of-speech tagging errors (the translation is not adequate because the part-of-speech tagger in Apertium has selected the wrong morphological analysis for a word that had more than one); (4) set it up so that it uses it (get inspiration from constraint grammar files from other languages) and write 5 constraint grammar rules that select the desired part of speech in the relevant context(s); (5) Compile and test again, possibly after retraining the statistical part-of-speech tagger (6) Submit a patch to your mentor (or commit it if you have already gained developer access) | User:Mlforcada, User:Francis Tyers User:Unhammer (more mentors welcome) |
code | Dictionary conversion | Write a conversion module for an existing dictionary for apertium-dixtools. | User:Firespeaker |
code | Dictionary conversion in python | Write a conversion module for an existing free bilingual dictionary to lttoolbox format using Python. | User:Firespeaker |
code | Localised available languages function in apertium-apy | Make a new function for apertium-apy, is takes as input a language code, and as output gives the list of available pairs, and their translations in the language specified by the language code. You will probably need to know JavaScript and Python. | User:Firespeaker User:Unhammer User:Francis Tyers |
code | Language detection in apertium-apy | Make a new function for apertium-apy, that allows the language of some input text to be identified. This function should return a dict of languages and probabilities. For this task you will also need to train models for the language identifier. | User:Firespeaker User:Unhammer User:Francis Tyers |
code | SSL in apertium-apy | Make apertium-apy optionally use SSL. (If you put simple-html on an ssl domain, new browsers won't let you do plaintext/non-ssl ajax). | User:Firespeaker User:Unhammer User:Francis Tyers |
code | libvoikko support for apertium-apy | Write a function for apertium-apy that checks the spelling of an input string and for each word returns whether the word is correct, and if unknown returns suggestions. Whether segmentation is done by the client or by apertium-apy will have to be figured out. You will also need to add scanning for spelling modes to the initialisation section. Try to find a sensible way to structure the requests and returned data with JSON. Add a switch to allow someone to turn off support for this (use argparse set_false). | User:Firespeaker User:Francis Tyers |
code | *-morph and *-gener modes for apertium-apy | Write a function each for apertium-apy that does morphological analysis and morphological generation. You'll also need to add scanning for such modes to the initialisation section. Try to find a sensible way to structure the requests and returned data with JSON. Add a switch to allow someone to turn off support for this (use argparse set_false). | User:Firespeaker User:Francis Tyers User:Unhammer |
code | performance tracking in apertium-apy | Add a way for apertium-apy to keep track of number of words in input and time between sending input to a pipeline and receiving output, for the last n (e.g., 100) requests, and write a function to return the average words per second over something<n (e.g., 10) requests. | User:Firespeaker User:Francis Tyers User:Unhammer |
code | apertium-apy gateway | Write an intermediary server that takes apertium-apy requests and forwards them to one server from a list of apertium-apy servers:ports (round-robin style or similar) | User:Firespeaker User:Francis Tyers User:Unhammer |
code | apertium-apy gateway server pool management | write a function that's called every n requests that polls the server pool and reorders the list of available servers based on speed (i.e., fastest servers first) | User:Firespeaker User:Francis Tyers User:Unhammer |
documentation, quality | test and document init scripts for apertium-apy | Try setting up apertium-apy to run on startup using Upstart (Ubuntu) using this script, check that it actually starts up on startup and restarts when you kill it. Document how you did it on the wiki | User:Firespeaker User:Francis Tyers User:Unhammer |
documentation, quality | test and document init scripts for apertium-apy | Try setting up apertium-apy to run on startup using systemd (Fedora, Arch Linux, SUSE) using this script, check that it actually starts up on startup and restarts when you kill it. Document how you did it on the wiki | User:Firespeaker User:Francis Tyers User:Unhammer |
documentation, quality | test and document init scripts for apertium-apy | Try setting up apertium-apy to run on startup using inittab e.g. like this, check that it actually starts up on startup and restarts when you kill it. Document how you did it on the wiki | User:Firespeaker User:Francis Tyers User:Unhammer |
code, documentation | cronjob to detect a "hang" for apertium-apy | Write a script that tries to translate something via a local apertium-apy, and if it doesn't respond nicely within a certain amount of time (e.g. curl times out and exits with non-zero status, or the translation is wrong/empty), then "initctl restart apertium-apy" (Upstart) or "systemctl restart apertium-apy" (systemd); post the contents of the script on the wiki and how to set it up. | User:Firespeaker User:Francis Tyers User:Unhammer |
code | make apertium-apy use one lock per pipeline | make apertium-apy use one lock per pipeline, since we don't need to wait for mk-en just because sme-nob is running. | User:Firespeaker User:Francis Tyers User:Unhammer |
code | make voikkospell understand apertium stream format input | Make voikkospell understand apertium stream format input, e.g. ^word/analysis1/analysis2$, voikkospell should only interpret the 'word' part to be spellchecked. | User:Francis Tyers User:Firespeaker |
code | make voikkospell return output in apertium stream format | make voikkospell return output suggestions in apertium stream format, e.g. ^correctword$ or ^incorrectword/correct1/correct2$ | User:Francis Tyers User:Firespeaker |
code | libvoikko support for OS X | Make a spell server for OS X's system-wide spell checker to use arbitrary languages through libvoikko. See https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/SpellCheck/Tasks/CreatingSpellServer.html#//apple_ref/doc/uid/20000770-BAJFBAAH for more information | User:Francis Tyers User:Firespeaker |
documentation | document: setting up libreoffice voikko on Ubuntu/debian | document how to set up libreoffice voikko working with a language on Ubuntu and debian | User:Francis Tyers User:Firespeaker |
documentation | document: setting up libreoffice voikko on Fedora | document how to set up libreoffice voikko working with a language on Fedora | User:Francis Tyers User:Firespeaker |
documentation | document: setting up libreoffice voikko on Windows | document how to set up libreoffice voikko working with a language on Windows | User:Francis Tyers User:Firespeaker |
documentation | document: setting up libreoffice voikko on OS X | document how to set up libreoffice voikko working with a language on OS X | User:Francis Tyers User:Firespeaker |
documentation | document how to set up libenchant to work with libvoikko | Libenchant is a spellchecking wrapper, set it up to work with libvoikko, a spellchecking backend and document how you did it. | User:Francis Tyers User:Firespeaker |
code, interface | geriaoueg hover functionality | firefox/iceweasel plugin which, when enabled, allows one to hover over a word and get a pop-up; interface only. Should be something like [1] or [2] . | User:Francis Tyers User:Firespeaker |
code, interface | geriaoueg hover functionality | chrome/chromium plugin which, when enabled, allows one to hover over a word and get a pop-up; interface only. Should be something like [3] or [4] . | User:Francis Tyers User:Firespeaker User:Japerez |
code | geriaoueg language/pair selection | firefox/iceweasel plugin which queries apertium API for available languages and allows the user to set the language pair in preferences | User:Francis Tyers User:Firespeaker |
code | geriaoueg language/pair selection | chrome/chromium plugin which queries apertium API for available languages and allows the user to set the language pair in preferences | User:Francis Tyers User:Firespeaker User:Japerez |
code | geriaoueg lookup code | firefox/iceweasel plugin which queries apertium API for a word by sending a context (±n words) and the position of the word in the context and gets translation for language pair xxx-yyy | User:Francis Tyers user:Firespeaker |
code | geriaoueg lookup code | chrome/chromium plugin which queries apertium API for a word by sending a context (±n words) and the position of the word in the context and gets translation for language pair xxx-yyy | User:Francis Tyers user:Firespeaker User:Japerez |
code | apertium-apy translation-per-word mode | apertium-apy function/mode that runs analyser (-morph), then returns output of biltrans for each analysis; will need to decide whether it makes sense to return once, as a list, or return multiple times, once for each analysis (probably the former) | User:Francis Tyers User:Firespeaker User:Unhammer |
code | apertium-apy mode for geriaoueg (biltrans in context) | apertium-apy function that accepts a context (e.g., ±n ~words around word) and a position in the context of a word, gets biltrans output on entire context, and returns translation for the word | User:Francis Tyers User:Firespeaker User:Unhammer |
quality | make apertium-quality work with python3.3 on all platforms | migrate apertium-quality away from distribute to newer setup-tools so it installs correctly in more recent versions of python (known incompatible: python3.3 OS X, known compatible: MacPorts python3.2) | User:Francis Tyers User:Firespeaker |
code | How much of a given sentence pair is explained by Apertium? | Write (in some scripting language of your choice) a command-line program that takes an Apertium language pair, a source-language sentence S, and a target-language sentence T, and outputs the set of pairs of subsegments (s,t) such that s is a subsegment of S, t a subsegment of T and t is the Apertium translation of s or vice-versa (a subsegment is a sequence of whole words). | User:Mlforcada User:Espla User:Fsanchez User:Japerez |
quality | Compare Apertium with another MT system and improve it | This tasks aims at improving an Apertium language pair when a web-accessible system exists for it in the 'net. Particularly good if the system is (approximately) rule-based such as Lucy, Reverso, Systran or SDL Free Translation: (1) Install the Apertium language pair, ideally such that the source language is a language you know (L₂) and the target language a language you use every day (L₁). (2) Collect a corpus of text (newspaper, wikipedia) Segment it in sentences (using e.g., libsegment-java or a similar processor and a SRX segmentation rule file borrowed from e.g. OmegaT) and put each sentence in a line. Run the corpus through Apertium and through the other system Select those sentences where both outputs are very similar (e.g, 90% coincident). Decide which one is better. If the other language is better than Apertium, think of what modification could be done for Apertium to produce the same output, and make 3 such modifications. | User:Mlforcada Jimregan User:Japerez (alternative mentors welcome) |
documentation | Check that the Apertium guide for Windows users still works | We have an Apertium guide for Windows users, to help them install on Windows. Check that it works, and if not, report any bugs you find. | User:Francis Tyers |
documentation | Installation instructions for missing GNU/Linux distributions or versions | Adapt installation instructions for a particular GNU/Linux or Unix-like distribution if the existing instructions in the Apertium wiki do not work or have bugs of some kind. Prepare it in your user space in the Apertium wiki. It may be uploaded to the main wiki when approved. | User:Mlforcada (alternative mentors welcome) |
documentation | Installing Apertium in lightweight GNU/Linux distributions | Give instructions on how to install Apertium in one of the small or lightweight GNU/Linux distributions such as Damn Small Linux or SliTaz, so that may be used in older machines | User:Mlforcada User:Bech (alternative mentors welcome) |
documentation | What's difficult about this language pair? | For a language pair that is not in trunk or staging such that you know well the two languages involved, write a document describing the main problems that Apertium developers would encounter when developing that language pair (for that, you need to know very well how Apertium works). Note that there may be two such documents, one for A→B and the other for B→A Prepare it in your user space in the Apertium wiki.It may be uploaded to the main wiki when approved. | User:Mlforcada Jimregan (alternative mentors welcome) |
documentation | Video guide to installation | Prepare a screencast or video about installing Apertium; make sure it uses a format that may be viewed with Free software. When approved by your mentor, upload it to youtube, making sure that you use the HTML5 format which may be viewed by modern browsers without having to use proprietary plugins such as Adobe Flash. | User:Mlforcada User:Firespeaker (alternative mentors welcome) |
documentation | Apertium in 5 slides | Write a 5-slide HTML presentation (only needing a modern browser to be viewed and ready to be effectively "karaoked" by some else in 5 minutes or less: you can prove this with a screencast) in the language in which you write more fluently, which describes Apertium, how it works, and what makes it different from other machine translation systems. | User:Mlforcada User:Firespeaker User:Japerez (alternative mentors welcome) |
documentation | Improved "Become a language-pair developer" document | Read the document Become_a_language_pair_developer_for_Apertium and think of ways to improve it (don't do this if you have not done any of the language pair tasks). Send comments to your mentor and/or repare it in your user space in the Apertium wiki. There will be a chance to change the document later in the Apertium Wiki. | User:Mlforcada User:Bech |
documentation | An entry test for Apertium | Write 20 multiple-choice questions about Apertium. Each question will give 3 options of which only one is true, so that we can build an "Apertium exam" for future GSoC/GCI/developers. Optionally, add an explanation for the correct answer. | User:Mlforcada User:Japerez |
research | Write a contrastive grammar | Using a grammar book/resource document 20 sample cases of grammatical differences between two languages; put it on the wiki under Language1_and_Language2/Contrastive_grammar | User:Francis Tyers User:Firespeaker |
research | Hand annotate 250 words of running text. | Use apertium annotatrix to hand-annotate 250 words of running text from Wikipedia for a language of your choice. | User:Francis Tyers |
research | The most frequent Romance-to-Romance transfer rules | Study the .t1x transfer rule files of Romance language pairs and distill 5-10 common rules that are common to all of them, perhaps by rewriting them into some equivalent form | User:Mlforcada |
research | Tag and align Macedonian--Bulgarian corpus | Take a Macedonian--Bulgarian corpus, for example SETimes, tag it using the apertium-mk-bg pair, and word-align it using GIZA++. | User:Francis Tyers |
code | Write a program to extract Bulgarian inflections | Write a program to extract Bulgarian inflection information for nouns from Wiktionary, see Category:Bulgarian nouns | User:Francis Tyers |
quality | Improve the quality of a language pair by allowing for alternative translations | Improve the quality of a language pair by (a) detecting 5 cases where the (only) translation provided by the bilingual dictionary is not adequate in a given context, (b) adding the lexical selection module to the language, and (c) writing effective lexical selection rules to exploit that context to select a better translation | User:Francis Tyers User:Mlforcada User:Unhammer |
quality, code | Get bible aligner working (or rewrite it) | trunk/apertium-tools/bible_aligner.py - Should take two bible translations and output a tmx file with one verse per entry. There is a standard-ish plain-text bible translation format that we have bible translations in, and we have files that contain the names of verses of various languages mapped to English verse names | User:Firespeaker |
research | tesseract interface for apertium languages | Find out what it would take to integrate apertium or voikkospell into tesseract. Document thoroughly available options on the wiki. | User:Firespeaker User:Francis Tyers |
interface | Abstract the formatting for the simple-html interface. | The simple-html interface should be easily customisable so that people can make it look how they want. The task is to abstract the formatting and make one or more new stylesheets to change the appearance. This is basically making a way of "skinning" the interface. | User:Francis Tyers User:Japerez |
interface | simple-html spell-checker interface | Add an enablable spell-checker module to the simple-html interface. Get fancy with jquery/etc. so that e.g., misspelled words are underlined in red and recommendations for each word are given in some sort of drop-down menu. Feel free to implement a dummy function for testing spelling to test the interface until the "simple-html spell-checker code" task is complete. | User:Francis Tyers User:Firespeaker User:Japerez |
code | simple-html spell-checker code | Add code to the simple-html interface that allows spell checking to be performed. Should send entire string, and be able to match each returned result to its appropriate input word. Should also update as new words are typed. | User:Francis Tyers User:Firespeaker User:Japerez |
interface | simple-html morphological analysis/generation interface | Add an enablable morphology module to the simple-html interface. Should accept text and display analysis (to be gotten via code in another task) or accept analyses and return text. Functionality similar to [5], but make interface nicer, and integratable into simple-html | User:Francis Tyers User:Firespeaker User:Japerez |
code | simple-html morphological analysis/generation code | Add code to simple-html to query morphological analysis/generation function of apertium-apy and return results for interface to deal with accordingly | User:Francis Tyers User:Firespeaker User:Unhammer User:Japerez |
interface | simple-html interface behaviour for language guessing | Based on results of language detection function, make simple-html highlight in the menu the n (e.g., 3) most probable languages, and select the most probable. | User:Francis Tyers User:Firespeaker User:Japerez |
code | simple-html function for language guessing | Make simple-html interface not use 2.9MB javascript module for language detection/identification. Instead it should query apertium-apy with text to get a list of languages with probabilities. | User:Francis Tyers User:Firespeaker User:Japerez |
interface? | Update the Apertium guide for Windows users with new language pairs | Make sure that the Apertium guide for Windows users and the Apertium Windows installer is up to date with all the new language pairs. | User:Francis Tyers |
code | Write a program to extract Faroese noun inflections | Write a program to extract Faroese inflection information for nouns from Wiktionary, see Category:Faroese nouns | User:Francis Tyers |
code | Write a program to extract Faroese verb inflections | Write a program to extract Faroese inflection information for verbs from Wiktionary, see Category:Faroese verbs | User:Francis Tyers |
code | Write a program to extract Faroese adjective inflections | Write a program to extract Faroese inflection information for adjectives from Wiktionary, see Category:Faroese adjectives | User:Francis Tyers |
code | Light Apertium bootable ISO for small machines | Using Damn Small Linux or SliTaz or a similar lightweight GNU/Linux, produce the minimum-possible bootable live ISO or live USB image that contains the OS, minimum editing facilities, Apertium, and a language pair of your choice. Make sure no package that is not strictly necessary for Apertium to run is included. | User:Mlforcada User:Firespeaker (alternative mentors welcome) |
code | Apertium in XLIFF workflows | Write a shell script and (if possible, using the filter definition files found in the documentation) a filter that takes an XLIFF file such as the ones representing a computer-aided translation job and populates with translations of all segments that are not translated, marking them clearly as machine-translated. | User:Mlforcada User:Espla User:Fsanchez User:Japerez (alternative mentors welcome) |
quality | Examples of minimum files where an Apertium language pair messes up (X)HTML formatting | Sometimes, an Apertium language pair takes a valid HTML/XHTML source file but delivers an invalid HTML/XHTML target file, regardless of translation quality. This can usually be blamed on incorrect handling of superblanks in structural transfer rules. The task: (1) select a language pair (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works (3) download a series of HTML/XHTML files for testing purposes. Make sure they are valid using an HTML/XHTML validator (4) translate the valid files with the language pair (5) check if the translated files are also valid HTML/XHTML files; select those that aren't (6) find the first source of non-validity and study it, and strip the source file until you just have a small (valid!) source file with some text around the minimum possible example of problematic tags; save each such file and describe the error. | User:Mlforcada (alternative mentors welcome) |
code | Make sure an an Apertium language pair does not mess up (X)HTML formatting | (Depends on someone having performed the task 'Examples of files where an Apertium language pair messes up (X)HTML formatting' above). The task: (1) run the file through Apertium try to identify where the tags are broken or lost: this is most likely to happen in a structural transfer step; try to identify the rule where the label is broken or lost (2) repair the rule: a conservative strategy is to make sure that all superblanks () are output and are in the same order as in the source file. This may involve introducing new simple blanks () and advancing the output of the superblanks coming from the source. (3) test again (4) Submit a patch to your mentor (or commit it if you have already gained developer access) | User:Mlforcada (alternative mentors welcome) |
quality | Examples of minimum files where an Apertium language pair messes up wordprocessor (ODT, RTF) formatting | Sometimes, an Apertium language pair takes a valid ODT or RTF source file but delivers an invalid HTML/XHTML target file, regardless of translation quality. This can usually be blamed on incorrect handling of superblanks in structural transfer rules. The task: (1) select a language pair (2) Install Apertium locally from the Subversion repository; install the language pair; make sure that it works (3) download a series of ODT or RTF files for testing purposes. Make sure they are opened using LibreOffice/OpenOffice.org (4) translate the valid files with the language pair (5) check if the translated files are also valid ODT or RTF files; select those that aren't (6) find the first source of non-validity and study it, and strip the source file until you just have a small (valid!) source file with some text around the minimum possible example of problematic tags; save each such file and describe the error. | User:Mlforcada (alternative mentors welcome) |
code | Make sure an an Apertium language pair does not mess up wordprocessor (ODT, RTF) formatting | (Depends on someone having performed the task 'Examples of files where an Apertium language pair messes up wordprocessor formatting' above). The task: (1) run the file through Apertium try to identify where the tags are broken or lost: this is most likely to happen in a structural transfer step; try to identify the rule where the label is broken or lost (2) repair the rule: a conservative strategy is to make sure that all superblanks () are output and are in the same order as in the source file. This may involve introducing new simple blanks () and advancing the output of the superblanks coming from the source. (3) test again (4) Submit a patch to your mentor (or commit it if you have already gained developer access) | User:Mlforcada (alternative mentors welcome) |
code | Start a language pair involving Interlingua | Start a new language pair involving Interlingua using the Apertium new language HOWTO. Interlingua is the second most used "artificial" language, after Esperanto). As Interlingua is basically a Romance language, you can use a Romance language as the other language, and Romance-language dictionaries rules may be easily adapted. Include at least 50 very frequent words (including some grammatical words) and at least one noun--phrase transfer rule in the ia→X direction. | User:Mlforcada (will reach out also to the interlingua community) |
code | Generating 'machine translation memories' | Write a shell script and (using the filter definition files found in the documentation) a filter that takes a plain text file, segments it in sentences using the program segment and an SRX specification (which can be borrowed from OmegaT) and writes a TMX file in which each segment is paired with its Apertium translation, ready to be used with OmegaT as a "machine translation memory" | User:Mlforcada User:Espla User:Fsanchez User:Japerez (alternative mentors welcome) |
code | scraper for all wiktionary pages in a category | a script that returns urls of all pages in a wiktionary category recursively (e.g., http://en.wiktionary.org/wiki/Category:Bashkir_nouns should also include pages from http://en.wiktionary.org/wiki/Category:Bashkir_proper_nouns ) | User:Firespeaker User:Francis Tyers |
code | scraper of wiktionary translations between language x and y | a script that for a given wiktionary page (e.g., http://en.wiktionary.org/wiki/key ) returns all available translations between two specified languages, with part of speech and meaning/sense for each | User:Firespeaker User:Francis Tyers |
code | better wikipedia extractor script | Make one script that performs all the steps listed at Wikipedia Extractor. That is, it should take a wikipedia dump file as input and output a file that is for all intents and purposes identical to what is output by the last step listed on the wiki. There should be no intermediate files stored anywhere, and it should not use any more memory than absolutely necessary. You may wish to consult guampa's [much-improved] fork of the WikiExtractor script at [6], though it doesn't do everything itself either. | User:Firespeaker User:Francis Tyers |
research | Document materials for a language not yet on our wiki | Document materials for a language not yet on our wiki. This should look something like the page on Aromanian—i.e., all available dictionaries, grammars, corpora, machine translators, etc., print or digital, where available, whether Free, etc., as well as some scholarly articles regarding the language, especially if about computational resources. | User:Firespeaker User:Francis Tyers |
research | Tag and align Albanian--Macedonian corpus | Take a Albanian--Macedonian corpus, for example SETimes, tag it using the apertium-sq-mk pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Albanian--Serbo-Croatian corpus | Take a Albanian--Serbo-Croatian corpus, for example SETimes, tag it using the apertium-sq-sh pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Albanian--Bulgarian corpus | Take a Albanian--Bulgarian corpus, for example SETimes, tag it using the apertium-sq-bg pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Albanian--English corpus | Take a Albanian--English corpus, for example SETimes, tag it using the apertium-sq-en pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Macedonian--Serbo-Croatian corpus | Take a Macedonian--Serbo-Croatian corpus, for example SETimes, tag it using the apertium-mk-sh pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Macedonian--English corpus | Take a Macedonian--English corpus, for example SETimes, tag it using the apertium-mk-en pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Serbo-Croatian--Bulgarian corpus | Take a Serbo-Croatian--Bulgarian corpus, for example SETimes, tag it using the apertium-sh-bg pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Serbo-Croatian--English corpus | Take a Serbo-Croatian--English corpus, for example SETimes, tag it using the apertium-sh-en pair, and word-align it using GIZA++. | User:Francis Tyers |
research | Tag and align Bulgarian--English corpus | Take a Bulgarian--English corpus, for example SETimes, tag it using the apertium-bg-en pair, and word-align it using GIZA++. | User:Francis Tyers |
code | Write a program to extract Greek noun inflections | Write a program to extract Greek inflection information for nouns from Wiktionary, see Category:Greek nouns | User:Francis Tyers |
code | Write a program to extract Greek verb inflections | Write a program to extract Greek inflection information for verbs from Wiktionary, see Category:Greek verbs | User:Francis Tyers |
code | Write a program to extract Greek adjective inflections | Write a program to extract Greek inflection information for adjectives from Wiktionary, see Category:Greek adjectives | User:Francis Tyers |
code | Write a program to convert the Giellatekno Faroese CG to Apertium tags | Write a program which converts the tagset of the Giellatekno Faroese constraint grammar. | User:Francis Tyers User:Trondtr |
research | Categorise Russian nouns | Categorise 150 nouns by inflectional endings for the Russian and Ukrainian pair. | User:Francis Tyers |
research | Categorise Russian adjectives | Categorise 100 adjectives by inflectional endings for the Russian and Ukrainian pair. | User:Francis Tyers User:Trondtr |
research | Categorise Russian verbs | Categorise 150 verbs by inflectional endings for the Russian and Ukrainian pair. | User:Francis Tyers User:Trondtr |
code | Syntax tree visualisation using GNU bison | Write a program which reads a grammar using bison, parses a sentence and outputs the syntax tree as text, or graphViz or something. Some example bison code can be found here. | User:Francis Tyers User:Mlforcada |
documentation | Document how to install WikiBhasha with MediaWiki] | WikiBhasha is an extension for MediaWiki to allow translation of content using Microsoft's translator. As the first step to getting it to work with Apertium, we'd like to find out how to install it. | User:Francis Tyers |