https://github.com/dodaro/asp2cnl
https://github.com/dodaro/asp2cnl
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/dodaro/asp2cnl
- Owner: dodaro
- License: mit
- Created: 2023-10-17T08:13:09.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-07T15:39:05.000Z (over 1 year ago)
- Last Synced: 2026-01-14T00:02:49.588Z (5 months ago)
- Language: Python
- Size: 406 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ASP2(C)NL
A prototype for automatic converting ASP rules into Controlled Natural Language (CNL)
sentences in the format supported by the tool CNL2ASP.
ASP2(C)NL is composed by two novel and open-source tools, namely ASP2CNL and CNL2NL.
With ASP2CNL, ASP rules are converted into Controlled Natural Language (CNL) sentences in
the format supported by the tool CNL2ASP [1].
Subsequently, CNL2NL translate the obtained CNL sentences into natural language sentences
using the state-of-the-art LLM tool ChatGPT.
Finally, the two tools, can be combined together in a pipeline, referred to as ASP2NL,
that transforms a given ASP program into a set of sentences expressed in a natural language.
[1]: Caruso, Simone & Dodaro, Carmine & Maratea, Marco & Mochi, Marco &
Riccio, Francesco. (2023). CNL2ASP: Converting Controlled Natural Language Sentences into ASP.
Theory and Practice of Logic Programming. 24. 1-31. 10.1017/S1471068423000388. [Link](https://www.cambridge.org/core/journals/theory-and-practice-of-logic-programming/article/cnl2asp-converting-controlled-natural-language-sentences-into-asp/AF5901FADC579E49C583CFD5A10C0192).
## Install
`pip install asp2cnl`
### Dependencies
- lark
- inflect
- multipledispatch
- cnl2asp
- openai (optional, only if you plan to use it)
- requests
### Access to a LLM is required
In order to convert CNL into plan natural language the CNL2NL tool needs access to a Large Language Model.
We suggest to use an open source library called Ollama which download and run pre-trained LLMs locally.
Alternatively, OpenAI's ChatGPT can be also invoked but a valid api key is required. The api key must be stored in the environment variable `OPENAI_API_KEY`
#### Install Ollama on Linux
```
curl -fsSL https://ollama.com/install.sh | sh
```
For installation on other systems, please refer to [Download Ollama](https://ollama.com/download)
Note:By default Ollama launch itself as system service. If you do not want such behaviour, please, run the following command to disable automatic Ollama serving
```
sudo systemctl disable ollama.service
```
Once completed the installation process we have to download the model we want to use.
The simplest way to complete this task is by running the following command
```
ollama run
```
Where `` is any model present in the Ollama library, an update list can be found at [Ollama - Model List](https://ollama.com/library)
We suggest to use [openChat](https://ollama.com/library/openchat) as alternative to ChatGPT:
```
ollama run openchat
```
## Getting start
#### ASP2CNL
Syntax to convert an ASP program into Controlled Natural Language (CNL).
```
asp2cnl []
```
The result will be printed to the standard output as a list of CNL sentences. In the case where
a JSON format is needed, the optional output file can be used, allowing to save the results to a file.
Alternatively, you can run asp2cnl from source using the following command:
```
python src/main.py --asp2cnl []
```
For example, in order to convert the Maximal Clique ASP program into CNL, we use the following command:
```
asp2cnl examples/maxclique/maxclique.asp examples/maxclique/schema.cnl examples/maxclique/maxclique_cnl.json
```
The generated output will be saved into file maxclique_cnl.json in the JSON format.
#### CNL2NL
Syntax to convert a list of CNL sentences into natural language using a LLM
```
cnl2nl [-m ] []
```
The default value `` is set to `openchat` and can be omitted.
Results can be stored into a json file specifying the optional output file.
Alternatively, you can run asp2cnl from source using the following command:
```
python src/main.py --cnl2nl [-m ] []
```
For example, in order to convert the Maximal Clique program into NL starting from the CNL output of the previous execution,
we use the following command:
```
cnl2nl examples/maxclique/maxclique_cnl.json examples/maxclique/maxclique_nl.json
```
The generated output will be saved into file maxclique_nl.json in the JSON format.
#### ASP2NL
Syntax to convert an asp program into natural language via CNL
```
asp2nl [-m ] []
```
The default value `` is set to `openchat` and can be omitted.
Results can be stored into a json file specifying the optional output file.
Alternatively, you can run asp2cnl from source using the following command:
```
python src/main.py --asp2nl [-m ] []
```
For example, in order to convert the Maximal Clique ASP program into NL, we use the following command:
```
asp2nl examples/maxclique/maxclique.asp examples/maxclique/schema.cnl examples/maxclique/maxclique_nl.json
```
The generated output will be saved into file maxclique_nl.json in the JSON format.