{"id":15014744,"url":"https://github.com/hyperparticle/graph-nlu","last_synced_at":"2025-04-09T19:23:49.328Z","repository":{"id":89037460,"uuid":"87008106","full_name":"Hyperparticle/graph-nlu","owner":"Hyperparticle","description":"Graph NLU is a natural language understanding tool that leverages the power of graph databases","archived":false,"fork":false,"pushed_at":"2017-12-09T12:08:49.000Z","size":2966,"stargazers_count":85,"open_issues_count":0,"forks_count":32,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-23T21:22:40.219Z","etag":null,"topics":["ipython","jupyter","machine-learning","natural-language","neo4j","nlp","nlu","research"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hyperparticle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-02T18:51:47.000Z","updated_at":"2025-03-07T17:49:33.000Z","dependencies_parsed_at":"2023-06-13T15:45:22.402Z","dependency_job_id":null,"html_url":"https://github.com/Hyperparticle/graph-nlu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperparticle%2Fgraph-nlu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperparticle%2Fgraph-nlu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperparticle%2Fgraph-nlu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hyperparticle%2Fgraph-nlu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hyperparticle","download_url":"https://codeload.github.com/Hyperparticle/graph-nlu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248096144,"owners_count":21046983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ipython","jupyter","machine-learning","natural-language","neo4j","nlp","nlu","research"],"created_at":"2024-09-24T19:46:02.198Z","updated_at":"2025-04-09T19:23:49.297Z","avatar_url":"https://github.com/Hyperparticle.png","language":"Jupyter Notebook","readme":"# Graph NLU\n\n[![Preview Image](/notebooks/screenshots/qa2-multiple-list.png)](notebooks/dynamic_memory_1.ipynb)\n\n## Motivation :bar_chart:\n\nGraph NLU uses graph databases as a means to represent natural language relationships flexibly and dynamically.\n\nThe primary motivation for this project is to develop a way to understand natural language dialog in an interactive setting by remembering previous dialog states. [Virtual assistants](https://en.wikipedia.org/wiki/Virtual_assistant_(artificial_intelligence)) like Siri, Google Assistant, and Alexa have the common problem that they behave like amnesiacs, i.e., they do not remember much about previous interactions.\n\nOne proposal to get around the memory problem is by representing the previous dialog states using a persistent graph. Because graphs offer a powerful and interpretable way of encoding 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](https://neo4j.com/)) offer a rich suite of tools to quickly construct such graphs and persist them over the long term.\n\nThis project is in its research phase, hence all code in this repository is exploratory. The supplied Jupyter (iPython) notebooks do the following:\n\n1. Examine several dialog domains\n1. Explain some of the design considerations for using graphs to process natural language\n1. Define models for solving a dialog domain\n1. Evaluate these models for accuracy and usefulness\n\nExplanations behind each code snippet are given where possible. [Read the research paper (PDF)](docs/IPA_Memory_Dan_Kondratyuk_2017.04.30.pdf) discussing a more detailed approach to the personal assistant memory problem.\n\n## Getting Started :traffic_light:\n\n- [Video talk overview (YouTube)](https://www.youtube.com/watch?v=mTCqQ2e08Q8)\n- [Video talk slides (PDF)](docs/Graph%20NLU-%20Natural%20Language%20Understanding%20with%20Python%20and%20Neo4j.pdf)\n\nGet an introduction to this project by viewing the supplied Jupyter notebooks in GitHub under the `notebooks` directory:\n\n- [dynamic_memory_1](notebooks/dynamic_memory_1.ipynb) - Evaluates the bAbI QA tasks using Neo4j queries\n\n## Running the Code :snake:\n\nThe Python code uses the Neo4j graph database to store and query natural language relationships. In addition, several processing steps will require popular Python data processing tools like `pandas`, `numpy`, `sklearn`, and `nltk`.\n\n### Prerequisites\n\n1. Make sure these are on your system:\n\n- [Python](https://www.python.org/downloads/) (3.5+)\n- [Neo4j](https://neo4j.com/download/community-edition/) (3.1+)\n\n2. Install the python packages in `requirements.txt` if you don't have them already.\n\n```bash\npip install -r ./requirements.txt\n```\n\n### Running Jupyter Notebooks\n\n3. Clone the repository.\n\n```bash\ngit clone https://github.com/Hyperparticle/graph-nlu.git\ncd ./graph-nlu/notebooks\n```\n\n4. Run the iPython notebooks with Jupyter.\n\n```bash\njupyter notebook\n```\n\n5. Get an introduction to the project with [dynamic_memory_1](notebooks/dynamic_memory_1.ipynb).\n\n## Contributing :mega:\n\nInterested in the project? We'd love to hear your ideas! Open a [GitHub issue](https://github.com/Hyperparticle/graph-nlu/issues) with your comments.\n\n## About :clipboard:\n\nCreated by [Dan Kondratyuk](https://hyperparticle.com/about/), a member of [Speech, Language \u0026 Interactive Machines (SLIM)](http://coen.boisestate.edu/slim/) at Boise State University.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperparticle%2Fgraph-nlu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperparticle%2Fgraph-nlu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperparticle%2Fgraph-nlu/lists"}