Phillip is the first-ordered abductive reasoner for natural language processing in C++.
David, a successor of Phillip, was released! Try it.
Link: https://github.com/aurtg/open-david
Compared with Phillip, David has the following features:
- More multifunctional (refer David's manual)
- Etcetera abduction (Gordon,2016) is available
- Not only lp_solve and Gurobi, but also SCIP and CBC are available as ILP solver
- The input format is David-specific and user-friendly
- The output format is JSON format
- Install ILP-solver (Gurobi 6.0.X or LP-Solve 5.5) which you want to use.
- Move to the directory where Phillip is installed.
- Execute
python tools/configure.py
. Then makefile will be created. - Configure environment variables:
- If you use LP-Solve, add the path of the header directory of LP-Solve to
CPLUS_INCLUDE_PATH
. - If you use Gurobi optimizer, add the path of directory of Gurobi to
GUROBI_HOME
,$GUROBI_HOME/include
toCPLUS_INCLUDE_PATH
and$GUROBI_HOME/lib
toLIBRARY_PATH
andLD_LIBRARY_PATH
.
- If you use LP-Solve, add the path of the header directory of LP-Solve to
- Execute
make
. - (Optional) Execute
make test
.
- Install ILP-solver (Gurobi 6.0.X or LP-Solve 5.5) which you want to use.
- Open ./vs/phillip.sln with Visual C++.
- Configure property of the project.
- Under the construction... X(
- Build the project of phillip on Visual C++.
$ bin/phil -m compile_kb -k <KB_PREFIX> [OPTIONS] [INPUTS]
Since Phillip uses the compiled knowledge base on inference.
You need to compile your knowledge base at first.
Besides each time you change the knowledge base, you need to compile it.
$ bin/phil -m inference -c lhs=<NAME> -c ilp=<NAME> -c sol=<NAME> -k <KB_PREFIX> [OPTIONS] [INPUTS]
In detail, please refer to Phillip Wiki.
Phillip is distributed under the term of the modified BSD license.