Home

Awesome

Saul: Declarative Learning Based Programming

Build Status Build status

Saul is a modeling language implemented as a domain specific language (DSL) in Scala. The main goal of Saul is to facilitate designing machine learning models with arbitrary configurations for the application programmer, including:

The flexibility in designing above components helps rapid development of intelligent AI systems with one or more learned functions that interact with each other. Saul offers a convenient, declarative syntax for classifier and constraint definition directly in terms of the objects in the programmer's application. With Saul, the details of feature extraction, learning, model evaluation, and inference are all abstracted away from the programmer, leaving him to reason more directly about his application.

The project contains three modules. See the readme files for each module:

The project's official chat group is at Slack

Tutorial

Visit each link for its content <a name="Tutorial"></a>

  1. Introduction
  2. Installation
  3. Programmers workflow
  4. Conceptual structure of a Saul program
  5. Data modeling and feature extraction
  6. Learners and constraints
  7. Model configurations

The api docs are included here.

Credits

This project has been started by Parisa Kordjamshidi and the development has been done in collaboration with Hao Wu, Sameer Singh, Daniel Khashabi, Christos Christodoulopoulos and Bhargav Mangipudi.

If you use this tool, please cite the following paper:

[1] Parisa Kordjamshidi, Dan Roth, and Hao Wu. "Saul: Towards declarative learning based programming." Proceedings of the International Joint Conferences on Artificial Intelligence (IJCAI), 2015.

[2] Parisa Kordjamshidi, Daniel Khashabi, Christos Christodoulopoulos, Bhargav Mangipudi, Sameer Singh and Dan Roth. "Better call Saul: Flexible Programming for Learning and Inference in NLP." International Conference on Computational Linguistics (COLING), 2016.

Licensing

To see the full license for this software, see the LICENSE (in root directory) or visit the download page for this software and press Download. The next screen displays the license.