KeLP (Kernel-based Learning Platform)

KeLP (Kernel-based Learning Platform) is a machine learning platform developed by the SAG group and the ALT group of QCRI. It is entirely written in Java and it is strongly focused on Kernel Machines. It includes different Online and Batch Learning and Classification algorithms, Kernel functions, ranging from vector-based to structural kernels. KeLP allows to build complex kernel machine based systems, leveraging on the Java language and on a JSON interface to store and load classifiers configurations as well as to save the models to be reused.

For a deeper look, you can visit What’s inside KeLP page.

A guide about KeLP, containing some practical examples as well as a detailed description of the implemented algorithms and kernels is available here.


KeLP is released under Maven. To use it, please refer to the Installation page

To download KeLP source code you can go to the github KeLP page.

Runnable jars

KeLP runnable jars are meant to provide an easy-to-use way to train a classifier, and use it to make predictions. Two java jars are released: the kelp-learn-x.x.x.jar can be used to train a classifier and to save a model; the kelp-classify-x.x.x.jar instead can be used to make predictions given an already trained classifier (i.e. a model).

  • kelp-learn.x.x.x.jar takes in input a training dataset in KeLP format, a learning algorithm specification in JSON language and the path where to save the model;
  • kelp-classify.x.x.x.jar takes in input a dataset, the model path and the path where to save the predictions.

Click to the following links to download the latest version of kelp-learn and kelp-classify.

Using the runnable jars

In order to show how to use the kelp runnable jars, download the training dataset, the testing dataset and the algorithm specification.

You can inspect the learning algorithm specification by using a common text editor. In the JSON specification, it is possible to see that the adopted algorithm is a BinaryC SVM with a linear kernel that operates on the first (0) representation. C parameter is set to 1.0 and a One-Vs-All approach is adopted to manage multiple classes.

Training phase: java -jar kelp-learn-2.1.0.jar iris_train.klp learningAlgorithmSpecificationBinaryCSvm.klp model.txt

After the training stage, you can inspect the model simply by opening it with a text editor. The model is written by KeLP in JSON format, thus it is easily readable. In this case, a list of support vectors can be recognized in the model.txt file.

Testing phase: java -jar kelp-classify-2.1.0.jar iris_test.klp model.txt predictions.txt

The output of kelp-classify should be Accuracy on test set: 0.65625.

predictions.txt file contains the predictions made by kelp. In this example, a multiclass problem with three classes has been proposed. Each row of predictions.txt refer to an example (in the same order) of the iris_test.klp file, and the sore for each label is reported: for example, the first row should be similar to:

iris-setosa:1.2478526   iris-versicolor:-1.0160084      iris-virginica:-1.2575223

Related Publications

KeLP has been presented in the Workshop on Machine Learning Open Source Software (MLOSS) 2015: Open Ecosystems within ICML 2015.

Furthermore, a demo system about the impact of KeLP to the Natural Language Processing community has been presented to ACL 2015 (paper PDF).

KeLP users should add the following citation in their publications:

author = {Filice, Simone and Castellucci, Giuseppe and Croce, Danilo and Da San Martino, Giovanni and Moschitti, Alessandro and Basili, Roberto},
title = {{KeLP}: a {K}ernel-based {L}earning {P}latform in Java},
booktitle = {The workshop on Machine Learning Open Source Software (MLOSS): Open Ecosystems},
month = {July},
year = {2015},
address = {Lille, France},
publisher = {International Conference of Machine Learning}

author = {Filice, Simone and Castellucci, Giuseppe and Croce, Danilo and Basili, Roberto},
title = {KeLP: a Kernel-based Learning Platform for Natural Language Processing},
booktitle = {Proceedings of ACL-IJCNLP 2015 System Demonstrations},
month = {July},
year = {2015},
address = {Beijing, China},
publisher = {Association for Computational Linguistics and The Asian Federation of Natural Language Processing},
pages = {19--24},
url = {}



In this section you can find many examples on how to use KeLP. There are basic topics, that cover how to use KeLP in your machine learning applications.

Advanced topics, are instead meant for those who want to develop with KeLP. Advanced topics cover how to extend KeLP, for example with a new Representation or a new Kernel function.

Basic topics

Importing KeLP with Maven

Hello (kernel) Learning

Multiple Representation formalism

Tree Kernel


Using JSON to initialize an algorithm

Advanced topics

Extending KeLP – Representation

Extending KeLP – Kernel

Extending KeLP – Algorithms


KeLP is documented in different ways. A guide is available to download here, where different information about the design choices behind KeLP is described and some tutorials are reported.
Moreover, Java API documentations are available for KeLP.

Version 1.0.0

Version 1.1.0

Version 1.1.1

Version 1.2.0

Version (1.2.1)

Version (2.0.0)

Version (2.0.1)

Version (2.0.2)

Current Version (2.1.0)



People from the Semantic Analytics Group at the University of Roma, Tor Vergata
Simone Filice, Danilo Croce, Giuseppe Castellucci, Roberto Basili

People at the Qatar Computing Research Institute, HBKU
Giovanni da San Martino, Alessandro Moschitti


… if you need HELP … 



One comment

  1. […] KeLP (Kernel-based Learning Platform) […]