Implementation of Self-Governing Neural Networks for speech act classification

Implementation of the SGNN paper for speech act classification.

This repository is inspired by Guillaume Chevalier's implementation, as well as his discussion with Sava Kalbachou. This version implements some things differently from Guillaume's code, in an attempt to resemble the paper more, and extends beyond the projection layer all the way to a fully trainable network.

The network is trained to classify the SwDA corpus utterances according to their speech act. The corpus was was pre-processed using Cristopher Pott's project related to it. To follow Lee & Dernoncourt SwDA data split, as in the SGNN paper, we added adequate functionality in our branch of that repo. The pre-processed data is included in the data folder for repeateability.

The original SGNN paper reports a SwDA accuracy of 83.1. With this implementation, I have only managed to achieve a maximum accuracy of 71.3; if you achieve a better score, please share your settings in an issue :)

How to use

  • Install all dependencies; use environment.yml file as reference.

  • Open the 00_core.ipynb notebook and modify REPO_PATH = "<PATH-TO-SGNN-REPO>" in the last cell. Modify any parameters you want to tweak from the network, then run the whole notebook.

  • Alternatively, you can use core.py from the terminal or a Python IDE.