Saul: Declarative Learning Based Programming
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:
- Interacting with raw data and setting it in a flexible graph structure (i.e. data model) using the original available data structures.
- Relational feature extraction by flexible querying from the data model graph.
- Designing flexible learning models including various configurations in which learners interact.
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
- Programmers workflow
- Conceptual structure of a Saul program
- Data modeling and feature extraction
- Learners and constraints
- Model configurations
The api docs are included here.
If you use this tool, please cite the following paper:
 Parisa Kordjamshidi, Dan Roth, and Hao Wu. "Saul: Towards declarative learning based programming." Proceedings of the International Joint Conferences on Artificial Intelligence (IJCAI), 2015.
 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.
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.