KorrBot is a bit crude atm but it uses a few methods for learning, these will expand as I get more adept lol.
If you look at any of the last few videos you will notice a column on the triples grid labelled ‘Cnt’. This tracks the number of times a triple has been correctly referenced; it’s a measure of validity for the item of knowledge. This is used when the system is resting to search for new relationships between the triples. It will only try to derive fresh insights from the triples that have been reinforced/ proven through experience to be correct. It also does this with a limited branch search during conversation; this is how it can connect concepts… sparrow is a bird, birds have wings, wings can fly… therefore sparrows can fly, etc.
There is direct user input of course; each user has a truth/ validity score which sets the ‘Cnt’ variable for any new knowledge. This is so new users can’t mess with the system, but trusted users can.
It creates a set of triples/ record for each topic/ object/ user that can referenced by the index of the root node for that concept. This enables the system to create triples between complete/ complex concepts… The indexes can be seen in the leftmost column of the triple grid. Conversations/ triples are user/ date stamped so the bot can recall who said what and when.
If the system can’t parse a sentence correctly it asks you enter the same sentence using a different syntax. When it does understand the miss-understood sentence is reformatted and added to the sentence templates.
I’m testing moods, so the bot can both recognise the users mood and have its own moods. This data is collected by asking the user what mood they are in before and during a learning session; this ‘mood index’ is then added to the sentence templates and triplestore to be referenced by the bots moods.
I’ve started writing a 3D world/ object definition module, so the bot can understand/ relate to spatial relationships of/ between objects, etc. So as well as knowing the ‘word’ for the location of an object/ person it has an idea of its actual 3D location/ distances involved/ etc.
Various import routines for Db/ Json and delimited files. I’ve wrote the code so several bots on the same network can easily exchange triples, etc. The system does not require the ‘cloud’ lol, it runs standalone.
Fixed coded functions for certain types of triple comparisons, distance, time, speed, weight, mass, logic, Math, etc…
A user can enter information through the graph interface… nice and quick, easy.
Once I’ve built the sentence template store to a sufficient complexity it will be able to learn/ glean information from the internet.
If the bot is trying to form a connection/ commonality and requires certain information to make the decision, it asks for it, and obviously stores it.
The bot has a short term memory regarding the conversation, this is how once someone/ something has been mentioned by name, the bot can understand who ‘he/ she/ it/ that’ is/ means.
I’m testing conversation trees, so the bot can learn the common order/ format for asking/ answering questions… the flow of conversations, etc.
No knowledge is instantly fixed; it designed so experience reinforces knowledge. If the bot finds a commonality in the triplestore that’s not been explicitly expressed, it asks if it’s correct before reinforcing it.
I’m also trying to keep the system as flexible/ versatile as possible for future upgrades, and the data sets as compact/ fast as possible. The triple table for example once parsed comprises of only dictionary/ data indexes integer/ long variables. Each root node has link index to all other relevant nodes, so it doesn’t need to search millions of triples, recall is instant.
Nothing magical lol…early days… just straight forward coding…
@Lock or anyone else…
If you have the spare time you could compile a triplestore import file, just a simple list using “\†as a delimiter on any subject you like... I can use for testing. Stick to single words for the object/ subject at the moment, keeps testing easier. Keep the predicates short and simple, is a, has a, made of, etc.
1\car\is a\vehicle
2\vehicle\can\move
3\car\has a\door
4\car\has a\boot
5\car\has a\trunk
6\car\has a\wheel
7\wheel\has a\tyre
8\tyre\has a\tread
9\wheel\has a\hub
10\hub\has a\nut
11\wheel\shape\round
12\car\has a\colour
13\10\count\six <<< referencing the triple index as the object = ((hub\has a\nut) \count\six)
14\3\count\four
15\6\count\four
16\car\is a\object
etc…