README for nlpsolver
====================
Nlpsolver is a tool for answering questions posed in natural language.
The current version (4. May 2022) is in active development:
there are numerous bugs, unfinished functionalities and functionalities
planned to be built.
Examples
---------
It can already handle simple questions, for example:
./nlpsolver.py "Elephants and foxes are animals.
John is an elephant. Mike is a old grey fox. Who is an old animal?"
./nlpsolver.py "Elephants and foxes are animals.
<John> is an elephant. <John> is an animal?"
./nlpsolver.py "John is a grey animal and has a trunk.
Elephants are big animals and have trunks.
If an elephant is grey, it is old.
If an animal has a trunk, it is an elephant.
Who is an old elephant?"
./nlpsolver.py "Elephants are big animals and have trunks.
If an elephant is grey, it is old.
If an animal has a trunk, it is an elephant.
Who is an old animal?"
Command line keys
-----------------
The following command line keys are available:
-debug : show the main steps in processing the text
-showlogic : show the logic produced
-nosolve : do not attempt to solve the logic produced
-postprocess : run the postprocessor code on logic (see nlppostprocess.py)
Installation and requirements
-----------------------------
Nlpsolver requires:
* Python 3 series
* Stanza NLP parser from Stanford https://stanfordnlp.github.io/stanza/
(can be installed in debian-based Linux systems with apt)
* gk commonsense logic solver in the same folder as nlpsolver
(included, make it executable with chmod +x gk)
* gk_axiomfile.js tiny axiom file in the same folder as nlpsolver
(included)
To run nlpsolver, first start nlpserver in the same folder:
./nlpserver
After a few seconds the nlpserver starts properly up and then run
./nlpsolver "Elephants are animals. John is an elephant. John is an animal?"