Difference between revisions of "User:Deltamachine/proposal"
Jump to navigation
Jump to search
Deltamachine (talk | contribs) |
Deltamachine (talk | contribs) (Blanked the page) |
||
(35 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Contact information == |
|||
<p>'''Name:''' Anna Kondratjeva</p> |
|||
<p>'''Location:''' Moscow, Russia</p> |
|||
<p>'''E-mail:''' an-an-kondratjeva@yandex.ru</p> |
|||
<p>'''Phone number:''' +79250374221</p> |
|||
<p>'''Github:''' http://github.com/deltamachine</p> |
|||
<p>'''IRC:''' deltamachine</p> |
|||
<p>'''SourceForge:''' deltamachine</p> |
|||
<p>'''Timezone:''' UTC+3</p> |
|||
== Skills and experience == |
|||
<p>'''Education:''' Bachelor's Degree in Fundamental and Computational Linguistics (2015 - expected 2019), National Research University «Higher School of Economics» (NRU HSE)</p> |
|||
<p>'''Main university courses:'''</p> |
|||
<ul> |
|||
<li>Theory of Language (Phonetics, Morphology, Syntax, Semantics)</li> |
|||
<li>Programming (Python)</li> |
|||
<li>Computer Tools for Linguistic Research</li> |
|||
<li>Language Diversity and Typology</li> |
|||
<li>Introduction to Data Analysis</li> |
|||
<li>Math (Discrete Math, Linear Algebra and Calculus, Probability Theory and Mathematical Statistics)</li> |
|||
</ul> |
|||
<p>'''Technical skills:''' Python (advanced), HTML, CSS, Flask, Django, SQLite (familiar)</p> |
|||
<p>'''Projects and experience:''' http://github.com/deltamachine</p> |
|||
<p>'''Languages:''' Russian (native), English, German</p> |
|||
== Why is it you are interested in machine translation? == |
|||
I am truly interested in machine translation, because it countains my two most favourite fields of studies - linguistics and programming. As a computational linguist, I would like to know how machine translation systems are builded, how they work with language material and how we can improve results of their work. So, on the one hand, I can learn a lot of new things about structures of different languages while working with machine translation system like Apertium, on the other hand, I can significantly improve my coding skills, learn more about natural language processing and create something great and useful. |
|||
== Why is it that you are interested in Apertium? == |
|||
There are three main reasons of why I want to work with Apertium: |
|||
<p>1. Apertium works with a lot of minority languages, which is great, because it is quite unusual for machine translation system. There are a lot of systems, which can translate from English to German well enough, but there are a very few, which can translate, for example, from Kazakh to Tatar. Apertium is one of the said systems, and I believe they do a very important job.</p> |
|||
<p>2. Apertium does rule-based machine translation, which is unusual too. But, as a linguist, I am very curious about learning more about this approach, because rule-based translation requires close working with language structure and a big amount of language data.</p> |
|||
<p>3. Apertium community is very friendly, helpful, responsive and open to new members, which is very attractive.</p> |
|||
== Which of the published tasks are you interested in? What do you plan to do? == |
|||
I would like to implement a prototype shallow syntactic function labeller. |
|||
==== A brief concept: ==== |
|||
The shallow syntactic function labeller takes a string in Apertium-stream-format, parses it into a sequence of morphological tags and gives it to a classifier. |
|||
The classifier is a sequence-to-sequence model trained on prepared datasets, which were created from parsed UD-treebanks. The encoding dataset contains a big amount of morphological tags' sequences, the decoding dataset contains the same amount of labels' sequences, in both cases one sequence is a one sentence. |
|||
The classifier analyzes the given sequence of morphological tags, gives a sequence of labels as an output and the labeller applies these labels to the original string. |
|||
== Reasons why Google and Apertium should sponsor it == |
|||
Firstly, the shallow syntactic function labeller will help to improve the quality of Apertium's translation. Secondly, there are currently not too many projects about using machine learning methods for rule-based machine translation and shallow syntactic function labelling, so my work will help to learn more abour this approach. |
|||
== A description of how and who it will benefit in society == |
|||
In many languages (especially in ergative ones) it is very useful to know a syntatic function of a word for making an adequate translation. So, the shallow syntactic function labeller, as a part of Apertium system, will help to improve the quality of translation for many language pairs. |
|||
== Work plan == |
|||
=== Post application period === |
|||
<ul> |
|||
<li>Getting closer with Apertium, reading documentation, playing around with its tools</li> |
|||
<li>Setting up Linux and getting used to it</li> |
|||
<li>Learning more about machine learning</li> |
|||
<li>Learning more about UD treebanks</li> |
|||
</ul> |
|||
=== Community bonding period === |
|||
<ul> |
|||
<li>Choosing language pairs, with which shallow function labeller will work.</li> |
|||
<li>Choosing the most suitable Python ML library (the task can be done with Tensorflow, but we may need a library, which is not so complex and has a simple runrime)</li> |
|||
<li>Thinking about how to integrate the classifier to Apertium</li> |
|||
</ul> |
|||
=== Work period === |
|||
<ul> |
|||
==== Part 1, weeks 1-4: preparing the data ==== |
|||
<p></p> |
|||
<li>'''Week 1:''' writing scripts for parsing UD-treebanks</li> |
|||
<li>'''Week 2:''' writing scripts for parsing UD-treebanks, creating datasets</li> |
|||
<li>'''Week 3:''' creating datasets (in a few possible variants)</li> |
|||
<li>'''Week 4:''' writing a script for parsing string in Apertium-stream-format into a sequence of morphological tags </li> |
|||
<li>'''Deliverable #1, June 26 - 30'''</li> |
|||
<p></p> |
|||
==== Part 2, weeks 5-8: building the classifier ==== |
|||
<p></p> |
|||
<li>'''Week 5:''' building the model</li> |
|||
<li>'''Week 6:''' training the classifier, evaluating the quality of the prototype</li> |
|||
<li>'''Week 7:''' further training, working on improvements of the model</li> |
|||
<li>'''Week 8:''' final testing</li> |
|||
<li>'''Deliverable #2, July 24 - 28'''</li> |
|||
<p></p> |
|||
==== Part 3, weeks 9-12: integrating the labeller to Apertium ==== |
|||
<p></p> |
|||
<li>'''Week 9:''' writing a script, which applies labels to the original string Apertium-stream-format, collecting all parts of the labeller together</li> |
|||
<li>'''Week 10:''' integrating the labeller to Apertium</li> |
|||
<li>'''Week 11:''' integrating the labeller to Apertium, testing, fixing bugs</li> |
|||
<li>'''Week 12:''' cleaning up the code, writing documentation</li> |
|||
<li>'''Project completed:''' the prototype shallow syntactic function labeller, which is able to label sentences in supported languages.</li> |
|||
</ul> |
|||
== Non-Summer-of-Code plans you have for the Summer == |
|||
I have exams in the university until the third week of June, so I will be able to work only 20-25 hours per week. But I will try to pass as many exams as possible ahead of schedule, in May, so it may be changed. |
|||
After that I will be able to work full time and spend 45-50 hours per week on the task. |
|||
== Coding challenge == |
|||
<p>https://github.com/deltamachine/wannabe_hackerman</p> |
|||
<ul> |
|||
<li>''flatten_conllu.py:'' A script that takes a dependency treebank in UD format and "flattens" it, that is, applies the following transformations:</li> |
|||
<ul> |
|||
<li>Words with the @conj relation take the label of their head</li> |
|||
<li>Words with the @parataxis relation take the label of their head</li> |
|||
</ul> |
|||
<li>''calculate_accuracy_index.py:'' A script that does the following:</li> |
|||
<ul> |
|||
<li>Takes -train.conllu file and calculates the table: surface_form - label - frequency</li> |
|||
<li>Takes -dev.conllu file and for each token assigns the most frequent label from the table</li> |
|||
<li>Calculates the accuracy index</li> |
|||
</ul> |
|||
<li>''label_asf:'' A script that takes a sentence in Apertium stream format and for each surface form applies the most frequent label from the labelled corpus. |
|||
</li> |
|||
</ul> |