Shallow syntactic function labeller/Workplan
A workplan and all progress notes about Shallow syntactic function labeller GSoC 2017 project.
Workplan[edit]
Week | Dates | To do |
---|---|---|
1 | 30th May — 5th June |
|
2 | 6th June — 12th June | |
3 | 13th June — 19th June | |
4 | 20th June — 26th June | |
First evaluation |
Ready-to-use datasets | |
5 | 27th June — 3rd July | |
6 | 4th Jule — 10th July | |
7 | 11th July — 17th July |
|
8 | 18th July — 24th July |
|
Second evaluation |
Well-trained models | |
9 | 25th July — 31th July |
|
10 | 1st August — 7th August |
|
11 | 8th August — 14th August |
|
12 | 15th August — 21th August |
|
13 | 22nd August — 29th August |
|
Final evaluation |
The prototype shallow syntactic function labeller. |
Progress[edit]
Week 1: Datasets for North Sami were created.
- Some tags in the original corpus were replaced with Apertium North Sami tags (like here: https://victorio.uit.no/langtech/trunk/langs/sme/tools/mt/apertium/tagsets/modify-tags.regex).
- Some tags were removed from the original corpus as irrelevant: ABBR, ACR, Allegro, G3, G7, <ext>, Foc_, Qst.
- In cases when there were two lines with analysis for one word, only one analysis has been left.
- Information about derivation was removed too.
- Special "fake" syntactical functions were added for CLB and PUNCT: @CLB and @PUNCT.
- Two types of datasets were created: the first type contains tags for punctuation and clause boundaries and the second does not.
Weeks 2-3: Datasets for Kazakh, Breton and English were created.
NB: the datasets for North Sami and English seem to be pretty big, when Kazakh is comparably small and Breton is even smaller. But it gives us opportunity to check how many data will be enough for training the labeller and is it possible to achieve pretty good results having very small amount of data (like in case of Breton)
- All dependency treebanks were "flattened": words with the @conj and the @parataxis relation took the label of their head (https://github.com/deltamachine/wannabe_hackerman/blob/master/flatten_conllu.py).
- For all languages two types of datasets were created: the first type contains tags for punctuation and the second does not.
- Kazakh
- some mistakes in conllu file were corrected
- double lines were removed
- English
- double lines were removed
- all UD POS and features tags were replaced with Apertium tags
- Breton
- some mistakes in conllu file were corrected
- double lines were removed
- all UD features tags were replaced with Apertium tags
Week 4: Scripts for converting Kazakh, Breton and English UD-treebanks in Apertium stream format were written
Weeks 5-6: Two types of networks were built: a simple RNN network and an encoder-decoder network with attentive mechanism. It seems that simple RNN shows better results in all our cases. Encoder-decoder network shows acceptable results only on very big datasets, like English dataset, but in case of small corpus, like Breton, it is useless, and simple RNN can work with small datasets.
Weeks 7-8: What new was created:
- New datasets (tokens + tags instead of just tags)
- Word2vec and fastText embeddings
Fasttext embeddings helped to improve accuracy of Kazakh model on 10% and accuracy of English model on 3%. Current results: 76% for Breton, 78% for Kazakh, 82% for North Sami and 80% for English. However, models are still need to be improved somehow.
Weeks 9-10: The labeller was built and successfully added instead of the original syntax module in sme-nob pipeline. Also the script for changing the modes was written. Everything seems to okay, though the translation may be not as good as with the original module. Perhaps this is because of some additional functionality of the original sme-nob.syn.rlx.bin.
Weeks 11-12: The labeller was built and added instead of the original syntax module in kmr-eng pipeline. The testpack for two language pairs was built. All code was cleaned up, some docstrings were written. Also there is almost no trash in the github repository anymore.
The main things to do:
- Continue improving the perfomance of models.
- Do more tests.
- Refactore the main code.