The primary motivation for this project is to develop a way to understand natural language dialogue in an interactive setting by representing memory of previous dialogue states using a persistent graph. Because graphs offer a powerful and interpretable way of endcoding high-level representations of entities and their associated relationships, an attractive proposition is to leverage them in processing natural language. Graph databases (e.g., Neo4j) offer a rich suite of tools to quickly construct and test such graphs and persist them over the long term, and hence will be primary focus of this project.
This project is in its research phase, hence all code in this repository is exploratory. The supplied iPython notebooks examine several dialogue domains, explain some of the design considerations for using graphs to process natural language, and evaluate these models for accuracy. Explanations behind each code snippet are given where possible.
A talk about this project can be viewed here, and slides are supplied in the docs directory.
Get an introduction to this project by viewing the supplied Jupyter notebooks online under the notebooks
directory. See dynamic_memory_1 on GitHub to get started.
- Make sure these are on your system:
- Install the python packages in
requirements.txt
if you don't have them already.
pip install -r ./requirements.txt
- Clone the repository.
git clone https://github.com/Hyperparticle/graph-nlu.git
cd ./graph-nlu/notebooks
- Run the iPython notebooks with Jupyter.
jupyter notebook
- Get and introduction to the project with dynamic_memory_1.
Created by Dan Kondratyuk, a member of Speech, Language & Interactive Machines (SLIM) at Boise State University.