Note: Deprecated!
The new release is finally ready. The Aici demo took a bit longer than planned. Also, lots of things have been fixed and updated. Here’s a non exhaustive list:
There’s a complete new lockmanager running in the background. This is much more secure (thread-wise, that is) and a lot faster. It’s still a bit of a diesel though, it takes some time for it to get going, but once running, it should be pretty fast. The slow start is due to the storage mechanism (all xml files currently). This is the major drag on the entire system at the moment, and will be fixed next.- Wordnet import has been seriously updated, a lot more info is retrieved, and it’s now also possible to import the entire db in one go (although not yet advisable, due to a memory bug in the designer, it still takes a major byte out of the hard disk and it simply takes ridiculously long).
- The thesaurus has been given a make over to allow for editing and filtering. He can now also display / edit non recursive relationships. Drag drop is also supported.
- The frame editor has been updated considerably: drag drop support has been added and frame element filters/restrictions have also been introduced (will probably be extended in the future).
- I changed the function of the ‘contains’ operator a bit. It now only checks the contents of a variable. For clusters/children, there are the new instructions (IsClustesteredBy, LinkExists, ContainsChildren, GetInFiltered,…).
- I have added the ‘not contains’ operator.
- New instructions:
- Arithmetic group (+-/*%): I finally caved on those. My
original plan was to see how far I got without using any arithmetic in the neural code. I guess, this is as far as I got with that. - Get-at group: get child at, get cluster at, get out at, get in at, get info at.
- Distinct
- get Incoming, get outgoing, get info, Get in filtered, get out filtered, Get info filtered
- Is clustered by, Link exists, Contains children
- Remove-at group: Remove child at, remove info at, remove link in at, remove link out at
- many, many bug fixes, updates and little improvements.
Aici 1
This demo is a small chat interface. Though, in it’s current state, it’s not much more than a framework. It can initiate a conversation, close it, ask for the name of the user and store the data. It’s not yet able to fully recognize a recurring user since I haven’t defined the neural code for this yet.
I will be explaining how it works and how you can expand on this functionality, shortly. For those who can’t wait and want to get a peek under the hood, here are some pointers to get started:
- There are 3 main stages:
- Flow recognition, which is basically the syntactical stage: check the word types and order. Project pages are:
- the flows (aici/flows),
- the code that is attached to these flows (aici/code/flow code)
- the code that recognizes the flows in the input (aici/code/flow recognition)
- Frame recognition, or the semantics stage. This is where we try to find meaning in the words. Project pages are:
- the frames (aici/frames)
- the code that is attached to the frame sequences (aici/code/frame seq code). The frames don’t have code (yet).
- the code that recognizes the frames in the flow results (aici/code/frame recognition).
- action execution, or the response of the network to the input. Project pages are:
- Actions: all the different actions that the system knows (not yet a lot, should be extended).
- Output: some common code blocks for rendering output. This is also used by the frame sequences, since they are also used to render data in a predefined format.
- Action helpers: code that the action neurons can use to perform common tasks, like stopping a conversation or controlling the timers. Timer callbacks are also stored here.
- The transition between the different stages can be located in aici/code/transition.
- More specifically, the ‘Transition’ neuron is used to go from the flows to the frames and finally to the actions.
- An action is started using the ‘Execute action’ neuron as meaning for a link from a data cluster to the action that needs to be started.
- The project also contains some mindmaps that describe the inner data structures and functionality.