Final projects
This page describes requirements and presents ideas for doing a computational linguistics final project.
Contents
Requirements
The project
The project should be something new that could be potentially useful to a linguistic community or people working with linguistic communities. Some project ideas are listed below. Most projects will require some form of evaluation of the results, and should be released to the general public.
Evaluation
Part of your project is to evaluate the effectiveness of whatever you made. An appropriate method for evaluating your project should be established in consultation with the professor. This requirement may be waived in extreme cases.
Examples include:
- If you improve or make a transducer, you should test coverage over a large corpus and precision and recall against hand-annotated randomly selected forms;
- If you improve or make an MT system, you should test trimmed coverage and WER and PER.
Publishing
Your final project should be published and publicly accessible.
- Make a wiki page
User:Username/Final_project
which outlines what you did, links to your code, and provides the results of your evaluation.- Put the page in the category Category:sp18_FinalProjects.
- Also document any things you are aware of that still need to be done.
- Put code somewhere public (github.com or similar)
- Include the following files:
- a
README
file overviewing what the code is, what it does, and examples of how to use it, and links back to your wiki page - a
AUTHORS
file providing your name (or alias) and some way of contacting you (can be a throw-away email address that forwards to your main address)—be as anonymous or open with your identity as you want. - a
COPYING
orLICENSE
file that includes a copy of the open-source license you chose to release the project under - If your project is completed by way of contribution to an existing code base, make sure these files are there too, but also link the wiki page to each commit you made or any issue tracker you interacted with (e.g., list the issues you took on).
- a
Submission
When you're done with the project, send an email to the professor with a link to the wiki page on the project.
Due date for 2017 is Monday, May 8th at the end of the day (midnight) Wednesday, May 10th at the end of the day (midnight).
Presentation
During finals periods, you will present your progress on the project to that point in the form of a poster. This semester, we will meet on Tuesday, May 15th from 9:00 to noon for these presentations.
Besides being available to answer questions about the poster, you will give a short (30-second) introduction to your project, as well as a longer (5-10 minute) presentation of your poster.
These are topics you should cover:
- A description of the problem addressed by your project. For some projects this may require thinking about it in a somewhat new light. Whether or not the problem is something we've dealt with in class, provide a brief but complete introduction to the problem.
- Any previous work you've found that also addresses this problem or similar problems, and how it relates to what you're doing.
- Your thoughts on who might benefit from your project and in what way. E.g., might a language community be able to find a use for what you're doing, or maybe [computational] linguists working on a language or issue?
- How you're approaching the solution to the overall problem, including how you're implementing the solution. You can talk here about smaller individual issues that have arisen as well.
- How you're evaluating the effectiveness of the solution, and some preliminary look at results of the evaluation. We'll understand that the project isn't yet complete, so the evaluation may show that the project is entirely ineffective and useless :-P
Project ideas
This section lists some ideas for final projects, but you should not feel limited by these ideas.
Extending what you've done
title | description | good if… |
---|---|---|
Mature tagger | Expand analyser (up to ~85% coverage on large corpus), improve disambiguation, and evaluate performance of both | if you have a large corpus to work from |
Spell checker | Expand analyser (up to ~85% coverage on large corpus), set up spell checker, add weights, evaluate performance, demonstrate in libreoffice | if you have a large corpus to work from |
State-of-the-art MT System | Improve one direction of the MT system you developed this semester so that it has ~85% trimmed coverage on a large corpus and mostly passes testvoc. | if you think you can make something good enough where the next step would be for a native speaker to evaluate its output |
New MT System | Make a polished MT system between your language and either a closely related language or a big language for which there are already good resources | if you're good at structural transfer |
UD Corpus + Annotation standards | Create and release a good sized UD corpus of your language and release annotation guidelines for it | if you have a large/diverse enough Free corpus (>500 sentences) that you can understand (e.g., one with glosses) and you like syntactic annotation |
Going beyond what you've done
title | description | good if… |
---|---|---|
Transducer for a new language | Create a transducer for a language that doesn't seem to have an open source transducer available. Under-resourced languages preferred. | if you feel like you got the hang of lexc and twol, and have interest in another language |
Keyboard layout suite | Create keyboard layouts for multiple operating systems (Windows, Mac, iOS, Android, etc.) and release all of them together, with documentation about use and design principles. | if you have strong opinions about keyboard use and don't want to code or do analysis |
Matxin translator | Create a Matxin version of your translation pair (or another translation pair, in consultation with the professor). | if you're good at syntax, don't mind xml, and are a little masochistic... |
Something new
title | description | good if… |
---|---|---|
UD Annotatrix | Go through the list of issues to improve the UD annotatrix interface | if you're good with javascript/jquery, or want to learn |
Paradigm generation site | Make a maintainer-configurable (i.e., usable for any language) web application for generating paradigms of a given POS (noun/verb) in morphologically rich languages that queries Apertium's web API to fill in the forms. | if you're good with javascript, or want to learn |
Autoglosser | Create a script that can convert the output of a parser (e.g., UD) into interlinear glossed text in a variety of formats (LaTeX, general html/css, MediaWiki, command-line readable), testing with your language. | if you're good at a scripting language (e.g., python), or want to learn |
Mobile keyboard with auto-correct | With some coding, an Android keyboard may be able to use the acceptor part of a transducer (i.e., a spell-checker) for auto-correction/suggestion. | if you have Android development experience or want to learn |
Tokenisation for spaceless orthographies | Figure out a way to tokenise text (for morphological analysis) in a language that doesn't use spaces in its orthography / has optional spaces, and implement it into lt-proc or hfst-proc. | if you're good at C++ and like thinking about how spaceless orthographies are readable. |