Spud Ai is a computer program that is an attempt to create artificial intelligence (AI). The program is built by taking my understanding of "the mind" and turning that understanding into a computer program. The program is also a practical tool and is used for numerous tasks in my everyday life.
The Spud Ai's basic function is to process information in an intelligent manor and respond accordingly. It has numerous processing functions and algorithms that act on information in different ways most of these are language based which gives the Ai the ability to work as a chat bot. There is a main database called the Brain Database (BD), entries in the BD are called Cells. A cell can either hold information or it can be 'activated', when activated the cells neural network takes the input code, processes it through the network and produces the output code. How the input code is processed and the output it produces is dependant on how the network has been trained. The output nodes can be connected to other cells input nodes, the Tag field is also used to control how the output is used. As the Ai evolves the BD grows in size.
When used as chat bot the language processes take the input and process it in different ways. The majority of these processes come from flashes of inspiration. Whether these inspirational bits of code form some sort of mind or produce replies that show some form of intelligence only time will tell, as these work by forming connections that evolve as the Ai builds up its data base. Data is inputted manually or by the various learning processes (LM). Learning processes add data which is then worked on by the various processes, this gives the Ai the ability to output correct information without having being told about the specific subject but from associations only. Other processes are designed to give specific answers to specific questions or use some of the input in the output.
The Ai is packed full of functions which gives the Ai the ability to perform many practical tasks. As the Ai evolves more functions are added. Keywords associated to a cell word are used for many of the functions. Cells 800 to 2000 are know as system cells these are used by the various functions and processes including various input output devices from hardware to networking. Cell 2000 and upward are used for data storage like words and patterns.
The things the Ai can be used for is an ever growing list, its designed to be flexible in usage. There are functions within the Ai that are there because i've needed software to do a certain task. Instead of creating a new program i just add a new function to the Ai.
Here is a list of things i use the Ai for: searching indexed files for information, working as a chat bot on a web page, creating price list information for my company web site, indexing job files for my companies database, taking a picture of my solar controller and sending it to the web server, playing music, controlling relays in my house, monitoring and controlling power distribution from my renewable energy systems, object recognition for the robot mapping functions, controlling a robot, quick information like finding out tomorrows weather and the main news story and talking to.
The Ai is designed to do things i haven't even thought of.
The program is under constant test and runs for long periods of time it is designed to be as stable as possible, there are some functions that monitor program stability and react if any problems are found, either by fixing the problem automatically or by alerting the user.
The programs main input is text words which can be generated by voice to text programs, network messages, text files, keyboard, web page form etc. There is also ways of inputting data directly into the neural network.
The input is processed by the program and then it produces an output which could be to run a script, program, create a web page send a message through a network, create a sentence, activate the neural network.
The answer is created according to how the input is translated using various functions within the program which use information in the Brain Database.
The Ai program is available as a free download as long as you
accept and agree to the following:
We take no responsibility for any consequences that may occur from using the program.
You must not train the Ai to break its own law, know as Robot Law which is a text file and is part of the download.
You must not disassemble the program in any way.
You may use, pass on, redistribute as you like as long as you don't remove any copyright notices. If you pass the program on you must make sure you also supply the link to this page.
The documentation may be unclear or at times confusing, this situation will change over time as the project develops.
© 2004 - 2021 Piet Defoe
Latest version: AiV021h
Last update: 27-11-2021
Click here to download Spud Ai
Some browsers may try and stop the download citing a Unknown Publisher error. This is because registering software is somewhat complicated and probably expensive.
The Ai is running periodically on a server, the link bellow will connect you to the Ai if the server is on.
Click here to chat with the Ai During the winter months the server is on intermittently.
Yorkshire Robot Company
Two new keywords have been added
MinutesAdd, This keyword adds the value of ToPrint which is the number of minutes to add to the time. Toprint is then set with two numbers the first is the hours and the second is the minutes.
FileShuffle, this is designed to be used to create a shuffle playlist from say a playlist created using FilesIndex which creates a file list in alpabetical order. A new file is created using all the lines from the original. This means that all tracks are played in a shuffled order without repeated tracks. The created file is the same name but with an x added to the extension.
FileShuffle works by reading the source file from the bottom then placing it in a random position in the new file. If the random possition is taken then the line is added to the next avaliable position. This can cause clusters of unshuffled tracks. To increase the level of shuffling run the Keyword again but this time use the created file as the file to shuffle.
All lines in the file must be no longer than 255 characters.
There is a limit of 10000 lines that can be shuffled.
Another file is created this is the original file name but with a z added to the end of the filename. This file is a sorted list of the song names with the full filename removed and the file extension removed. All numbers are removed also so are dashes and underscores. This is so the list can be displayed on the web without comprmising security.
The contents of field 7 is added infront of each line and the contents of field 10 are added to the end of each line, i use this for web code.
F7ActivateF10Millisec now has a backup function. In rare circumstances the timer can get interupted if this happens then the F7TimerCheck is triggered and the cell is activated by this backup function.
NNActivateCell, if there is nothing or text in field 11 then the current cell is activated. This keyword is another way of activating cells when an input is processed. If your activating a cell from within a function like ST of SC normally you would set the Operation field to 3 but in some situations this might not work as you want, if this happens use NNActivateCell.
CheckBrainFields, checks brain fields for errors. If mode = 1 then a special function is used to remove the number 803 from node to cell field 5 and 1 from node to cell fields 6. This will evolve into a function to clean all node to cell fields easly if they become corupted. If the output says 0 then the function has been bypassed. If 1 then the function activated but nothing was found. if the output is higher that 1 then this number is the number of times an error has been found.
Its now possible to use aicell keyword in a web address or in a image name to activate a cell. If the keyword is in an image name or a web address then the activation command is sent after the page or image has been sent back to the client. E.g img src="aicell677.jpg" this will download the image and then activate cell 677. There is a new program called Mouse.exe this is a security program and is designed to provide a way of accesing the computer if it is stolen. For this to be afective it needs to be running. I have a link in the startup folder of my computer so it starts everytime the computer starts up. Help on this program is still being written.
This version includes a new server program. This is a total rewrite using a new software library.
New keyword Sum this is used for doing maths functions and is an upgrade for the existing maths functions.
ImageAnalog this new Keyword is used to view an incoming analog signal. It expands the signal before displaying it in the DX window. Its designed to visualise minute voltage fluctuations in the signal. Patterns form from the signal, which can then be translated by the Image Scan Functions ISF. I've been experimenting with this connecting the plant, water pipes and robot frame to the analog input. Each produces a unique image. Connecting to the robot frame enables the robot to detect when it gets close to an electrical field. I've also attached a Theremin which detects people giving the robot a simple way of being spatially aware. The signal from the Theremin rises as a person gets closer to the robot. At some point the ImageAnalog function will be able to be connected with an ISF function directly without drawing the image.
The help file has been update with a totally new section for Settings.
ST and SC learning now have there own learning option in the Settings dialog box. I've found that the ST function is very useful when the Ai is working as a chatbot, whilst the SC function works in a similar way it can be difficult to use and lacks some of the function of the ST routine. In effect the ST function is an upgrade from SC.
Any Midi input device can now be connected to the Ai which activates cells on input. So far i've connected a Midi keyboard and a DJ controller. Cells 1630 to 1740 are the default cells used by the MiDi in device, more cells can be used if needed by changing the settings in cell 1630 field 7.
There are 3 new User Window tags <uwfile>, <uwlist> and <uwcheck>
Two new program have been added. Midi Interface is a program that can connect to a Midi input device and then send the information to the Ai. This was created before the function was added to the main Ai program.
AiLandscape uses 3D functions to create a 3d landscape that you can fly though like a game. Its useful if you want to explore an image in a totally new way. Images created or processed by the Ai can also be used.
A new program called AiListPrograms.exe this creates a file containing the names of the running programs on the computer.
The help file has been updated including information on the Sain Smart program.
There is more information needing adding to help this should be done over the next few months.
There has been quite few tweaks and changes to the main program, to numerous to mention here.
Some more work has gone into the mapping functions, these are designed to give the robot the ability to build a map of its surroundings as it moves around.
The server running the Ai online is sometimes turned off due to the large number of requests coming from hackers overloading the broadband connection, which is very slow anyway.
This version has a new input filter which works in the same way as a personal assistant or house ai. A keyword is used to indicate to the Ai whether to processes the input. This way random conversations or background noise don't trigger the Ai to respond. I use windows speech recognition program. cell 1509 Mode field controls what inputs should be processed and what inputs should be rejected.
If Mode = 1 then the input is only processed if the word in field 7 is in the input.
If Mode = 2 then the node words are used as trigger words
Two new Keywords RQFromF11 RQToF11 enable setting of the RQ's from a cell activation. The idea for this is to be able to adjust the RQ's during the processing of the input thus giving much more control on which output is used UNDER DEVELOPMENT.
The Keyword ImageSave now saves the image as a 24 bit Windows Bitmap (.bmp). If mode = 1 then the image is saved from the image variable which is faster than the normal source which is the DX window. The step value which is controlled by cell 947 Type field can have an effect on the imaged saved.
The image is saved as raw data with no compression.
Other methods of image saving have been removed from the program as these have all been superceded by the re-write of the ImageSave keyword.
The Server program is now Version18. This version is a rewrite of the program with a lot of attention paid to stability and making it work better on all types of browsers, new and old. Its still not perfect in all situations but its as good as i can get it! I use a standard server and embed the Ai server page in an iframe.
Buttons in the user window can now have tool tips. The Detail field of a cell with the tag <uwbutton> holds the text for the tool tip. A new keyword BDResize has been created in order to fix a BD database that has become oversized. I noticed that sometimes the size of the BD can increase without new data being added, this bug has now been fixed and code to prevent it happening has been added but this fix was done after creating the keyword. I've kept the keyword in because it could be useful to resize data bases that have grown before the bug fix.
The latest version has a new keyword ImageAudio this keyword converts either an image into sound or a an audio file into an image. This is ongoing work in an attempt to describe an image from a web cam into sound so a blind or partially sighted person can hear what they can't see. The DX window can now either work at 320x240 size or 640x480 size. A new Keyword ImageMerge is an attempt to increase the resolution of images by merging the images. The ability to scan an image at a lower resolution has been added this is useful if working on 640x480 images and you need the scan to be fast. The Help file is not yet updated with the new keywords so please email me if you need any help setting these up. This page has had some text formatting removed to make it easer to read on different devices.
The latest version has some new keywords one being Reverse. This reverses a sentence or the words in a sentence, it makes the output sound like a different language. I've started working on Function Keywords, these are keywords that activate functions enabling various functions to be used say from a cell activation, so far i've only done FunctionQNV. More work has gone into organizing keywords better, new keywords that were other keywords are: FileSortTwo, FileSortThree and FileSortFour. I've found that having different methods of extracting information from web pages is needed. There are now four file sort functions they differ by the way there coded, which in turn means the do the similar thing but in a different way!
Some more tags have been added to the ST function these are ov: and ow: standing for other verb and other word. The ST function is proving very useful especially when using it with cell activations.
The server program AiServer15 has been upgraded and now works better, a few bugs were spotted which have now been fixed. The server now recognises the phrase aicode this gives more functionality to buttons on a web page. If in your html button code you have name="aicode001" then aicode001 will be put in front of the text from the edit box. The code aicode001 could then have a cell associated with it in the Ai's BD that then can trigger something to happen. I have a buttons that trigger different search functions using the text from the edit box. This works in a similar way as the code aicell but unlike aicell the server waits for a reply from the Ai before sending to the browser.
Some work has gone into the Help file but its still not up to date. A number of functions have been tweaked to make them work better details of these tweaks will be added to the Help file at some point. Old code that is no longer used has been removed from the program.
Robot legs has had some changes made and is due to start more trials when some components arrive.
I've built my first walking robot. This has been quite a challenge due to the complexity of the walking process. Robot Legs taking its first steps
A new version number for a new year. A lot of work has gone into sorting out keywords and in some cases changing keyword names in an attempt to group functions together. During this clean up some keywords have been removed or there function changed, the help file has been updated when this has happened. Changes made are normally adding functions or changing the fields used by the function in an attempt to conform to norms. Some items in the help file have UNDER DEVELOPMENT next to them, this means the way the function works might change or the information in the help file might not be quite right.
A new Process called Connections (CON) has been built, this uses the words connected to inputted words when searching text file resources. The output used is the one with the most connections to the input. This process can be used in a number of ways. The Search Engine (SE) process can use it to scan the downloaded file. The keyword FileConnections also uses the process.
Robot Liz was used at a party and provided much entertainment. The
battery power worked well with at least 3 hours of constant use
driving around and using the pneumatic arm.
Construction has started on a walking robot. The frame and legs are built with the pneumatic cylinders attached. This robot should be able to better negotiate different types of terrain which limits wheeled robots.
Some new videos have been uploaded, the links are in the YRC pages
A strange bug has been fixed this bug was causing program crashes when robots were auto navigating, after 155 scans the program would crash. After 5 hours tracking down the fault one line of code was removed which fixed the problem. Some new functions have been added these include a decision function, this uses either the analog input or the random number generator to produce YES NO or MAYBE outputs. Another output filter has been added this uses the structure of inputs to restructure the output. The Neural Network outputs produce words in no particular order, the output filter attempts to reorganize these words into a proper formatted sentence Output filter 2 (OF FN2) uses logic to reorganize the words the new function OF FN4 uses the structure of inputs to reorganize the words. FN4 scans the Sentence Codes (SC), each code scan creates a percentage value the highest percentage is used to reorganize the words for the output. SC's are now added straight away to the database up to now SC's were only added when the same code had been found more than once in the short term memory. Another new keyword is SCFromText this reads a text file containing correctly structure sentences, these sentences are converted into SC's and if not already present added to the BD. If a word in the sentence is not present or the type value for the word isn't set then the sentence is rejected. This is a fast way of adding SC's which are used by OF FN4.
In Settings the tick box Log Stats has been changed to Log Scroll this adds the scroll output to the daily log useful if you need more information on the Ai functions.
In November the robots were used as part of the Big Draw campaign run by Kirklees. The project was to encourage people to draw, the robots joined in with the drawing, mostly by people controlling the robots which had a pen attached to there arms. New functions were created for the project, the keyword ImageInstructions converts image information into instructions which can then be read using another new keyword ReadLine. ReadLine reads a line in a file every time the keyword is found in the input or from a cell activation, the information can then be used to send instructions to the robot. The functions enable the robot to capture an image from its camera then draw the image on paper. Whilst this all works it doesn't work very well!! More time is needed to perfect the process the problem is getting the robot to move to the precise position. Fine movements are affected by the position of the caster wheels at the back of the robot. The casters could be fixed in place but this would impact on general movement. The robots were taken to a school, an education center and an art college. This was an invaluable experience as it was the first time the robots have operated in a public environment. The robots worked well with no breakdowns people were given a quick talk before using the robots and were able to start using them within minutes. The main instruction was to tell people about the off switch which all the robots have placed in an accessible place, this instantly disconnects all electronics and stops the robot should they start doing something odd. The off switch was used but not due to any fault in the robot mostly due to people loosing control. Robot Hamish's arm was damaged during the last event this was due to a design flaw. The arm has been rebuilt using the same design as robot Lizs' arm. The new arm is a lot stronger.
Some slight changes and refinements to the main Ai program.
Included in the zip file is a new program called SainSmart 04. This program is used to send instructions to the SainSmart iMatic device
The iMatic device is not Wifi even though it seems to suggest this in its name it needs to be connected by a physical cable to a network hub. It has the ip number 192.168.1.4 The program connects to the device via sockets which is why it cant be controlled from a web browser. There are 8 buttons switching the relays on or off and also buttons that send the motor instructions to Robot Four. The program can receive messages from the Ai program or other Spud software like the Ai Server program. I use the Ai to send instructions to the program this gives me the facility to control the robot from the keyboard. It also means the Ai can control the robot using object recognition if an ip-camera is mounted on the robot. There are some limitations to controlling the robot this way but not needing a computer on every robot is advantageous. It should also be possible to control the robot from a smart phone mounted on the robot, this would require writing a new App
Robot Four has a network hub which connects by cable to the iMatic and by wifi to the computer controlling the robot.
A new version. Some changes have been made to the BD cell form layout. The new robot, Liz is working well and is now able to locate move to and pick up objects from the floor totally autonomously. I've uploaded a new video showing it picking up keys. Liz picking up keys
I've started working on a new robot that will be controlled from a smart phone. This robot will be smaller and more portable.
The WSB process has changed. The graph is now drawn in the DX window and the speed of learning has been increased. The process can be set to work from the computers random number generator. This means it works without the need for the K8055 card to be connected. More functions have been added including the ability to hear the signal. The help file has been updated.
I've been testing a new robot. Robot Three is a four wheeled robot and has been built using the lessons learnt from building the previous robots. I posted a video on YouTube showing the robot auto-navigating Robot Liz auto-navigating.Some new functions have been added to the Image Scan Functions ISF. The robot is now able to auto-navigate around a room for long periods of time. The way the drive works is a different on robot Liz. The motors keep going until a new instruction is received. This makes its movement smoother and faster, driving the robot like this also makes the ISF functions work better. To navigate successfully its set to look for colors red and green, shadows and edges. The image sample rate is about 600 milliseconds, this is how long it takes to take the picture process it and send the instructions to the motors. I've been experimenting with the robot finding keys on the floor. It does this by looking for a specific color and then stopping movement and vocalizing that it has found something. This works really well and i've also started experimenting with a camera on a hat which you wear and it gives you verbal instructions where the keys are on say a table. This technology could be adapted to help people with visual impairment, if anyone is interested in using it for this and wants to know more then please email me, i would also be interested in helping on a project like this.
This update has a couple of new Emotion functions. One of these gives the Ai the ability to asses if the inputted sentence is framed in a positive or negative way. The other function is a Word Swopper (WS). This changes nouns and verbs in the input. Some new Keywords have been added. Some older functions have been removed this is because there are other ways of doing the same thing. If anything disappears that you use then please let me know and i'll send details of how to do the function in other ways.
A new version, this version has a new process called Sentence Types (ST). This process is based on latest brain research which talks about a Formula Of Language (FOL). Some words are given a code called a ST code, in a similar way to word types but not all words are assigned a code and a word could have more than one code. A number of codes are setup by the SuffixFind keyword. ST code meanings are structured around the requirements for the FOL. Normal word types are the traditional types like nouns and verbs, ST codes use some of these. The number of ST codes is kept as low as possible to reduce the complexity of he FOL, unlike normal word types which, when used by pattern recognition works better the more different types there are. The ST process is working very well even though the FOL is still under development and not yet fully functional.
The robot arm is built and working a video of it moving a beer can, can be seen here.
This version has some new keywords, tags and the help file has been worked on.
The output filter now has a Grammar filter. This is designed to re-order words into correct english. Outputs produced by processes that use neural networks tend to produce a sting of words relevant to the conversation but spat out in a jumbled manor. The grammar filter re-orders and excludes words. This filter when run in reverse turns normal language into an output that sounds like something Yoda from Star Wars would say!
ImageScanFunctions now include movement detection and vertical intersection data collection. Both of these have been developed to give the Ai data on the position of the robot arm. I'm also looking at using the functions to read a chess board and distinguish between different pieces on a square irrespective of there position or orientation in the square
This version has some new image scan functions which include movement detection and a way of finding the vertical coordinates of objects. ISF's can now be lumped into one scan thus speeding up processing time. It takes less than a second to download, scan, process and respond to images from the web cam. Some new keywords have been added and a couple of processes have had some optimization work in order to speed up processing times. I noticed an Ai with over 40,000 entries in the BD was running a bit slow. Most of the Ai's i use have around 5000 to 15,000. I've been working on making the documentation clearer. Work has started on the robot arm which is powered by air. Its being attached to Robot Hamish, some of the new image scan functions are being designed to track the position of the arm. What i really need is a way of finding out how far the air ram has extended.
I've uploaded a video to YouTube Robot Hamish auto-navigating. The video shows robot Hamish auto-navigating around a room. These days the robot is pretty good at avoiding objects. Training the robot to navigate the room has been quicker than expected, the robot quickly finds places to get stuck in which it can then be trained to avoid.
The latest version includes a new keyword ImageScanFunctions this is a collection of functions that analyze images. At present there are 23 functions these include functions that highlight colors, areas of shade and another vertical and horizontal line finder function. These have been created for robot navigation and to enable the robot to distinguish between objects. I use 5 of these functions for the robot to navigate in a room with various objects being detected by the functions, all image processing is done in memory and image drawing and scanning is done using the DX window this means using a number of different functions in sequence only takes a fraction of a second. The room the robot is in has a floor made of floor boards which are not even, there are lines in between the boards which get detected by the vertical line scan so the new functions are designed to get around this by using different techniques. Another problem has been getting the robot to distinguish between the wooden floor and wooden chair legs and piles of burner wood. Using a variety of different techniques gets around this problem. A code is created from the scan and this code is compared to the previous 1000 codes created. Over time matches are found and these can be added to the database. When a match is found then cell 1611 is activated, the new tag <lookup-ac> can be used to see if the code exists in the database and if so activate the associated cell. Some of the functions adjust the image to prepare it for other processes. Differences in light can effect the color functions, i keep the robots lights on to minimize this effect and also use a different data set for day and night. These functions are enabling the robot to auto navigate for many hours without getting stuck.
New version AiV016i. Image scanning routines have been worked on this is enabling the robot to roam around a room using vision to guide it. A new keyword ImageScanVerticalCalibrate gives the Ai the ability to reset its vertical line scan sensitivity automatically.
The Image and DX windows are now part of the user window which also has the ability to embed up to 9 browser windows. This makes controlling the robot easier
A grammar filter has been added to the output filter and the ability to control which outputs are processed, also a new process is being worked on called Sentence Type (ST).
An update from Microsoft for Windows can make fonts go weard it can effect a number of applications including the font used by the Ai. Microsoft may send out a fix in the future i've fixed this problem on my machines by removing the security update Kb3013455.
Some functions have been updated to work better with cell activations and some changes made to the way neural network training data is stored. The training data files are stored in the weights folder and the Ai can only look in this folder for the data, doing it like this means the Ai will still work properly if the data is moved to other machines running the program. The Brain dialog box has had some functions combined and a couple of buttons removed. Training data is saved automatically when the TRAIN or UPDATE buttons are pressed.
a small bug in the code that generates the emotion code has been fixed
The help file has been updated
I've just set up my latest venture called Yorkshire Robot Company which can be found at yrc.biz. YRC has been set up to commercialize the robots. At some point we intend to set up a workshop or factory to build them and we are in the process of looking for suitable premises in the Yorkshire area.
The latest version of the Ai is still 16f with some new keywords and a new program called AiK8055InterfaceV002.exe This program is used to take inputs from a k8055 card and transmit them to the Ai. This enables 4 cards to be used and gives allot of flexibility to how the data can be processed. The program transmits a standard 9 bit neural network code, information on what cell to transmit to and whether the cell should be activated. The code transmitted by the program is used to set up the input code of he named cell.
A new version with more control over the analog outputs. This is for better robot control the analog outputs now use a cells input code to set the values. Robot Two is now built more information about the robot project can be found here. Version 16f has some more keywords and some refinements to the DT routine.
To speed up image processing time a new Direct X (DX) window has been added to the program. Direct X is a way for programs to communicate with hardware like graphics cards and use their resources. The DX window is used mostly by the robot which uses the keywords ImageLoadScan and ImageScanVertical to help with navigation. Using Direct X means image processing takes under a second using the DX window, if the DX window is closed then the Image window is used which takes 4 seconds. Using DX means the robot can now move at a reasonable speed.
A new routine called DID short for Dig In Deeper this is similar to the 6P routine but digs deeper into the database to find word connections. The help file has been updated and sorted out a bit more. I've made a few tweaks to the 6P routine in an attempt to get it to use the best answer of the ones it produces. The settings dialog box has been reorganized and a few more functions added to the audio player. I use the ai to play music these days as the quality seems better than other players. I think this is because it uses the MCI device in the computer and thus communicates with the sound card directly without doing any preprocessing to the sound. A couple of new keywords have been added to clean in cell fields. These are the cell numbers that a cell connects to and are used by a number of processes. 6P learning and LM learning set up these cells but sometimes strange associations appear whilst these can be fixed manually I've found some instances where a small word can have many associations. 6P learning has been tweaked to try and reduce this from happening. A number of processes produce answers that whilst they contain good words in there output the structure and some of the words spoil the quality of that output. I'm trying to work out a way of correcting these grammar mistakes. Its so easy when you look at the outputs to work it out but getting the computer to do it is proving very hard.
This version has a number of new routines and tweaks which are used for controlling the robot which is now built. These new functions use edge detection to extract data from an image captured by the robots web cam and use the information to build up a location map so the robot knows where it is and can navigate autonomously. These routines use an electronic compass which is controlled using a separate program also part of the download. This program sends the compass data to the Ai and sets input codes in the Ai's Brain Database. Whilst the code is written i haven't had much time or power to fully test the routines so how well this technique works remains to be seen. The robot uses a laptop computer and is powered by 2 car batteries, the motors are from an electric wheelchair, the reason for building the robot so powerful is so it can also be used for carrying heavy objects.
Some new tags and an upgrade of the autolearn keyword to make it more reliable and work on different machines. The way Create HTML works has been changed. Tags are now used in template web pages, the tag <cell: > activates the cell whilst the page is being built, the tag is replaced with the output from the cell.
Work has started on the Emotion routines and there is a new Subject process. Some of the robot has been built i'm now looking for two electric wheelchair motors so i can build the drive unit.
New server program called AiServerV008.exe in the server folder. This is simple text only tcp/ip server used to communicate with the Ai from a web page. This is being used for house automation systems that i'm working on. At the moment i'm using it to control relays which control various systems around my house using my Kindle as a remote control. The server provides a very simple and efficient way of communicating with the Ai over networks and removes the need to set up a full web server.
A new project i'm working on is to build a robot that will be controlled by the Ai. The design has been worked out, how long it will take to build depends on available funds!
This version has a few bug fixes and a few new functions which include the new keyword AutoLearn. This enables the Ai to harvest online data and add it to its Brain database. The QTF process which queries remote Brains has been upgraded to work with this enabling a remote Ai to be used for data acquisition then send it to another Ai when a QTF request has been received. The keyword ExtractWords is a simple parser for web pages. It extracts just the text from the page removing all coding tags. Not all web pages work due to the way there designed and present text. AutoLearn can be used to update a entry i use it for updating the news entry and the weather entry so when i type in news i get the days news. Words not in the database are searched for in a online dictionary and the data including the word type is downloaded and added automatically. When the QI process acts on this new data logical conclusions can be made by the Ai that it hasn't been taught. If you get the error: cant open file ALFile.txt you need to update entry 1602 this is the System Cell used to control AutoLearn if LM is ticked in settings, look in stuff to add to help.txt for details.
All text and background colors can now be changed using System cell 816
There are two versions of the program in the latest release AiV015b is the latest version using two databases. AiV016a is a total rebuild of the Ai. The biggest change is the merging of the NNE and TF databases into one database called the Brain database. When the program is first run it creates a new file in the data folder called BrainDatabase.dat if the program finds the TF database from previous versions then if offers the user the option to import the data into the new format, no change is made to the original file. The process of rebuilding the Ai is complex and has produced a few bugs, most of which have now been fixed but this is an ongoing process and more will appear. During this process all functions are being checked and in some cases changed, a new help file will be available soon.
New version AiV015a.A few improvements have been made these include; the ability to export the TF database to spreadsheet CSV file and import a CSV file into the Ai, some special codes that use numbers have been changed to make import and export work. Optimized data storage for faster processing. Upgrade to the image window and associated functions.
The new DLL K8062.dll is used to operate the Velleman K8062 USB to DMX controller. Signals can be sent from the neural network to DMX devices.
The new Deeper Thought (DT) routine that changes and forms new connections in the neural network from changes made to the Ai's output is working well, this technique is enabling the Ai to learn.
New routines that work by feeding information back into the neural network enabling it to establish new word connections and learn through conversation. This routine is still being developed so information about it is in rough note form which can be found in the file: stuff to add to help.txt in the help folder.
We would be very interested to know what you think about the
program so please email us.
If you have a use for the Ai and need some form of extra functionality or a change in the program to adapt to you own needs then this may be possible but expect to pay something!
The program has zero funding and is a labor of love so if you want to invest in this project or any other Spud projects then please email us at: email@example.com
Ai main Window
Ai small window
Ai settings control how the Ai works
Can it think?
Whilst this is the goal the Ai program is very long way from this which is why there is no end envisaged in the development of the program. Over the past seventeen years that i have been writing the program i have had to try and analyze in microscopic detail how we humans understand words and speech, when someone says something to us what are the thought processes involved. Whilst this might not be the best way to start such a program it did seem the most logical approach as a program that can understand and react accordingly to human input is potentially the most useful. The Ai takes the sentence and checks it against words in the data base this produces information like what types of words are in the sentence nouns, verbs, questions etc. at the time of writing i have defined 80 different word types. The program also looks at the structure of the sentence checking this structure or parts of it against common know patterns this information is also stored in the data base. This information is then processed by algorithms. At this time there are 26 processing algorithms. Each algorithm asses the quality of its reply then the final translation algorithm chooses the answer that has the highest reply quality RQ and sends its reply to the output. Translation algorithms are:
Question Noun Verb (QNV) If a question word in the input is followed by a noun followed by a verb then it is assumed the verb is referring to the noun and a match is looked for in the noun and verbs description e.g.. the input "how do fish swim" will produce the output "fish swim fins". This routine gets better with more words in the data base and the better the descriptions.
Question Is (QI) if in the input there is a question followed by the word "is" then the Ai will send the description of the word after "is" to the output e.g.. "what is a fish" will produce the description of the word "fish" the word "a" is ignored. so the output would be "Vertebrate cold-blooded animal with gills and fins living wholly in water or in the sea"
Pattern and sentence code (SC) when the input is translated all the words are assigned a mnemonic dependant on there word type. The Sentence Code (SC) is checked for in the Brain Database(BD) also known patters are looked for in the SC. If a full SC is found in the BD then it has the same functions like any word. If a pattern is found in the SC then the extended pattern functions routine is also used. The pattern routine is used for things like looking in the log for words e.g.. "look in log for fish". The SC for that input is: _Šƒe] the pattern: _Šƒe has been set up to use the word after the pattern as the word to search for in the log, so the word "fish" is searched for. The answer sent to the output is "fish, found in the sentence, input: what is a fish" assuming logging is on in Settings (S). There is an ever expanding list of functions in the extra pattern routine look in help for more details.
Short Term Memory (STM) sometimes referred to as the Data Store holds the previous number of entries as set in settings. Words in the input are compared to words in previous inputs with the most frequently found words coursing a response. If an unknown word is repeated then this is detected. Repeated words are compared with subject words and if a match found then the conversation subject variable is set. If a repeat pattern is found then when the file loops then the SC's are added to the BD, if there are not already in the BD and Learning routine is ticked in settings.
Neural Network (NN) this code was written by a programmer called Boris and integrated into the Ai. The NN code works in a similar way as neurons in our own brains. The NN is mostly used by the NNE routine but some early code is still in the program which uses the NN in a different way.
Neural Network Extended (NNE) this routine is very powerful and has a lot of potential. Each cell can do many different functions depending on how the cell is set up. Cells are activated in sequence using a matrix file or by other means. The cell sets up the weights of the NN and then puts the cells input code into the NN which produces the output code which can be used to control input codes in other cells or follow instructions from associated entries in the main data base.
Reference Action Subject (RAS) the RAS routine
breaks down the input into 3 distinct types. This routine is designed
to look at individual words in more depth. The routine utilizes the
search routine first looking for the subject word then rescanning for
the reference and action words. The assigning of words to different
types is dependant on the types of words in the input ie the subject
word may be the noun in the sentence and the reference may be the
verb in the sentence but if there is no verb and there are 2 nouns
then the reference word will be one of the nouns. Look in the help
file for more details on what words types are used and when. This
routine is proving particularly useful in finding information that
could be in many files. The test, search file, contains over 60
different files from text files to web pages that are searched. The
search takes less than a second on 1296mhz laptop. Because the RAS
routine breaks down the sentence to 3 words only you would have
thought that the meaning in the sentence would be lost but most times
this isn't the case consider the question 'please tell me what the
capital of england is' RAS=england-tell-capital this quite clearly
describes what is wanted, this also means that different ways of
talking or asking for something can still produce the correct
If a file that is searched contains 2 or more of the RAS words then the sentence containing the words is sent to the output. The BD is also searched for the 3 words joined eg. england-tell-capital if found in the BD field 8 is sent to the output.
LM, DT, 6P, NNEB, NNEC, These routines use the NN in different ways and are described in more detail in the help files
Functions, uses and jobs
Here are some of the things i have been teaching the Ai to do.
The Ai can work with a server and receive input from form data, from a web page. This data can be processed by the Ai and the Ai output can be built into a web page. The Ai uses template web pages to construct pages or can insert code directly into a page. This function is most useful for communicating with the Ai over the internet.
Communication using UDP/IP or text files, this can be used for instant messaging or using two programs to pass data e.g. using 'scanimage' and 'compairimage' you can set the Ai to monitor images from a web cam and if the image changes then communicate the information over the internet. Some web cam's come with software that is more sophisticated at monitoring and takes pictures when movement is detected, if this is the case you can use the keyword 'scanfornewfile' which can then let you know when an new image has been taken. The Ai can also read and write to a text file on the computer its running on or to a networked computer. It can also read text files created by third party software.
The Ai can search through files for words in the sentence, the files searched can be different depending on the search type. The search routine can search any text file. The output of searches can be sent to the output, written to a file or embedded in a web page, when the results are embedded in a web page then the filenames are converted to links.
You can run as many different versions of the program on one computer but each instance of the program needs to be in its own folder and have its own database. This means you can use each instance to do a particular job. You could use one as a translation tool for translating from one language to another whilst another is monitoring a zone using a web cam with another as the main communication program receiving inputs from each and processing accordingly then sending the information over the internet to another Ai program on another machine. Linking Ai's has many possibilities.
Stats, statistics are gathered from every routine in the program and displayed as a graph when stats is checked in settings. The thought behind collecting stats was so the Ai could be used for document analysis. The values are converted to a 9 bit binary code which is used for the input code for entries 1000 to 1199 in the database. Look in the help file under 'stats' for more information of which BD cell number relates to which stat. Each inputted word is assigned a number depending on the word type, this number is added to 1200 and the input code of the BD entry is increased. eg. the input in BD entry 1202 is incremented every time a noun is found. The information on what word type has what number is also in the help file. This information can then be processed by the neural network depending on the way the cells are programmed and processed using a matrix file.
The Ai uses a third party program called Auto It. This program is a scripting program and is very good at controlling windows. You can script mouse movements and clicks, which means anything you can do with a mouse an Auto It script can do. Auto It scripts are activated by the keyword 'autoit'.
Functions are describe in more detail in the help file which is part of the download. As the program develops more functions are expected. Its worth pointing out that functionality has not been restricted or controlled so be careful when setting up system commands.
Home | Email Spud | Spud Ai