This project contains the C++
backend of panda-parser. It consists of several parts:
- A Hypergraph class for the representation of grammars and charts of different types.
- An implementation of training and parsing algorithms on top of hypergraphs: the exectation maximization algorithm in the inside/outside variant with support for cyclic hypergraphs, the split/merge algorithm, various methods to manipulate weight assignments on hypergraph edges.
- A bottom-up parser for linear context-free rewriting systems (LCFRS) [Vijay-Shanker, Weir, and Joshi, 1987] designed to compute the complete (unpruned) chart.
- An implementation of a restricted version of sequence terms (see [Seki and Kato, 2008, p. 211]) and simple definite clause programs (sDCP) [Deransart and Maluszynski, 1985] generating sequence terms (s-terms).
- An implementation of hybrid trees [Gebhardt, Nederhof, and Vogler, 2017].
- Bottom-up parsers for parsing an s-term with a sDCP and for parsing a hybrid tree with a LCFRS/sDCP hybrid grammar.
The software was developed by Kilian Gebhardt and Markus Teichmann. It is maintained by Kilian Gebhardt.
The software requires Eigen and Boost to be installed. It can be build with cmake. The executable files contain toy examples for testing the algorithms. Most code is in the various header files which are meant to be used by panda-parser.
You may use panda-parser-backend independently of panda-parser in your own project in accordance to the LICENSE.