Difference between revisions of "Task ideas for Google Code-in"

From Apertium
Jump to navigation Jump to search
Line 21: Line 21:
 
<table class="sortable wikitable">
 
<table class="sortable wikitable">
 
<tr><th>type</th><th>title</th><th>description</th><th>tags</th><th>mentors</th><th>bgnr?</th><th>multi?</th></tr>
 
<tr><th>type</th><th>title</th><th>description</th><th>tags</th><th>mentors</th><th>bgnr?</th><th>multi?</th></tr>
{{Taskidea|type=code|mentors=Fran, Unhammer|tags=c++
+
{{Taskidea|type=interface|mentors=Fran, Masha|tags=annotation, annotatrix
  +
|title=Nicely laid out interface for ud-annotatrix
|title=Refactor/mege the main "processing" functions of lrx-proc
 
  +
|description=Design an HTML layout for the annotatrix tool that makes best use of the space and functions nicely
|description=[[lrx-proc]] has two modes, "-m" mode and default mode. They are implemented by each their huge function, nearly identical to each other. Refactor the code to remove the redundancy, and run tests on lots of text with several language pairs to ensure no regressions.
 
  +
at different screen resolutions.
 
}}
 
}}
  +
</table>
{{Taskidea|type=code|mentors=Fran, Unhammer|tags=c++
 
|title=Profile and improve speed of lrx-proc
 
|description=[[lrx-proc]] is slower than it should be. There is probably some low-hanging fruit. Try profiling it and implementing an improvement.
 
}}
 
{{Taskidea|type=research|mentors=Fran|tags=parsing
 
|title=See if you can precompile xpath expressions or xslt stylesheets
 
|description=An XSLT stylesheet is a program for transforming XML trees. An Xpath expression is a way of specifying a node set in an XML tree. Investigate the possibility of pre-compiling either stylesheets or xpath expressions.
 
}}
 
{{Taskidea|type=research|mentors=Fran, Schindler|tags=parsing
 
|title=Review literature on linearisation of dependency trees
 
|description=A dependency tree is an intermediate representation of a sentence with no implicit word order. Linearisation is finding the appropriate word order for a dependency tree. Do a survey of the available literature and write up a review.
 
}}
 
{{Taskidea|type=research|mentors=Fran
 
|title=Manually annotate/Tag text in Apertium format
 
|description=Take some running text, analyse it using an Apertium analyser then manually disambiguate the result.}}
 
<!-- Convert Chukchi lexicon to HFST/lexc -->
 
{{Taskidea|type=code|mentors=Fran|tags=
 
|title=Convert Chukchi Nouns to HFST/lexc
 
|description=There is a freely available lexicon of Chukchi, a language spoken in the north-east of Russia. The objective of this task is to convert part of the lexicon covering nouns to [[lexc]] format, which is a formalism for specifying concatenative morphology.}}
 
{{Taskidea|type=code|mentors=Fran|tags=
 
|title=Convert Chukchi Numerals to HFST/lexc
 
|description=There is a freely available lexicon of Chukchi, a language spoken in the north-east of Russia. The objective of this task is to convert part of the lexicon covering nouns to [[lexc]] format, which is a formalism for specifying concatenative morphology.}}
 
{{Taskidea|type=code|mentors=Fran|tags=
 
|title=Convert Chukchi Adjectives to HFST/lexc
 
|description=There is a freely available lexicon of Chukchi, a language spoken in the north-east of Russia. The objective of this task is to convert part of the lexicon covering nouns to [[lexc]] format, which is a formalism for specifying concatenative morphology.}}
 
{{Taskidea|type=interface|mentors=Fran, Schindler|tags=HTML,CSS
 
|title=Make a design for a web-based viewer for parallel treebanks
 
|description=(also for viewing diff annotation for same sentence)
 
|tags=dependencies,parallel,web
 
|mentors=Fran,Jonathan}}
 
