Task ideas for Google Code-in

From Apertium
Jump to navigation Jump to search

This is the task ideas page for Google Code-in, 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:

  1. 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.
  • design: Tasks related to user experience research or user interface design and interaction

Clarification of "multiple task" types

  • multi = number of students who can do a given task
  • dup = number of times a student can do the same task

You can find descriptions of some of the mentors here.

Task ideas

The current task ideas here are for 2019. See Talk:Task ideas for Google Code-in for task ideas from previous years.

typetitledescriptiontagsmentorsbgnr?multi?duplicates
research, quality, documentation Adopt a Wiki page Request an Apertium wiki account and adopt a wiki page by updating and fixing any issues with it. Examples of things to update might be documentation that still refers to our SVN repo (we're on GitHub now), documentation of new features, clarification of unclear things, indicating that a page no longer reflects how things are done, or updating documentation to reflect the current options and defaults of various tools. wiki * yes 150
research, code expand coverage of Kyrgyz to English structural transfer Find a sentence in Kyrgyz that once the lexical items are added to the bilingual dictionary is not fully (or correctly) parsed by the kir-eng-transfer Apertium mode. Determine what rule(s) need(s) to be added (or fixed) to cover this structure, and update apertium-eng-kir.kir-eng.rtx accordingly. You will first want to clone and compile apertium-eng-kir. Kyrgyz, English, recursive transfer, pairs JNW, popcorndude 150 10
code Add recursive transfer support to a language pair that doesn't support it Make a branch of an Apertium language pair that doesn't support recursive transfer and call it "recursive transfer". Add vanilla .rtx files for both directions, and modify Makefile.am and modes.xml so that the branch compiles and runs. See this page for instructions on how to do this. recursive transfer, pairs JNW, popcorndude yes 150 10
code Add 2 recursive transfer rules to a language pair Add two recursive transfer rules to an Apertium language pair. These rules consist of, at minimum, a syntactic pattern to match, a phrase to combine them into, and an output pattern (more documentation here). If the language pair does not support recursive transfer, make sure to set it up first. recursive transfer, pairs JNW, popcorndude 150 20
code Use apertium-init to bootstrap a new language pair Use the Apertium-init script to bootstrap a new translation pair between two languages which have monolingual modules already in Apertium. To see if a translation pair has already been made, search our repositories on github, and especially ask on IRC. Add 100 common stems to the dictionary. Your submission should be in the form of a repository on github that we can fork to the Apertium organisation. languages, bootstrap, dictionaries, translators JNW, wei2912, padth4i yes 25
code Use apertium-init to bootstrap a new language module Use the Apertium-init script to bootstrap a new language module that doesn't currently exist in Apertium. To see if a language is available, search our repositories on github, and especially ask on IRC. Add enough stems and morphology to the module so that it analyses and generates at least 100 correct forms. Your submission should be in the form of a repository on github that we can fork to the Apertium organisation. Read more about adding stems... languages, bootstrap, dictionaries JNW, wei2912, padth4i yes 25
code Write 10 lexical selection for an existing translation pair Add 10 lexical selection rules to an existing translation pair. Submit your work as a github pull request to that pair. Read more... languages, bootstrap, lexical selection, translators JNW, sevilay, Unhammer, marcriera, padth4i 25 5
code Write 10 constraint grammar rules for an existing language module Add 10 constraint grammar rules to an existing language module for a language that you know. Submit your work as a github pull request to that pair. Read more... languages, bootstrap, constraint grammar JNW, Unhammer, padth4i 25 5
research Syntactic annotation of text Pick a text of about 200 words and make a syntactic annotation for it according to the Universal Dependencies treebank. UD Annotatrix can be used for visualisation. Consult with your mentor about the language. UD, trees, annotation anakuz, fotonzade, khannatanmai
research Create a UD-Apertium morphology mapping Choose a language that has a Universal Dependencies treebank and tabulate a potential set of Apertium morph labels based on the (universal) UD morph labels. See Apertium's list of symbols and UD's POS and feature tags for the labels. morphology, ud, dependencies JNW,ftyers, fotonzade, khannatanmai, anakuz 5
research Create an Apertium-UD morphology mapping Choose a language that has an Apertium morphological analyser and adapt it to convert the morphology to UD morphology morphology, ud, dependencies JNW, ftyers, fotonzade, khannatanmai, anakuz 5
quality Install Apertium and verify that it works See Installation for instructions and if you encounter any issues along the way, document them and/or improve the wiki instructions! bash ftyers, JNW, Unhammer, anakuz, Josh, fotonzade, sevilay, eirien, wei2912, padth4i yes 150
research Write a contrastive grammar Document 6 differences between two (preferably related) languages and where they would need to be addressed in the Apertium pipeline (morph analysis, transfer, etc). Use a grammar book/resource for inspiration. Each difference should have no fewer than 3 examples. Put your work on the Apertium wiki under Language1_and_Language2/Contrastive_grammar. See Farsi_and_English/Pending_tests for an example of a contrastive grammar that a previous GCI student made. wiki, languages Mikel, JNW, Josh, xavivars, fotonzade, sevilay, khannatanmai, dolphingarlic, padth4i yes 40
quality Add 200 new entries to the bilingual dictionary of language pair %AAA%-%BBB% Our translation systems require large lexicons so as to provide production-quality coverage of any input data. This task requires the student to add 200 new words to a bidirectional dictionary. Read more... xml, dictionaries Mikel, anakuz, xavivars, fotonzade, sevilay, Unhammer, eirien, dolphingarlic, wei2912, marcriera, padth4i yes 40
quality Add 500 new entries to the bilingual dictionary of language pair %AAA%-%BBB% Our translation systems require large lexicons so as to provide production-quality coverage of any input data. This task requires the student to add 500 new words to a bidirectional dictionary. Read more... xml, dictionaries Mikel, anakuz, xavivars, fotonzade, ftyers, sevilay, eirien, dolphingarlic, wei2912, marcriera, padth4i no 10
quality Post-edit 500 sentences of any public domain text from %AAA% to %BBB% Many of our systems benefit from statistical methods used with (ideally public domain) bilingual data. For this task, you need to translate a public domain text from %AAA% to %BBB% using any available machine translation system and clean up the translations yourself manually. Commit the post-edited texts (in plain text format) to an existing (via pull request) or if needed new github repository for the pair in dev/ or texts/ folder. The texts are subject to mentor approval. xml, dictionaries fotonzade, JNW, ftyers, anakuz, xavivars, Mikel, shardulc, sevilay, Unhammer, khannatanmai, dolphingarlic, wei2912, marcriera yes 10
quality Disambiguate 500 tokens of text in %AAA% Run some text through a morphological analyser and disambiguate the output. Discuss with the mentor beforehand to approve the choice of language and text. Read more... disambiguation Mikel, anakuz, xavivars, fotonzade, sevilay, khannatanmai, dolphingarlic, wei2912, marcriera, padth4i yes
research Categorise 100 words from frequency list in %AAA% Categorise words by frequency into one of the major part-of-speech categories. You will receive a frequency list. Work from top to bottom. At the beginning of each line you should put a letter which categorises the word form by its part-of-speech. For example n for noun, v for verb, etc. Read more... dictionaries eirien, khannatanmai, anakuz, marcriera, padth4i yes yes
research Categorise 500 words from frequency list in %AAA% Categorise words by frequency into one of the major part-of-speech categories. You will receive a frequency list. Work from top to bottom. At the beginning of each line you should put a letter which categorises the word form by its part-of-speech. For example n for noun, v for verb, etc. Read more... dictionaries eirien, anakuz, sevilay. marcriera yes
research Evaluate an existing apertium pair %AAA% to %BBB% on a text Pick an existing apertium pair and get a parallel text for that language pair. Translate %AAA% to %BBB% and evaluate the translation using an automatic evaluation metric like BLEU or/and evaluate it manually (?) Read more... evaluation khannatanmai, sevilay, padth4i
code, research Add apertium-anaphora support to a new language pair Make a branch of an Apertium language pair that doesn't use apertium-anaphora yet, and call it "anaphora". Manually add the correct antecedent to side ref of the anaphors in the output of biltrans, and modify t1x to change the anaphor based on its antecedent. Verify that it runs and gives the correct anaphor. See the documentation of the apertium-anaphora module for help. apertium-anaphora, transfer khannatanmai
code, research Add one markable to the arx file for a language pair The arx file is where we tell the anaphora resolution algorithm which patterns to detect and score, when we want to find the antecedent of an anaphor. Add one rule in this file which can help the algorithm find out the antecedent of an anaphor - specify the pattern to detect and the positive or negative score you want to give to the noun in this pattern. See the documentation of the apertium-anaphora module for help. apertium-anaphora, anaphora resolution khannatanmai
code Write a TextMate grammar for CG-3 syntax highlighting We want CG-3 files to be syntax highlighted in Github. They use TextMate-compatible grammars. See issue 48 in the CG-3 repo. cg, editors, tools Unhammer
code Make Apertium IRC bot's messaging system case-insensitive Begiak is Apertium's IRC bot. It has a messaging system, where you can say e.g. "begiak, tell randomuser thanks for the tip!" or "begiak: ask randomuser where they filed that issue", and the bot will deliver the message next time it sees randomuser say something. There's been a request for begiak to recognise case-insensitive commands. Your job is to create a fix for this and submit a pull request to the repository with the fix. python, irc JNW yes
code Make Apertium's IRC bot's updating of Apertium's wiki format numbers better Begiak is Apertium's IRC bot. It has a module that allows users on IRC to trigger a script that updates the Apertium wiki with statistics about Apertium modules. There have been complaints about the formatting of the numbers it writes. Your job is to create a fix for this and submit a pull request to the repository with the fix. python, irc, wiki JNW yes
code Create a new init script for Apertium's IRC bot Begiak is Apertium IRC bot. It runs on a low-power server that runs Debian. Sometimes that server is reset, and we have to manually restart begiak. The init script that used to control begiak no longer seems to work. Your task is to create a new init script that supports the normal sort of actions that init scripts do, and also the following options for begiak: the specific path to run it from, the user to run it as, miscellaneous arguments, and a log file to log its output. This init script should live in the repository in a reasonable place. There is a github issue describing this task. python, debian, init, irc JNW
documentation Add comments to a dictionary defining the symbols used in it Add comments to a monolingual or bilingual dictionary file (.lexc/.dix, .dix) in the symbol definitions area that clarify what each symbol stands for. Also direct the comment reader to the Apertium wiki page on symbol definitions for more information. dictionaries JNW, Flammie 10
documentation find symbols that aren't on the list of symbols page Go through the symbol definitions in Apertium dictionaries on GitHub (.lexc and .dix format), and document any symbols you don't find on the List of symbols page. This task is fulfilled by adding at least one class of related symbols (e.g., xyz_*) or one major symbol (e.g., abc), along with notes about what it means. wiki,dictionaries JNW
documentation document usage of the apertium-separable module Document which language pairs have included the apertium-separable module in its package, which have beta-tested the lsx module, and which are good candidates for including support for lsx. Add to this wiki page C++, transducers, lsx JNW
quality beta testing the apertium-separable create an lsx dictionary in both directions for any relevant and existing language pair that doesn't yet support it (as a "separable" branch in its GitHub repository), adding 10-30 entries to it in one or both directions. Thoroughly test to make sure the output is as expected. Report bugs/non-supported features and add them to future work. Document your tested language pair by listing it under Lsx_module#Beta_testing and in this wiki page C++, transducers, lsx JNW, ftyers, wei2912 yes yes
code, quality script to test coverage of analyser over corresponding wikipedia corpus Write a script (in python or ruby) that tests coverage of an Apertium analyser over the latest Wikipedia corpus in that language. One mode of this script should check out a specified language module to a given directory, compile it (or updates it if already existant), and then get the most recently Wikipedia nightly archive for that language and run coverage over it (as much in RAM if possible). In another mode, it should compile the language pair in a docker instance that it then disposes of after successfully running coverage. Scripts exist in Apertium already for finding where a Wikipedia is, extracting a Wikipedia archive into a text file, and running coverage. Ask a mentor for help finding these scripts. python, ruby, wikipedia Jonathan, wei2912

Mentors

These are languages that can be substituted for AAA and/or BBB for tasks each mentor is listed to mentor above.

Mentor Languages
ftyers eng, spa, cat, fra, nor, rus, por, swe, tur, gag, aze
JNW eng, spa, fra, rus, tur, gag, aze, kaz, kir, kaa, tat, bak, kum, nog, kaa, uzb, uig, crh, khk, yid
anakuz grn, spa, por, rus
fotonzade eng, tur, aze, uig, tat, crh, kmr, ckb, fas
xavivars cat, spa, eng, fra
unhammer nno, nob, swe, dan, fao, sme, ovd
shardulc eng, fra, mar, hin, urd, kan
m-alpha eng, fra, byv
popcorndude eng, spa
sevilay eng, ara, tur, kaz, aze, tat, gag, uig, uzb, crh, kum
eirien sah, rus, eng
khannatanmai eng, hin
flammie fin, krl, olo, hun, nio, kpv, mdf, tlh, fra, swe, eng, est, ekk, vro
dolphingarlic afr, deu, eng
wei2912 eng, zho
marcriera cat, spa, eng, ron
padth4i eng, mal, hin

Counts

Last updated by Eirien (talk) 22:29, 24 October 2019 (UTC+3).

Category Count
code 35
documentation 5
research 11
quality 10
design 5
Total 66