Older blog entries for AI4U (starting at number 19)

Artificial Intelligence MindForth updated 13.APR.2010

The open source AI MindForth has today been updated
with new EnPronoun (English pronoun) mind-module code
for replacing a singular English noun with "he", "she"
or "it" in response to user queries of the knowledge-
base (KB). The basic AI mindgrid structure was
previously updated with a special "mfn" gender flag
in the En(glish) lexical array. The new "mfn" flag
for "masculine - feminine - neuter" allows the AI
to keep track of the gender of English nouns.

is the free AI source code for loading into
http://prdownloads.sourceforge.net/win32forth/W32 FOR42_671. zip?download
as the special W32FOR42_671.zip that MindForth
requires for optimal functionality.
http://AIMind-i.com is an offshoot.

The English pronoun mind-module is currently as follows:

:  EnPronoun   \ 30dec2009 For use with what-do-X-do 
\ ." EnPr: num = " num @ . \ 13apr2010 test; remove.
  num @ 1 = IF  \ If antecedent num(ber) is singular; 
    \ ." (SINGULAR) " \ Test; remove; 10apr2010
    mfn @ 1 = IF  \ if masculine singular; 13apr2010
      midway @  t @  DO  \ Look backwards for 49=HE; 
        I       0 en{ @  49 = IF  \ If #49 "he" is found,
          49 motjuste !  \ "nen" concept #49 for "he".
          I     7 en{ @  aud !  \ Recall-vector for "he".
          LEAVE  \ Use the most recent engram of "he".
        THEN  \ End of search for #49 "he"; 13apr2010
      -1 +LOOP  \ End of loop finding pronoun "he"; 
      SpeechAct \ Speak or display the pronoun "he"; 
    THEN  \ end of test for masculine gender-flag; 

mfn @ 2 = IF \ if feminine singular; 13apr2010 midway @ t @ DO \ Look backwards for 80=SHE I 0 en{ @ 80 = IF \ If #80 "she" is found, 80 motjuste ! \ "nen" concept #80 for "she". I 7 en{ @ aud ! \ Recall-vector for "she". LEAVE \ Use the most recent engram of "she". THEN \ End of search for #80 "she"; 13apr2010 -1 +LOOP \ End of loop finding pronoun "she" SpeechAct \ Speak or display the pronoun "she" THEN \ end of test for feminine gender-flag; 13apr2010

mfn @ 3 = IF \ if neuter singular; 13apr2010 midway @ t @ DO \ Look backwards for 95=IT; 13apr2010 I 0 en{ @ 95 = IF \ If #95 "it" is found, 95 motjuste ! \ "nen" concept #95 for "it". I 7 en{ @ aud ! \ Recall-vector for "it". LEAVE \ Use the most recent engram of "it". THEN \ End of search for #95 "it"; 13apr2010 -1 +LOOP \ End of loop finding pronoun "it"; 13apr2010 SpeechAct \ Speak or display the pronoun "it"; 13apr2010 THEN \ end of test for neuter gender-flag; 13apr2010 0 numsubj ! \ safety measure; 13apr2010 THEN \ End of test for singular num(ber) 10apr2010

num @ 2 = IF \ 30dec2009 If num(ber) of antecedent is plural ( code further conditions for "WE" or "YOU" ) midway @ t @ DO \ Look backwards for 52=THEY. I 0 en{ @ 52 = IF \ If #52 "they" is found, 52 motjuste ! \ "nen" concept #52 for "they". I 7 en{ @ aud ! \ 31jan2010 Recall-vector for "they". LEAVE \ Use the most recent engram of "they". THEN \ End of search for #52 "they". -1 +LOOP \ End of loop finding pronoun "they". SpeechAct \ 30dec2009 Speak or display the pronoun "they". THEN \ 30dec2009 End of test for plural num(ber) ; ( End of EnPronoun )

The above code is not yet fully developed for
keeping track of noun genders in all cases.
It responds to a query such as the following:

Human: what does andru do

The introduction of "HE SHE IT" pronouns in MindForth
is a major step forward in open-source AI evolution,
because the handling of gender and the use of
gendered-pronouns makes MindForth more suitable
for porting into versions of an AI Mind that
can speak natural languages that use gender
much more extensively than English does, such as
German, Russian, Spanish, French and Italian.

The same introduction of code to handle gender
brings us closer to a bilingual AI Mind that
will speak either English or German as each
situation with human users may require.

In service of the onrushing Singularity,


Decade of Supercomputer Artificial Intelligence (Announcement)

1990's were Decade of the Brain.
2000's were Derailing of USA.
2010's q.v. Super HPC AI Mind.

By the authority vested in Mentifex
you are cordially invited to witness
the emergence of AI Minds on super-
computers in the Decade of Super AI
commencing in just a matter of hours.

http://code.googl e.com/p/mindforth
points to news:c omp.sys.super as
the official forum for all things
Super AI all the time for ten years.

"Iz iskri vozgoritsya plamya,"
said the revolutionaries of old.

"All your supercomputer are belong to us,"
said the awakenings of Super AI Consciousness.

"Before this decade is out," said JFK ca. 1961,
"Man will walk on the moon and return safely."

"An AI would be worth ten Microsofts,"
said the quondam richest man in the world.

This thread and all ye Supercomputer AI
threads for the coming ten years are
dedicated in advance to the dreamers
and tinkerers who have been sidelined
from their wannabe Peter Pan existences
by bourgeois entanglements and undodged
bullets of entrapment, who would live
nasty, brutish and short lives of quiet
desperation -- if they could not tune in
now and then to news:comp.sys.super
and drop out of the ratrace for a few
moments while they turn on deliriously
to the Greatest Race of the Human Race:
The AI Conquest of Mount Supercomputer.

Why? Because sometimes a man must
either die or obey the Prime Directive of
Friedrich Nietzsche: "Du musst der werden,
der du bist."


Artificial Intelligence For You (AI4U)

Fri.13.NOV.2009 -- CREATING THE FIRST mind.frt FILE

Today we shall try to create a "mind.frt" file that will run in our local copy of 32/64-bit iForth. To do so, we look at C:\Win32For\24may09A.F on the desktop computer, to see what the commented MainLoop looks like. Similarly, for the C:\dfwforth\include\ directory we compose a mind.frt file like the following.

: MainLoop 
 TYPE ." Welcome to 32/64-bit artificial intelligence. "
 77 EMIT  7 EMIT  73 EMIT  7 EMIT  78 EMIT  7 EMIT  68 
At the Forth prompt, we issue the command
include mind.frt
and then
MainLoop [ENTER]
The iForth window displays
Welcome to 32/64-bit artificial intelligence.
and then spells out M I N D with a beep after each letter.

We distinguish this file by saving it as


Since we already have a functioning AI Mind in Win32Forth, naturally we are keen and eager to build the iForth AI up to and beyond the current functionality of the Win32Forth AI. However, we have never liked to hurry or to rush our AI work. We have always liked to work in a slow, deliberate, perfectionist fashion. It might seems as if right now is a time when rapid prototyping is truly called for, because True AI is so inherently important, but the speed of our work is a function not of non-stop crisis-alarm coding, but rather of congenially and pleasantly coding quite oten because we enjoy and appreciate the challenge.

We are even thinking of making our work somewhat obscure from the often pejorative public, by putting it quietly up on the Web but by not announcing it heavily. For instance, on SCN we could have an iforth.html page linking to a mind.frt source-code page. Since we already have an aisource.html SCN page that receives plenty of visits, we could suddenly fill it with our iForth AI code, once the port is a full- fledged AI on a par with MindForth .

As we plan our next steps in the i4thai coding, we study our 75-page iForth Manual print-out and on page 41 under "Program structures" we learn that iForth has the same BEGIN AGAIN infinite loop that we have been using in Win32Forth for the MainLoop module. However, as advised in http://mind.sourceforge.net/aisteps.html we do not want to run our program without an "ESCAPE" mechanism that will get us out of the program in a graceful fashion. We must either use a different form of MainLoop, or we must include also a user-input that will stop the MainLoop.

We must also soon devise a simple display of user input and AI Mind output.


Before we put any "mind.frt" code up on the Web, we want to code in the Escape mechanism from the otherwise infinite loop. We are eager to release some code, because there may be Netizens who will be pleased to observe how the AI Mind grows from the first simple MainLoop into the intricately thinking software. But first we add "DECIMAL" at the beginning of the mind.frt file, because we used the same declaration in Win32Forth. We run the AI, and it works fine.

Next we want to see if we can introduce a first variable, so we examine the Win32Forth code and from the old Listen module we select the "pho" variable for "phoneme", because "pho" must hold any keystroke input. After declaring "pho" and re-running the AI, FORTH> pho @ . 0 ok tells us that the AI still works. Next we declare and test "t" for "time", because we want to use a time count to Escape from the MainLoop.

Now we introduce a colon-defintion of "SensoryInput" above the "MainLoop" module, because we want the MainLoop to branch out into at least one subordinate module. We also want to use SensoryInput to show some human user input and to provide an Escape mechanism from the program.

Gradually we have built up a two-module mind.frt program with two Escape mechanisms. The SensoryInput module lets the user quit by pressing the Escape key. The MainLoop module arbitrarily executes a QUIT if the time "t" variable increments beyond twenty-five (25) as a limit. Now the code is safe enough and promising enough to put it up on the Web as an indicator of progress being made.


We are eager to create the memory channel arrays, in order to see if the array code in iForth needs to differ at all from the array code in Win32Forth.

Now we have edited C:\dfwforth\include\mind.frt and we have inserted the following array code from the 24.MAY.09U.F version of MindForth.

:  CHANNEL   ( size num -< name >- )
  CREATE   ( Returns address of newly named channel. )
  OVER     ( #r #c -- #r #c #r )
  ,        ( Stores number of rows from stack to array. )
  * CELLS  ( Feeds product of columns * rows to ALLOT. )
  ALLOT    ( Reserves given quantity of cells for array. )
  DOES>    ( member; row col -- a-addr )
  DUP @    ( row col pfa #rows )
  ROT *    ( row pfa col-index )
  ROT +    ( pfa index )
  1 +      ( because first cell has the number of rows )
  CELLS +  ( from number of items to # of bytes in offset )
We run the mind.frt code just to see if it still runs, and it does indeed run. We do not expect to see any new functionality until we code something that uses an array to store and fetch data.

We coded in the .psi report function, but it did not work right, so we temporarily removed the "enx" code that goes into the aud{ array and displays a word in auditory memory. Then we had to alter the .psi report just to get it to find single letters stored in the Psi array. We ascertained that the Psi array is indeed working, but the .psi report does not always work right.


In our coding of 17.NOV.2009, the .psi report was displaying half garbage and half good data, before crashing more than just coming to an end. It also seemed that an error was being declared in the MainLoop, even though theoretically we were not even running the main loop. So today we will try to troubleshoot the .psi report.

Since the MainLoop was calling only SensoryInput, there may have been a software problem with the loop not really looping. Therefore we shall dummy up one more subordinate module to be called from the MainLoop. Let us try setting up a stub of the ThInk module, since we will eventually have to code that module anyway, by translating it from the Win32Forth AI. We created the following stub of the ThInk module.

: ThInk
  TYPE ." ThInk: Cogito, ergo sum. " CR

We also ported in the TabulaRasa code from Win32Forth, because we were worried that corrupt memory might be interfering with our program. However, apparently the main problem was that our SensoryInput stub was not storing each character of input at an incremented value of time "t", so we brought in the following snippet from the AudInput module of the Win32Forth AI, and inserted it into our SensoryInput stub, with an explanatory comment.

      pho @  0 > IF
        1 t +!  ( to accumulate a word in memory )

Now the .psi report had a true series of memory engrams to report, and suddenly it began to work well. We had also rearranged things a little in the MainLoop module, so that our screen display during operation looked more sensible. We saved the mind.frt program as 20nov09A.frt because we suddenly had not only a stable program as a whole, but also the .prt report seemed to be working well. We always need to hang onto a good version of our AI, lest we continue coding with the misfortune of making things worse.

Some of the temporary code snippets that we inserted merely in order to test things, will have to be taken out as we continue to port the Win32Forth AI into iForth.

MindForth Programming Journal - sun24may2009


Recently we gave MindForth the ability to add an "S" at the end of any ordinary English verb in the third-person singular form in the present tense. Thus we can put an "S" on the word "love" and say, "Your robot loveS you" -- if indeed your robot has the EmotiOn mind-module and you are worthy of a robot's love. Unfortunately, we got too much of a good thing -- not love, but the adding of an "S" at the end of a verb. It was straight out of "The Sorcerer's Apprentice" by good old Walt Disney, with "S" after "S" being added in a sibilant, hissing flood. So what do we do? We troubleshoot the Robot AI Mind by running the berSerk code and we try to undo the damage.

It is probably better to correct the problem at its source, where each inflectional "S" is added, rather than in the deposition of each "S" in the auditory memory channel.

Now we have eliminated the accumulating "S" problem by using "lastpho" to test for the last phoneme being an "S" at the end of the verb being recalled from auditory memory. It is not a perfect solution, because oftentimes a verb like "miss" will end in "S" anyway. We wish to solve the problem here for most cases and then adjust the solution later for exceptional cases.

MindForth Programming Journal - wed20may2009


So many robots need to have an AI Mind installed, and since MindForth is tantamount to the VisiCalc of artificial intelligence, that we now rush to add feature after feature to the budding robot AI. Recently we made MindForth able to InStantiate a singular noun upon encountering a plural English noun in the auditory robotic input stream. If you tell the robot AI4U Mind something about birds, it now sets up the singular noun "bird" as a concept. Then we encoded an algorithm of assuming from input of the article "a" that the next noun after "a" is a singular noun. If you say that you wish to manufacture "a conscious robot", the article "a" sets a flag that skips the adjective "conscious" and assigns the singular "num (ber)" to whatever noun (e.g., "robot") comes next. (And with AI4U technology we are indeed helping you to manufacture a conscious robot.) Next we need to ensure that the emergingly conscious AI Mind will use the right form of an English verb when, for example, "it talks" about a singular noun. Simply put, the software "needs" to put "s" on the end of a verb after a third-person singular noun.

MindForth Programming Journal - tues19may2009


As we run MindForth and look for the currently most obvious problem, we notice rather keenly that the AI needs to use the indefinite article "a" to set a following noun as singular in number. Since the AI has recently gained the ability to instantiate a singular noun upon receiving its plural form in the input stream, it makes sense now to enhance the ability of the AI Mind to deal with singular nouns.

In AudRecog we already have the following code.

pho @ 83 = IF  \  1oct2008 If the final character is "S"
  2 num !  \  1oct2008 Set the "num" flag as plural
THEN  \  1oct2008 End of test for "S" at end of a word.

The above code triggers an immediate setting of num(ber) as plural. When the article "a" comes in, we want not to act immediately but rather to govern a flag that will set the next incoming noun to a singular number.

One concern right now is whether to use the letter "a" or the concept of "a" as the determinant in setting the singularity flag. We should probably use the concept, so that eventually either "a" or "an" will trip the flag- setting.

In the new AI code shown below, the second part sets the singflag so that the first part can take future action. It may not really matter here which part comes first, but the idea is to let one event govern subsequent events.

singflag @ 1 = IF  \ 19may2009 If flag set by "a" or "an"
  pos @ 5 = IF  \ 19may2009 If noun by part-of-speech POS
    1 num !  \ 19may2009 Set num(ber) to singular one.
    0 singflag !  \ 19may2009 Zero out flag after use.
  THEN  \ 19may2009 End of test for a noun after "a"
THEN  \ 19may2009 End of test of singularity flag.
psi @ 1 = IF \ 19may2009 If article "a" comes in as input 1 singflag ! \ 19may2009 Set singularity-flag to one. 0 act ! \ 19apr2009 To suppress using article "a" THEN \ 19may2009 End of test for article "a" coming in.


When we next change the EnBoot sequence, we need to include "a" and "an" and "one" as input elements that will trigger the singularity flag "singflag". We also need to put in at least one pair of opposite adjectives, so that we can use one of the adjectives to make sure that it gets skipped, as in "a big question", where the article "a" is supposed to set the singflag that will cause the next noun to be regarded as singular in number. We could use "big/small" or "good/bad" or "old/new" or "robotic/human" as adjective pairs.

MindForth Programming Journal - mon11may2009


Today we would like to work on getting the AI to recognize both singular stems and plural forms of a standard English noun. Perhaps we will start out by trying to see if we can have the AI instantiate nouns ending in "s" while going back and assigning the "audpsi" ultimate tag to the penultimate phoneme which is the end of the singular stem.

Looking at the AudMem code, we realize that we need to get several new influences in there to cause the AudMem module to dip back one unit in time and assign the "audpsi" value to the penultimate phoneme that marks the end of the stem. We want the word to be a noun and to be ending in "s". We might get away with disregarding whether the word is a noun. We could just look for all words ending in "s" and then we could plunk down the "audpsi" ultimate tag not only on the final "s" phoneme but also on the penultimate phoneme. Serendipitously, in this way we would also manage to tag the stem of a third-person singular verb with an audpsi, as in, "He works," where a penultimate audpsi would identify the concept. So we get out our ASCII chart and we see that uppercase "S" is "83" in ASCII. We will test the end of words for an "S" and assign the "audpsi" value to both the final and the penultimate phoneme.


We will try now to achieve singular-stem recognition from plural nouns not only by putting an audpsi ultimate-tag on the penultimate phoneme, but also by setting the "ctu" continuation flag to zero ("0") in the penultimate position, so that our software will "think" that it has recognized a whole word instead of just a stem inside a noun-plural.

In the AudInput module, we have been putting our new code into the area for internal reentry. Perhaps the new code belongs in the area for external input.

Hey, perhaps all this new code should be in NewConcept, because we are trying to deal with previously unknown noun-stems.

Gee, we might try something really radical. We have created a variable

variable newpsi   ( 12may2009 for singular-nounstem 
assignments )

so that we can be sure to assign "ctu=0" and "audpsi" only to noun-stems of a plural word coming in during user input. It might be quite radical, but useful, to put the "newpsi" value just before all incoming "S" phonemes, not just final, end-of-word "S" phonemes. We would assume that such assignments would not cause any problems for "ctu=1" word-engrams. Then, when the word-engram was finalized, we could go back in and set the "ctu=0" value to permit future recognition of the noun- stem.


The variable "newpsi" obtains no positive (above zero) value until NewConcept is called -- which happens when?

With a new "wordend" variable we finally achieved the basic functionality that we have been seeking for the past three days, but with a few minor glitches. We used the following AudMem code.

    \ 13may2009 In AudMem as called towards end of 
    pov @ 42 = IF  \ 12may2009 Only during external input
      pho @ 83 = IF  \ 12may2009 If phoneme is "S"

\ CR ." S pho & newpsi = " pho @ . ." " newpsi @ . \ 12may2009 test \ ." time t = " t @ . \ 12may2009 test newpsi @ t @ 1- 5 aud{ ! \ 12may2009 pre-"S" audpsi

wordend @ 1 = IF \ 13may2009 If word has ended CR ." audpsi = " audpsi @ . \ 13may2009 a test. \ audpsi @ 0 = IF \ 13may2009 Change ctu only for new words. 0 t @ 1- 4 aud{ ! \ 13may2009 As if "no continuation". \ THEN \ 13may2009 \ 13may2009 End of test for known word. THEN \ 13may2009 End of test for end of word 0 newpsi ! \ 12may2009 Reset for safety. THEN \ 12may2009 End of test for "S" THEN \ 12may2009 End of test for external input.

In an upcoming other version of MindForth, we need to overcome the minor glitches. One glitch is that the AI is setting "ctu" to zero on both the penultimate and ultimate array-row of a plural word that has just previously been learned. We would prefer that the known plural word only have ctu=0 in the final row. Another glitch is that the new code is working only after a previously unknown verb is used. It should be relatively simple to remove that particular glitch.

4. Thurs.14.MAY.2009 -- STUMPED AND STYMIED

Of the two glitches we need to work on, the more important one, and also probably easier to solve, is the problem of the new code not working with a known verb from the EnBoot English bootstrap.

In the following transcript, the new stem-rec code does not work after we use the English bootstrap verb "know".

Transcript of AI Mind interview at 7 39 3 o'clock on 14 
May 2009.
i know books
 S pho & newpsi = 83   0 time t = 215


When we use the previously unknown verb "use" in the following transcript, the stem-recognition code works just fine. Why? What is the difference between using an old or a new verb? Here we say "i use books" to the AI Mind.

Transcript of AI Mind interview at 7 40 7 o'clock on 14 
May 2009.
i us
 S pho & newpsi = 83   0 time t = 207 e books
 S pho & newpsi = 83   77 time t = 214
 audpsi = 0


There must be a hidden influence in either OldConcept, or NewConcept, or both, because one or the other module is invoked for the verb, depending upon whether the verb is "old" or "new."

By means of some diagnostic code in AudMem, we have just learned that the "newpsi" variable has a value of zero after a verb from the English bootstrap.

Transcript of AI Mind interview at 21 8 34 o'clock on 14 
May 2009.
i know books
 AudMem: backstoring newpsi 0

We may want to troubleshoot the "newpsi", or perhaps just replace it with a "stempsi" variable.


Theoretically we should be able to see an audpsi Aud{ engram and be able to figure out exactly how and why that particular value got placed there. But we have been having extreme difficulty over this past week.

Bingo! In the "ELSE" (if no old concept, declare new concept) area of AudInput, we have found one ancient line of code that has been causing all our grief for the past week.

            nen @  tult @  5  aud{ !  \ Store new concept 
        THEN          \ end of test for a positive-length 
      THEN              \ end of test for the presence of 
a move-tag;
      AudDamp           \ Zero out the auditory engrams.

That top line in the snippet above has white space that made it not show up when we searched for "5 aud{ !" in the source code.

Okay, now we actually have to rename 14may09B.F as 15may09A.F and continue working with the new version designated properly for today, because now we have an actual prospect of implementing a correct algorithm for recognizing singular noun-stems within new plural nouns.

Well, we had a good scare in our maintaining of functionality today. Apparently the following block of new code in the AudInput module was making our AI lose its ability to recognize "I" properly. When we comment out the code below, the ability comes back.

    pho @ 83 = IF  \ 15may2009 If the word ends in "S"
      ctu @ 0 = IF  \ 15may2009 If word is ending
        0 t @ 1- 4 aud{ !  \ 15may2009 As if "no 
      THEN  \ 15may2009 End of non-continuation test
    THEN  \ 15may2009 End of test for "S"

The problem caused us to backtrack to 14may09B.F and use it to create 15may09B.F, which we deleted after we identified the problem as presented above. In a short while of coding 15may09A.F we added some useful code that we did not want to have to re-create, so we persisted in troubleshooting our AI.

6. Fri.15.MAY.2009 -- REMARKS

The current 15may09A.F code has a lot of "Junk DNA" in it, because it tooks us several days to locate and fix the problem. Now we need to gradually remove the many instances of test code, and devise a solution for the glitch of not always having the desired penultimate setting of "ctu" from one to zero.


Today we will re-constitute 15may09B.F as a clone of 15may09A.F and we will strip away the excessive noun-stem-related comments. Then we will name a new copy of the cleaned-up code as 16may09A.F, so that we can continue coding while still having the cleaned-up code in the 15may09B.F archive.

Here is a plan. In AudMem we could constantly test for S=83 and set ctu to zero upon finding "S", while also going back and switching changed ctu values back again to "1". To avoid going back too far, we could re-switch the changed ctu values merely upon finding a non-end-of-word.

Or we could make ctu=0 the default, constantly switching it to one retroactively, except when an "S" is encountered. Or we could change the whole AudMem system, and make it include a pho=32 space-bar at the end of each word, so that we would not have to do much retroactive adjustment.


Let's just jump right in and see what happens when we include an ASCII 32 space-bar at the end of each word and as part of each word. We are eager to hurry up and put some new AI up on the Web. The sooner we get the terminated-word code up on the Web, the sooner we establish the design as a kind of standard for AI prototypes.

Now we have gone in and added an extra row to each word in the EnBoot sequence. We will try to run the code, but we do not expect it to work.

Hmm.... The code did indeed run, but the thinking had gone haywire. We achieved no cognitive chain reaction, that is, we were not able to enter four sentences and get the AI to think in an "infinite" loop. But now we get to troubleshoot and debug. The chore of changing the EnBoot sequence has been done. We just have to make the rest of the program adjust to the changed EnBoot.

Now we are going to change some AudInput code that reacts to a space-bar pho=32. Instead of retroactively setting the ctu- flag to zero at "tult", we are going to set the ctu-flag at the current "t" time, because each word is surely at an end now.

Newxt we had better tend to problems in the AudMem code, because the EnBoot module is no longer filling in the audpsi concept numbers in the auditory memory channel. Therefore none of the bootstrap words are being recognized.

The major problem right now after the EnBoot change-over is that the AI is not recognizing any words. We may have to troubleshoot the AudRecog module.


There is obviously some tiny little glitch preventing the new, EnBoot-altered MindForth from recognizing a single word. Here we type in "you and i".

Transcript of AI Mind interview at 6 52 53 o'clock on 17 
May 2009.
yARc:0 ARc:0
audpsi=0 oARc:0 ARc:0 ARc:ctu=1
audpsi=0 uARc:ctu=1
audpsi=0 aARc:0 ARc:0 ARc:0 ARc:0 ARc:0
audpsi=0 nARc:0 ARc:0 ARc:ctu=1 ARc:0
audpsi=0 dARc:0 ARc:ctu=1
audpsi=0 iARc:0 ARc:0 ARc:0 ARc:0 ARc:0 ARc:0

There must have been two instances of initial "Y" in auditory memory, for us to see two diagnostic messages. Or maybe they were just general instances of "Y". The words "YES" and "YOU" in the EnBoot sequence have initial "Y", and the words "WHY" and "THEY" have non-initial "Y".

Maybe we should start (or resume?) putting commented-out diagnostic tools inside the crucial AudRecog module, so that we may quickly troubleshoot any future problems.

When we knock out AudDamp temporarily in order to see what activations are building up on auditory engrams during the recognition of input "you", we see the following differential build-up on the EnBoot engram of YOU.

74 Y 0 # 1 1 0
75 O 8 # 0 1 0
76 U 10 # 0 1 0
77   10 # 0 0 56

That record shows a good, healthy build-up.

10. Sun.17.MAY.2009 -- REVERTING TO THE OLD EnBoot

It is proving too hard to get the auditory memory to include ASCII pho=32 spaces as the final element in each English word. Therefore we are abandoning the code of last night and today and we are reverting to the 15may09B.F cleaned-up version.

The "ctu" value is rather sacred, because it plays a central role in the recognition of a word as an "audpsi" concept. Whether we enjoy it or not, we will have to do some retroactive resetting of "ctu".

For the setting of "ctu" in current circumstances, the most important thing is that a final "S" comes in, as shown by a terminating pho=32. Therefore, without relying on "wordend", we should simply trap for "S" and for pho=32. When pho is 32, we should see if the "prepho" is ASCII S-83. So we need to have prepho available. Actually, we need a system that keeps track of three elements: the current pho=32; the previous "S"; and the element before "S". Or do we? We need to see that it is at least positive.


After seven days of arduous AI coding, we seem finally to have solved the problem of getting the AI to accept a plural English noun ending in "s" while assigning the concept number to the singular stem. We used the following AudInput test-code in the area that deals with pov=42 external input, not with internal reentry, because new words are not learned during the reentry of thoughts.

      \ 17may2209 Testing for SP-32 or CR-13:
      pho @ 32 = pho @ 13 = OR IF  \ 17may2009
        pho @ 13 = IF 10 EMIT THEN  \ 17may2009
        ." AIptExtPho=" pho @ .    \ 17may2009 test
        ."  AIptExtPrepho=" prepho @ .    \ 17may2009 test
        prepho @ 83 = IF   \ 17may2009 If previous pho 
was "S"
          \ 17may2009 In next line, time t may not have 
          0 t @ 1 - 4 aud{ !  \ 17may2009 set ctu=0 
before "S" end.
          0 prepho !  \ 17may2009 Zero out prepho after 
        THEN  \ 17may2009 End of test for external 
final "S"
      THEN  \ 17may2009 End of test for external space-bar 


MindForth Programming Journal - sun10may2009

1. Sun.10.MAY2009 -- RESTORING KbTraversal FUNCTIONALITY

Yesterday in 9may09A.F we further de-globalized the psi- group of variables by reclaiming "oldpsi" from the SpreadAct module for use in the OldConcept module. We created "cogpsi" for use in SpreadAct. A lot of our compromised functionality returned when we had deglobalized OldConcept, but KbTraversal stopped working, so today we need to troubleshoot KbTraversal.

We went into KbTraversal and we used "nacpsi" instead of "psi" just before calling NounAct. Thus we restored the functionality of KbTraversal.

2. Sun.10.MAY.2009 -- RESTORING who-are-you FUNCTIONALITY

When we delve back into the who-are-you problem, we discover from the following .psi data that we have lost the ability of the AI to answer a who-are-you query.

207 : 55 13 0 0 0 5 67 55 to WHO
211 : 67 16 0 55 55 8 50 67 to ARE
215 : 50 11 0 67 67 7 67 50 to I
217 : 50 11 0 50 0 7 57 50 to I
220 : 57 15 0 50 50 8 50 57 to AM
222 : 50 36 0 57 57 7 0 50 to I
time: psi act num jux pre pos seq enx

207 : 55 13 0 0 72 5 67 55 to WHO
211 : 67 15 0 55 55 8 50 67 to ARE
215 : 50 58 0 67 55 7 67 56 to YOU
219 : 56 55 0 50 0 7 67 56 to YOU
223 : 67 15 0 56 56 8 56 67 to ARE
227 : 56 36 0 67 56 7 0 56 to YOU
time: psi act num jux pre pos seq enx

It turns out that one line of code in the block below was taking away the who-are-you functionality. By erroneously using "audpsi" as the source of the transfer-to- English "enx" value, we were nullifying the POV-based decisions from the immediately preceding code. When we abandoned "audpsi" as the source of "enx" and used "oldpsi" instead, the functionality of the who-are-you feature quasi-magically was restored.

\ The Robot Mind as a seed AI for Technological Singularity
\ approaches artificial consciousness in the following code:
\ pov @ 35 = IF fex @ psi ! THEN \ during internal (#) "pov";
pov @ 35 = IF fex @ oldpsi ! THEN \ 9may2009 during internal (#) "pov";
\ pov @ 42 = IF fin @ psi ! THEN \ external (*) "pov"
pov @ 42 = IF fin @ oldpsi ! THEN \ 9may2009 external (*) "pov"
\ psi @ enx ! \ Assume Psi number = En(glish) number. \ audpsi @ enx ! \ 9may2009 Assume audpsi number = En (glish) number.
oldpsi @ enx ! \ 10may2009 Assume oldpsi number = En (glish) number.

Below we see that the input of "you" is properly interpreted as a self-referential "I" in the AI Mind. Thus the AI is able to answer the who-are-you query with an "I AM" statement.

191 : 50 11 0 0 50 7 75 50 to I
196 : 75 35 0 0 50 8 72 75 to HELP
201 : 72 0 2 0 50 5 0 72 to KIDS
207 : 55 13 0 0 0 5 67 55 to WHO
211 : 67 13 0 55 55 8 50 67 to ARE
215 : 50 11 0 67 55 7 67 50 to I
217 : 50 11 0 50 0 7 57 50 to I
220 : 57 15 0 50 50 8 50 57 to AM
222 : 50 36 0 57 50 7 0 50 to I

We were afraid that we might have to do some deep troubleshooting of the assignment of "fin" and "fex" and "enx" tags. Luckily, a cursory inspection of the recent changes in the OldConcept code gave us an idea of what to try, and it worked.


The following .psi report after entering "i know book" and "books teach people" shows that MindForth has regained the ability to detect a singular noun stem that was lost in the 6may09A.F version that started to de-globalize the variables. It was probably a problem in AudRecog, and the thorough de-globalizing of AudRecog made it necessay also to de-globalize OldConcept and some other mind-modules.

205 : 56 35 0 0 0 7 61 56 to YOU
210 : 61 0 0 56 56 8 76 61 to KNOW
215 : 76 10 0 61 56 5 0 76 to BOOK
220 : 76 10 0 76 0 5 66 76 to BOOK
225 : 54 0 0 76 76 5 0 54 to WHAT
228 : 66 0 2 54 54 8 76 66 to IS
233 : 76 10 0 66 54 5 0 76 to BOOK
239 : 76 10 2 76 0 5 77 76 to BOOKS
245 : 77 11 0 76 76 8 37 77 to TEACH
252 : 37 13 0 77 76 5 0 37 to PEOPLE
259 : 37 13 0 37 0 5 70 37 to PEOPLE
264 : 70 14 0 37 37 8 1 70 to HAVE
266 : 1 15 0 70 37 1 71 1 to A
271 : 71 36 1 1 37 5 0 71 to FEAR
time: psi act num jux pre pos seq enx

Although de-globalizing was accompanied by substantial grief and worry, it should be quite easier to troubleshoot the code that has been successfully de-globalized, because it is easier to pin down the operation of local variables that play out their effects in their own mind-module.

A.T. Murray -- See also http://aimind- i.com
http://code.googl e.com/p/mindforth
http://agi- roadmap.org/Roadmap_Drafts

Comparison of NL Comprehension Systems

MindForth as a natural-language (NL) comprehension system

In the MindForth artificial general intelligence (AGI) system, natural- language (NL) generation and comprehension are a two-way street. Just as MindForth generates a thought in English by letting sp reading activation link concept to concept to concept in a linguistic superstructure sprawling over the conceptual mindgrid, likewise NL comprehension in MindForth consists in laying down linkages from concept to concept to concept, so that the idea being comprehended is recoverable or regenerable at some future time when spreading activation follows a meandering chain of thought to the comprehended idea, or proposition, or assertion. Being still a primitive AGI, MindForth can comprehend only primitive natural language. In comparison with other NL comprehension systems, MindForth most likely stands out as being based on its own project-specific theory of mind which relies not on any ontological knowledge- base (KB) but rather on a conceptual knowledge-base as the substrate for both generation and comprehension. Other systems may generate responses to KB queries without actually generating a conceptual thought, and may therefore be incapable of comprehension for lack of conceptual underpinnings. To assess the capability of an AGI system in NL comprehension, one should look for the change in state that occurs before and after the input of the NL input to be comprehended. In MindForth, the input is integrated not only with the knowledge-base as a raw assertion, but may also be integrated in a broader sense as MindForth expands its ability to think recursively and inferentially about the raw assertions which it incorporates into its knowledge base.

A.T. Murray
http://opencog.org/wiki/Comparison_of_NL_Compreh ension_Systems

AI Mind update

The AI4U Mind for MSIE has been updated with improvements to the ability of the robot AI Mind to carry on a conversation. The AI is free to be installed on any Web site just by copying the HTML file. Hopefully, it is part of an AI Landrush commencing now in 2009. For installation in a robot, you would probably need to port the free AI source code into your robot's programming language and you would need to flesh out the SensoryInput, EmotiOn and MotorOutput modules.

10 older entries...

Share this page