{{Taskidea|type=code
 
|title=Write a script to convert a UD treebank
 
|description= for a given language to a format suitable for training the perceptron tagger}}
 
{{Taskidea|type=research
 
|title=Train the perceptron tagger for a language
 
|description=The perceptron tagger is a new part-of-speech tagger that was developed for Apertium in the Summer of Code. Take a language from [[languages]] and train the tagger for that language.
 
|mentors=Fran}}
 
{{Taskidea|type=interface
 
|title=Design an annotation tool for disambiguation
 
|description=like c.f. webanno, corpus.mari-language.org, brat
 
|tags=disambiguation,annotation
 
|mentors=Fran,Jonathan}}
 
{{Taskidea|type=interface
 
|title=Design an annotation tool for adding dependencies
 
|description=Like c.f. brat
 
|tags=dependencies,annotation
 
|mentors=Fran,Jonathan}}
 
{{Taskidea|type=code
 
|title=Train lexical selection rules
 
|description= from a large parallel corpus for a language pair
 
|mentors=Fran}}
 
{{Taskidea|type=documentation
 
|title=Document how to set up the experiments for weighted transfer rules
 
|mentors=Fran}}
 
{{Taskidea|type=code
 
|title=convert UD treebank to apertium tags, use unigram tagger
 
|description=(see #apertium logs 2016-06-22)}}
 
{{Taskidea|type=code
 
|title=Write a script to extract sentences from CoNLL-U
 
|description=where they have the same tokenisation as Apertium.
 
|mentors=Fran, wei2912}}
 
{{Taskidea|type=documentation|mentors=Schindler
 
|title=convert [http://youssefsan.eu/wiki/index.php?title=Wolof] to apertium-style documentation
 
|description=
 
}}
 
{{Taskidea|type=code|tags=c++
 
|title=Implement `lt-print --strings` lt-print -s|type=code|tags=c++|mentors=Fran, wei2912}}
 
{{Taskidea|type=code|tags=c++
 
|title=Implement lt-expand -n
 
|description=Implement an algorithm that prints out a transducer but only follows ''n'' cycles.
 
|type=code|tags=c++|mentors=Fran, wei2912}}
 
{{Taskidea
 
|title=in-browser globe with apertium languages as points
 
|description=Use d3 globe to make an apertium language/pair viewer (like [[pairviewer]]), maybe based on [https://www.jasondavies.com/maps/rotate/ this] or [http://bl.ocks.org/KoGor/5994804 this] or [http://bl.ocks.org/dwtkns/4973620 this]. [http://svn.code.sf.net/p/apertium/svn/trunk/apertium-tools/mapviewer/langdata/apertium-languages.tsv This file] contains coordinates of Apertium languages.|mentors=Jonathan, kvld|type=code|tags=js,html,maps}}
 
{{Taskidea|type=code|tags=c++
 
|title=Write a program to detect contexts where a path in a compiled transducer begins with a whitespace
 
|desciption=When a transducer contains a path that begins with whitespace it refuses to load the transducer, but the user has no idea which entry in the dictionary caused the error. If we gave some context to the error then it would be easier to detect the error in the dictionary.}}
 
{{Taskidea|type=code|tags=c++
 
|title=Make the lt-comp compiler print a warning when a path begins with a whitespace.
 
|description=Common mistake in dix files is to have some bad whitespace at places, this needs to be aqutomatically detected in the compilation tool and warning to user issued.}}
 
{{Taskidea
 
|title=apertium-mar-hin: make the TL morph for any part of speech less daft
 
|description=Some morph in Marathi or Hindi are currently daft.
 
|tags=morphology|mentors=vin-ivar}}
 
{{Taskidea
 
|title=add indic scripts/formal latin transliterations
 
|description=Translitteration is a ways to write stuffs in different scripts. Currently some indic scrpts are done only to some WX transliterator|tags=python|mentors=vin-ivar}}
 
{{Taskidea|
 
title=apertium-hin: more consistency with apertium-mar for verbs|tags=morphology|mentors=vin-ivar
 
|description= Verbs in Marath and Hindi are incosistently.
 
|type=code}}
 
{{Taskidea|
 
title=apertium-mar: replace cases with postpositions|tags=morphology|tags=morphology|mentors=vin-ivar
 
|description=Marathi cases are postpositions
 
|type=code}}
 
{{Taskidea|
 
title=apertium-mar: fix modals and quasi-modals|tags=morphology|mentors=vin-ivar
 
|description=Modals in Marathi need fixing
 
|type=code}}
 
 
{{Taskidea
 
|type=code
 
|title=refactor x file in apy
 
|description=Reorganise apy code to be more readable, maintainable and so forth.
 
|mentors=Putti}}
 
{{Taskidea
 
|type=documentation
 
|title=add docstrings to x file in apy
 
|description=docstrings are a way to document python code that can be generated into documentation on the web or in python. See following PEPs in python.org
 
|mentors=Putti, vin-ivar}}
 
{{Taskidea
 
|type=quality
 
|title=write 10 unit tests for apy
 
|mentors=Putti, Unhammer, (sushain?)}}
 
{{Taskidea
 
|type=code
 
|title=add 1 transfer rule
 
|description=Transfer rules are parts of translation process dealing with re-arranging, adding and deleting words. See also [[Short introduction to transfer]]
 
|mentors=Fran, vin-ivar, zfe, kvld}}
 
{{Taskidea
 
|type=code
 
|title=add 50 entries to a bidix
 
|description=Bilingual dictionary (bidix) contains word-to-word translations between languages, e.g. cat-chat or cat-Katze in English to French or German respectively. Add 50 of such word-translations to languages you know.
 
|mentors=Fran, vin-ivar, zfe, kvld, Schindler}}
 
{{Taskidea
 
|type=code
 
|title=write 10 lexical selection rules
 
|description=Write 10 lexical selection rules for a pair already set up with [[lexical selection]]
 
|mentors=Fran, vin-ivar, zfe, Unhammer}}
 
{{Taskidea
 
|type=code
 
|title=write 10 constraint grammar rules
 
|description=[[Constraint grammar]] is a rule-based approach of selecting linguistic readings from ambiguous cases, to improve translation quality etc. See introduction CG here:
 
|mentors=Fran, vin-ivar, zfe, kvld, Unhammer}}
 
{{Taskidea
 
|type=research
 
|title=Document resources for a language
 
|description=Document resources for a language without resources already documented on the wiki. [[Task ideas for Google Code-in/Documentation of resources|read more...]]
 
|mentors=Jonathan, vin-ivar, zfe, Schindler
 
|multi=X|beginner=X}}
 
{{Taskidea
 
|type=research
 
|title=Write a contrastive grammar
 
|description=Document 6 differences between two (preferably related) languages and where they would need to be addressed (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.
 
|mentors=vin-ivar, Jonathan, Fran, zfe, Schindler
 
|beginner=X
 
|multi=X
 
}}
 
{{Taskidea|type=research|mentors=Flammie|tags=hun,dix
 
|title=apertium-hun: match existing apertium-hun paradigms with morphdb.hu
 
|description=Morphdb.hu is another implementation of Hungarian morphology, that has a large lexicon. In order to convert it to apertium format, the classification of the words needs to be mapped to one used in apertium.}}
 
{{Taskidea|type=code|mentors=Flammie|tags=
 
|title=apertium-hun: convert hunmorph.db into apertium
 
|description=one of: See prerequisite task above. }}
 
{{Taskidea|type=code|mentors=Flammie|tags=fin,dix
 
|title=apertium-fin-eng: go through lexicon for potential rubbish words)
 
|description=Apertium's Finnish–English dictionary has been converted from projects, like Finnwordnet, that hae a lot of pairs unsuitable for MT, find and delete them from the file.
 
}}
 
{{Taskidea|type=code|mentors=Flammie|tags=eng,dix
 
|title=apertium-fin-eng: add words from apertium-fin-eng to apertium-eng
 
|description=grep for English words in apertium-fin-eng.fin-eng.dix and classify them according to paradgims. See also: [[Apertium English]])}}
 
{{Taskidea|type=code|mentors=Flammie|tags=apy
 
|title=apertium-apy: add i/o formats)
 
|description=Currently APY web queries get responses in ad hoc json format. Research and implement interoperabilities with further formats, such as: }}
 
{{Taskidea|type=code|mentors=Flammie|tags=apy
 
|title=apertium-apy: write metadata about apertium language pairs
 
|description=CMDI format that can be deployed for CLARIN stuffs}}
 
{{Taskidea|type=code|mentors=Flammie|tags=apy
 
|title=apertium-apy: make more parts of apertium-pipeline on web
 
|description=apertium.org has a web service interface for getting translations or morphological analyses. This should be extended for other functions of apertium as well. more information: [[Apertium Apy]].}}
 
{{Taskidea|type=code|mentors=Flammie|tags=apy
 
|title=Finish suggest-a-word feature so it can be deployed to apertium.org
 
|description=There exists a version from last GSOC of apertium.org translator where user can suggest fixes to unknown word translations among other things, but this is not deployed to server.}}
 
{{Taskidea|type=code|mentors=Flammie|tags=apy
 
|title=Further developments to suggest a word
 
|description=Currently suggested words may be added to wiki by a service, it would make sense to also have e.g. chance to login and get attributed as contributor, as well as other stuff )}}
 
 
{{Taskidea|type=code|mentors=Fran
 
|title=Fix ordering of dependencies in CG matxin format
 
}}
 
{{Taskidea|type=code|mentors=vin-ivar, Unhammer, (Flammie?)
 
|title=CG syntax highlighting plugin for a text editor
 
|description=Write a syntax file for your favourite text editor that provides fancy syntax highlighting for Constraint Grammar
 
}}
 
{{Taskidea|type=code|mentors=vin-ivar
 
|title=Package apertium-lint to install to a prefix
 
|description=apertium-lint currently installs with pip, modify that to allow passing a flag for installing it to a prefix
 
}}
 
{{Taskidea|type=quality|mentors=Unhammer, Jonathan, Kira
 
|title=Fix a bug in Apertium html-tools
 
|description=Fix a currently open issue with [https://github.com/goavki/apertium-html-tools/issues html-tools] in consultation with your mentor.
 
|tags=multi,html,js,html-tools
 
|multi=X}}
 
{{Taskidea|type=quality|mentors=Unhammer, Jonathan, Kira
 
|title=Fix a bug in Apertium APy
 
|description=Fix a currently open issue with [https://github.com/goavki/apertium-apy/issues APy] in consultation with your mentor.
 
|tags=multi,python,apy
 
|multi=X}}
 
{{Taskidea|type=code|mentors=vin-ivar
 
|title=Script to get resources from GF
 
|description=Write a script to scrape words from one particular paradigm in GF and make it usable in Apertium.
 
}}
 
{{Taskidea|type=code|mentors=vin-ivar
 
|title=Create a list of text editors compatible with different scripts
 
|description=Create a list of ten text editors and document their status with representing human text (Latin), RTL text (Arabic), combining characters (Devanagari), etc. Document any bugs with eg. copy/paste and tab indentation.
 
}}
 
{{Taskidea|type=code|mentors=vin-ivar
 
|title=Write a script to strip apertium morphological information from CONLL-U files
 
|description=Write a script to strip apertium morphological information from CONLL-U files so the dependency trees can be rendered okay by the online tools.
 
}}
 
{{Taskidea|type=research|mentors=Jonathan
 
|title=Investigate FST backends for Swype-type input
 
|description=Investigate what options exist for implementing an FST (of the sort used in Apertium [[spell checking]]) for auto-correction into an existing open source Swype-type input method on Android. You don't need to do any coding, but you should determine what would need to be done to add an FST backend into the software. Write up your findings on the Apertium wiki.
 
|mentors=Jonathan
 
|tags=spelling,android
 
}}
 
{{Taskidea|type=code|mentors=Fran|tags=c++
 
|title=Fix a memory leak in matxin-transfer
 
|description=The matxin-transfer program is a component of the [[Matxin]] MT system, a sister system to Apertium. Run valgrind on the code and find and fix a memory leak. There may be serveral.
 
}}
 
{{Taskidea|type=code|mentors=Bech
 
|title=Write a tool helping to test a bidix coherence
 
|description=This tool will generate a file with each lema of the main categories (at least nouns, adjectives ans verbs) found in a bidix. Then this file will be translated to the second language and back to the first one. Looking for changes will allow to detect transfer problems and changes of meaning.
 
}}
 
{{Taskidea|type=quality|mentors=Jonathan, sushain, wei2912
 
|title=fix any begiak issue
 
|description=Fix any open issue for [https://github.com/goavki/phenny/issues begiak] (Apertium's IRC bot), to be chosen in consultation with your mentor.
 
|tags=python,irc
 
|multi=X}}
 
{{Taskidea|type=quality|mentors=Jonathan, sushain, Unhammer, wei2912
 
|title=merge phenny upstream into begiak
 
|description=Merge upstream patches etc. into [https://github.com/goavki/phenny/issues begiak] (Apertium's IRC bot).
 
|tags=git,irc}}
 
{{Taskidea|type=quality|mentors=Jonathan, sushain, Unhammer, wei2912
 
|title=open a pull request for merging begiak modules into upstream
 
|description=Open a pull request to merge features from [https://github.com/goavki/phenny/issues begiak] (Apertium's IRC bot) into upstream.
 
|tags=git,irc}}
 
{{Taskidea|type=code|mentors=Jonathan, sushain, Unhammer, wei2912
 
|title=begiak interface to Apertium's web API
 
|description=Write a module for [[begiak]] (Apertium's IRC bot) that provides access to at least one feature of [[APy]] (Apertium's web API). You may want to base the code off begiak's Apertium translation module (which may not be in 100% working order...).
 
|tags=irc,apy
 
|multi=X}}
 
{{Taskidea|type=research|mentors=Jonathan
 
|title=tesseract interface for apertium languages
 
|description=Find out what it would take to integrate apertium or voikkospell into tesseract. Document thoroughly available options on the wiki.
 
|tags=spelling,ocr}}
 
{{Taskidea|type=interface|mentors=Jonathan,sushain
 
|title=Abstract the formatting for the Html-tools interface.
 
|description=The interface for [[html-tools]] (Apertium's website framework) 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.
 
|tags=css,html-tools}}
 
{{Taskidea|title=improvements to lexc plugin for vim|type=quality|mentors=Jonathan
 
|description=A vim syntax definition file for lexc is presented on the following wiki page: [[Apertium-specific conventions for lexc#Syntax highlighting in vim]]. This plugin works, but it has some issues: (1) comments on LEXICON lines are not highlighted as comments, (2) editing lines with comments (or similar) can be really slow, (3) the lexicon a form points at is not highlighted distinctly from the form (e.g., in the line «асқабақ:асқабақ N1 ; ! "pumpkin"», N1 should be highlighted somehow). Modify or rewrite the plugin to fix these issues.
 
|tags=vim
 
}}
 
{{Taskidea|title=Write a transliteration plugin for mediawiki|mentors=Jonathan|type=code
 
|description=Write a mediawiki plugin similar in functionality (and perhaps implementation) to the way the [http://kk.wikipedia.org/ Kazakh-language wikipedia]'s orthography changing system works ([http://wiki.apertium.org/wiki/User:Stan88#How_to_enable_multiple_Kazakh_language-variants_on_a_mediawiki_instance_.3F documented by a previous GCI student]). It should be able to be directed to use any arbitrary mode from an apertium mode file installed in a pre-specified path on a server.
 
|tags=php}}
 
{{Taskidea
 
|type=documentation
 
|mentors=Schindler
 
|title=add comments to .dix file symbol definitions
 
|tags=dix
 
}}
 
{{Taskidea
 
|type=documentation
 
|mentors=Schindler
 
|title=find symbols that aren't on the list of symbols page
 
|description=Go through symbol definitions in Apertium dictionaries in svn (.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.
 
|tags=wiki,lexc,dix
 
}}
 
{{Taskidea
 
|type=code
 
|title=conllu parser and searching
 
|description=Write a script (preferably in python3) that will parse files in conllu format, and perform basic searches, such as "find a node that has an nsubj relation to another node that has a noun POS" or "find all nodes with a cop label and a past feature"
 
|tags=python,dependencies
 
|mentors=Jonathan, Fran
 
}}
 
{{Taskidea
 
|type=code
 
|title=group and count possible lemmas output by guesser
 
|mentors=Jonathan, Fran
 
|description=Currently a "guesser" version of Apertium transducers can output a list of possible analyses for unknown forms. Develop a new pipleine, preferably with shell scripts or python, that uses a guesser on all unknown forms in a corpus, and takes the list of all possible analyses, and output a hit count of the most common combinations of lemma and POS tag.
 
|tags=guesser,transducers,shellscripts
 
}}
 
{{Taskidea
 
|type=code
 
|title=vim mode/tools for annotating dependency corpora in CG3 format
 
|mentors=Jonathan, Fran
 
|description=includes formatting, syntax highlighting, navigation, adding/removing nodes, updating node numbers, etc.
 
|tags=vim,dependencies,CG3
 
}}
 
{{Taskidea
 
|type=code
 
|title=vim mode/tools for annotating dependency corpora in CoNLL-U format
 
|mentors=Jonathan, Fran
 
|description=includes formatting, syntax highlighting, navigation, adding/removing nodes, updating node numbers, etc.
 
|tags=vim,dependencies,conllu
 
}}{{Taskidea
 
|type=quality
 
|title=figure out one-to-many bug in the [[lsx module]]
 
|mentors=Jonathan, Fran
 
|description=
 
|tags=C++,transducers,lsx
 
}}{{Taskidea
 
|type=code
 
|title=add an option for reverse compiling to the [[lsx module]]
 
|mentors=Jonathan, Fran
 
|description=this should be simple as it can just leverage the existing lttoolbox options for left-right / right-left compiling
 
|tags=C++,transducers,lsx
 
}}{{Taskidea
 
|type=quality
 
|title=remove extraneous functions from lsx-comp and clean up the code
 
|mentors=Jonathan, Fran
 
|description=
 
|tags=C++,transducers,lsx
 
}}{{Taskidea
 
|type=quality
 
|title=remove extraneous functions from lsx-proc and clean up the code
 
|mentors=Jonathan, Fran
 
|description=
 
|tags=C++,transducers,lsx
 
}}{{Taskidea
 
|type=code
 
|title=script to test coverage over wikipedia corpus
 
|mentors=Jonathan
 
|description=Write a script (in python or ruby) that in one mode checks out a specified language module to a given directory, compiles it (or updates it if already existant), and then gets the most recently nightly wikipedia archive for that language and runs coverage over it (as much in RAM if possible). In another mode, it compiles 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.
 
|tags=python,ruby,wikipedia
 
}}</table>
 
   
   

Revision as of 10:25, 10 October 2017

Contents

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 does not include time taken to install / set up apertium.
  2. 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 ideas

typetitledescriptiontagsmentorsbgnr?multi?
interface Nicely laid out interface for ud-annotatrix Design an HTML layout for the annotatrix tool that makes best use of the space and functions nicely at different screen resolutions. annotation, annotatrix Fran, Masha