Shallow syntactic function labeller

From Apertium
Revision as of 08:01, 15 August 2017 by Deltamachine (talk | contribs)
Jump to navigation Jump to search

This is Google Summer of Code 2017 project

A repository for the whole project: https://github.com/deltamachine/shallow_syntactic_function_labeller

A workplan and progress notes can be found here: Shallow syntactic function labeller/Workplan

Description

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 simple RNN model trained on prepared datasets which were made from parsed syntax-labelled corpora (mostly UD-treebanks). 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.

Labeller in the pipeline

In sme-nob the labeller runs between sme-nob-disam and sme-nob-pretransfer, like an original syntax module.

... | cg-proc 'sme-nob.mor.rlx.bin' | python 'sme-nob-labeller.py' | apertium-pretransfer | lt-proc -b 'sme-nob.autobil.bin' | ...

In other language pairs it may run between morphological analyzer and pretransfer.

Prerequisites

1. Python libraries:

2. Precompiled language pairs which support the labeller (sme-nob)

Installation

Currently only the test version for sme-nob pair is available.

git clone https://github.com/deltamachine/sfl_testpack.git
cd sfl_testpack

Script install_labeller.py adds all the needed files in apertium-sme-nob directory and changes all files with modes.

Arguments:

  • apertium_path: path to your apertium-sme-nob directory
  • python_path: path to current Python interpreteur (NB: if you just type "python" instead of full path, some dependencies might not work)
  • work_mode: -install for installing the labeller and changing modes, -change for just changing modes.
  • type_of_change: -lb for using the labeller in the pipeline, -cg for using the original syntax module (sme-nob.syn.rlx.bin) in the pipeline.


For example, this script will install the labeller and add it to the pipeline:

python install_labeller.py /home/user/apertium/apertium-sme-nob /home/user/anaconda3/bin/python -install -lb

And this script will backward modes changes:

python install_labeller.py /home/user/apertium/apertium-sme-nob /home/user/anaconda3/bin/python -change -cg

To do

  • Add an ability to handle more than one sentence.
  • Do more tests. MORE.
  • Write docstrings and refactore the main code.
  • Take the trash out of the github repository before the final evaluation.
  • Continue improving the perfomance of the models.