-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Eliza is an autonomous, intelligent entity. The agent receives input in the form of a string consisting of English phrases or sentences. It then parses and interprets the string and forms an appropriate response in form of both an action and an output string. There are plans for voice integration in form of CMU SPhinx 4 for STT and Mary for TTS but this is not a priority at the moment.
I chose Clojure as my language of choice when designing Eliza almost purely because of it's metaprogramming capabilities as well as the JVM's wealth of libraries. Scala was in the front-running but due to Clojure's Lisp ancestry, I was willing to learn a new language for the potential benefits in reflective programming. It is possible that I will introduce Scala in the future for easier integration with current ecosystems and distributed processing using Spark.
I was inclined to use HyperGraphDB due to the relatively novel concepts of hypergraph in artificial intelligence. The use of meta-hyperarcs to represent schematas was something I wanted to explore.
Eliza can be separated into three main components.
- Interpreter
- Memory
- Analyst
- Knowledge base
Eliza's memory is created using two constructs formed by their corresponding hypergraph relatives: concept (node), and schema (hyperarcs). Both store Clojure macro functions as their "data" adherring to the "code is data, data is code" philosophy. A concept is a unit of definition and is stored in the hypergraph as a node. A schema (schemata plural) is a set of concepts or other schemas and their relationships among one another. This is stored in the graph as a hyperarc.
The core interpreter interprets input string and finds relevent concepts to act as the input layer. It also executes the final response function. It directly works with the core analyst namespace to revise the response.
The core analyst is responsible for creation and deletions of concepts and schematas. It is also responsible for determining the relationships among the atoms in the hypergraph. Analyst accesses the heuristic handler for learning, understanding, and prediction which are constructed from the current state of the hypergraph database.
The knowledge base is a library of concepts and schemata that Eliza can build new atoms off of. This is the fundamentals that is needed to construct novel ideas and thought processes.
- Introduction
- Java InterOp
- Metaprogramming
- Introduction
- HyperGraphDB InterOp
- Introduction
- Concept
- Schema
- Meta-Schema