https://github.com/norskregnesentral/graphdial
Python framework for graph-based dialogue management
https://github.com/norskregnesentral/graphdial
Last synced: 8 months ago
JSON representation
Python framework for graph-based dialogue management
- Host: GitHub
- URL: https://github.com/norskregnesentral/graphdial
- Owner: NorskRegnesentral
- Created: 2021-06-22T16:27:30.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-07-31T06:59:54.000Z (about 4 years ago)
- Last Synced: 2025-01-10T16:46:09.978Z (9 months ago)
- Language: Python
- Size: 24.5 MB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GraphDial
GraphDial is a versatile software framework to develop (text or speech-based) dialogue systems, with a particular focus on dialogue management. The framework is fully domain-independent and can be employed to construct dialogue systems for various domains. External modules can be easily plugged in and out of the framework to provide additional functions related to speech recognition, natural language understanding, speech synthesis, situational awareness, etc.
GraphDial relies on *graphs* to represent the dialogue state. Dialogue state tracking and action selection are consequently viewed as *graph operations*. Such graph operations are encoded using the [Cypher](https://docs.memgraph.com/cypher-manual) open graph query language.
---
This repo contains work in progress and currently has only a few example intents working.
`/data/nlu.yml` contains NLU examples/lookup.
To train the NLU model, first install [Rasa](https://rasa.com/docs/rasa/installation). You can then use the `rasa train nlu` command to train a new model which will be saved to the `/models` folder. This only requires that you define the training data in the yml file. See the [Rasa documentation](https://rasa.com/docs/rasa/nlu-training-data) for more information about the NLU training data format.
`/domains/hri_example.yaml` mainly specifies the Cypher query update rules as well as ip addresses for input and output to the dialog manager server.
`/graphdial` contains the source code for the dialog manager.
`/models` contains a trained Rasa NLU model and stores any new trained models.
`/notebooks` contains three Jupyter notebooks. `step_by_step_graph_updates_code.ipynb` shows the step by step execution of Cypher queries associated with Figure 2 in the paper. `graphdial_test_send.ipynb` and `graphdial_test_receive.ipynb` shows example code on how to send and receive requests from the dialog system. See the notebook for a concrete example of the format of the requests.
---
Before running the dialog system, an instance of Memgraph needs to be running. Follow the instructions on [https://memgraph.com/download](https://memgraph.com/download) to set it up.
To implement your own query modules, see [https://docs.memgraph.com/memgraph/database-functionalities/query-modules/implement-query-modules/](https://docs.memgraph.com/memgraph/database-functionalities/query-modules/implement-query-modules/)