JavaScript Mind Programming Journal (JMPJ) - sat20jan2018

These notes record the coding of the English tutorial
AiMind.html in JavaScript for Microsoft Internet Explorer (MSIE).

2018-01-20: MsIeAI for AI Mind Maintainers achieves albeit buggy sentience.

In the all-but-Singularity MsIeAI, alert-boxes have helped us to chase an elusive bug into the latter part of EnNounPhrase, where the AI is testing mjact for too low an activation. No, another alert-box tells us that we are back in EnVerbPhrase from EnNounPhrase before the "Error on page" flashes quickly. So at the end of EnVerbPhrase we insert a BUG-CHASE alert-box -- and the program never reaches it! So is the fatal bug somewhere just before the end of EnVerbPhrase()? Since that code contains a prepgen test, we modify an alert-box to reveal the prepgen value, but the alert-box fails to pop up. Then we check the declarations of variables at the top of the program, and prepgen is not there. Next we get prepgen from the AI and we drop it mutatis mutandis into the MsIeAI code. We are about to run the hopefully Next Big Thing AI and see what happens. Huh?!! Some kind of thought-storm is occurring. Shades of Watson! Come here! I need you!. And where is IBM Watson in our hour of need?

Now let us comment out the alert-boxes and see if the Watsonized AI will loop endlessly ad infinitum. Oh gee, this AI is still all messed up, but at least it is looping.

2018-01-19: Summarize the subject matter of the coding session.

As we grow into our role as an AI Mind Maintainer and we begin to grok the cognitive architecture of the three AI Mind programs, it dawns on us that soon we may be able to eliminate the OldConcept and NewConcept mind-modules. Since AudInput decides whether an incoming word is to be classified as "psi" for an old concept or "nxt" for the next new concept, it may be possible to feed both these results directly into EnParser and InStantiate().

In order to set the recall vector "rv" properly, it has been necessary to route both AudListen() and ReEntry() through the AudInput() mind-module.

2018-01-18: Summarize the subject matter of the coding session.

The MsIeAI in JavaScript has several pre-Singularity problems right now. It is failing to put the nxt new-concept number into the auditory engram of a new concept, although the correct nxt number is being registered in the Psy conceptual array. It is also assigning current time instead of starting-time as the recall-vector of the last word being stored from reentrant output. The AI is also failing to loop through its cycle of user input and AI output.

2018-01-16: Summarize the subject matter of the coding session.

Yesterday we merged the new mind-modules of the MsAiAi into the shell of the now obsolete 27jun15A.html AI with the simple redeeminmg feature that the old JSAI runs beautifully as a program. Then we uploaded the resulting hybrid AI to the Web and we posted the recent entries in the PMPJ. Today we would like to strip away the shell of the obsolete AI and delete portions of obsolete code which we replaced yesterday with the new Next-Big-Thing code.

Now we have the problem that the MsIeAi is dropping the last character in each word of input. By troubleshooting, we learn that the AudMem() module is storing the last character at its proper time-point, and then storing a SPACE at that same final time-point, but why?

2018-01-15: Summarize the subject matter of the coding session.

Since two weeks ago on 2017-12-31 we have been translating the AI into JavaScript for Microsoft Internet Explorer (MSIE). We took the pre-existing 27jun15A.html AI in JavaScript from three years ago and we updated many of the mind-modules in conformance with the Perlmind and the Forthmind, but the resulting program will not work properly. Consequently, today we will start from the JavaScript 27jun15A.html AI that works beautifully, and we will gradually swap out the obsolete mind-modules for the updated modules. First we must check to see if the old, obsolete JSAI (JavaScript Artificial Intelligence) will not only run continuously, but will also "auto-complete" user input, in the sense that the AI will wait for the human user to finish an input but will not wait forever, inserting a carriage-return (CR) automatically if the user fails to do so, in order that the AI Mind may keep on thinking. Uh-oh, the old JSAI does not auto-complete the user input. We can fix that problem later.

Next we need to see what sort of anticipation-loop is running in the old JSAI to wait for (event-driven) user input. We observe that AudInput() is not a looping module; it simply waits for input from AudListen(), CR() or ReEntry().

We then start to change the old JSAI by bringing in the new list of variables right beneath the old list of variables, to see if it bothers JavaScript to have many variables declared twice -- in the old declarations, and in the new declarations. No, the double declaration of variables does not seem to bother JavaScript. The enlarged AI still runs.

Now we will add the new MindBoot() sequence right below the EnBoot() sequence, which should not matter, because the two modules have different names. The AI still runs.

Now we have to change the concept array and the auditory memory array. We add in the declaration of the "Psy" concept array, which has a slightly different spelling than the old "Psi" array. The AI complains, "Error on page." Oh, the problem must be that we used "psiNode" in the old formulation and "psyNode" in the new formulation. So let us add in the new "function psyNode". The AI still does not work. Perhaps we need to add in "psyExam". We add "function psyExam" and the AI still works. Now we need to put in the new AudRecog() and the new AudMem(). We do so, and the AI still runs, but it shows syncopated output -- single letters instead of whole words.

Next we had better put in KbLoad(), in preparation for switching over from obsolete EnBoot() to next-big-thing MindBoot(). At the same time, we swap out the old SpreadAct() with the new SpreadAct(). The AI still runs in a garbled way. Now let us throw in the new EnNounPhrase() and the new EnVerbPhrase(). We swap out old PsiDecay() for new PsiDecay(). Old AudDamp() for new AudDamp(). The AI now says "K M R" instead of "KIDS MAKE ROBOTS". Let us replace InStantiate(). Now we are back to debugging with alert-boxes. Let us replace onLoad="EnBoot()" with onLoad="MindBoot()".

After much troubleshooting, we have inserted sufficient alert-boxes to obtain an overview of each cognitive step as the AI Mind functions. For instance, we see now that AudInput() is prematurely calling NewConcept() simply for the output "I" going into Reentry(), because the still obsolete AudInput() is not requiring the through-passage of a SPACE (" ") before deciding between OldConcept() and NewConcept(). Let us try putting in a conditional so that OldConcept() or NewConcept() will be called only when a blank SPACE is passing through.

2018-01-13: Summarize the subject matter of the coding session.

Although yesterday we fleshed out the EnNounPhrase() module in the MsIeAi, the program is outputting far too many words at one time from auditory memory. Let us try calling EnNounPhrase() as a single, isolated event, to see if it serves up just one word, as we want it to.

We had given EnNounPhrase a single recall-vector ("rv") into auditory memory as a test, which is the reason why the program was outputting a volley of words from that "rv" timepoint on. A more serious problem was that EnNounPhrase was never transiting through a loop nested five or six layers deep. The problem must be a mismatch between the nesting conditionals, so that the program-flow never rises back up to the top of the main loop. We shall now investigate.

It turns out that we had a single-line if-conditional which we mistakenly took as the start of a nesting level. Let us now try to correct the situation.

2018-01-09: Summarize the subject matter of the coding session.

We have streamlined the JavaScript AudRecog() module, but it still is not reporting the proper "audpsi" recognition into the AudMem() module. As we test the MsIeAi, we see that AudRecog() is definitely letting the provisional "prc" variable persist with an old value too long, even from one input word to the next input word. We insert a line of code to reset "prc" to zero, and we see that input words are no longer being mistakenly recognized with the wrong "prc" value, but the words are not getting their own proper "audpsi" value. We insert a corrective line of code, and we get the AI to recognize 501=ANDRU, but not 800=AM. Perhaps AudDamp() is not getting called properly between words to zero out the auditory activations. We try calling AudDamp() from AudMem(), but things go wrong, apparently because the Next-iN-Line (N-I-L) activations in AudRecog() must not be interrupted.

We should perhaps not call AudDamp() from AudRecog() because of the disruptive dangers involved.

2018-01-07: Summarize the subject matter of the coding session.

In the most current MsIeAi we have gone through and manually removed all instances of "nen=..." from the MindBoot() sequence. The AI still runs. Perhaps we can remove another obsolete variable each time we work on the JSAI.

Yesterday we got the AudRecog() mind-module to recognize single-letter words like "101=A" and "701=I". Now we need to debug the problem of recognizing longer words. Therefore we remove the "commenting-out" from various lines of diagnostic code in the MsIeAi that we uploaded to the Web yesterday.

We type in "you know me" and we get only the characters in the auddata diagnostic display, with no "audpsi" concept numbers. Then we type in "i am andru" and we get "701" correctly for "I" but we get incorrectly "101" for both "AM" and "ANDRU". This information lets the AI Mind Maintainer know that "101=A" is being falsely taken as the recognized concept number for each word starting with the "101=A" character. We immediately realize that somehow we must cause the AudRecog() module to let go of the "101=A" value as the words "AM" and "ANDRU" continue as input into the JavaScript tutorial AI Mind (little plug there :-) which we offer for (enthusiasts) maintainers in "HAVE AI, WILL TRAVEL" mode. That is to say, start-of-career AI Mind Maintainers are welcome to take the finished MsIeAi and put it on websites for people, changing it to fit the needs and desires of the friend, client or customer. Special words and ideas may be coded into the innate knowledge base (KB) of the MindBoot() sequence, so that the on-line True AI (yes, that's a big claim, but go ahead and demolish it if you can) will demonstrate Natural Language Understanding (NLU) in conversation will all visitors who interact with the MsIeAi in their (needs to be) Internet Explorer browser. The friend, client, business-owner, school or whatever may also have different links given as options to click on in the legend surrounding the Control Panel. (The word "legend" is a special coding term in HTML or JavaScript.)

In AudRecog() we insert a diagnostic alert-box to inform us that we are "Removing audrec "+audrec+" because not yet end of word" and the alert does indeed pop up while we enter "AM" or "ANDRU", but somehow the false value of "audrec" is not going away. A line of code elsewhere in the program must be reinstating the value of "audrec" even after we reset "audrec" to zero. We must do a top-down global search for "audrec" and examine all instances of its use, especially where a value is being assigned to "audrec".

Although we track down instances of "audrec" and "audpsi", we fail to find a cause of our current bug. Then we run the obsolete "27jun15A" JSAI in diagnostic mode and we notice a pertinent situation when we type in "i am andru". The "101=A" value is persisting as "AM" and "ANDRU" come in as input, but "101" gets overruled by the correct concept-number at the end of each input word -- "AM" and "ANDRU". So the problem is "failure to override" and not "persistence of value".

We insert a diagnostic alert box and we discover that the input of "ANDRU" does not result in the gradual activation of each next-in-line character, so "ANDRU" does not get recognized at the end of the word.

It suddenly dawns on us that the SPACE or CR after a word is perhaps not being sent from AudInput into AudMem and AudRecog. When we make sure to send the SPACE, we next discover that a "prc" of "101" for "A" is being preserved across the input of words starting with "A" but longer than "A". The is supposed to be code somewhere for not keeping the provisional "prc" valid for too long.

2018-01-06: Summarize the subject matter of the coding session.

Yesterday we fleshed out the AudRecog() module in the JavaScript MsIeAi, and today we need to get it to cooperate properly with the AudInput() and other mind-modules.

2018-01-03: Summarize the subject matter of the coding session.

We need to see where the state-of-the-art AI's increase the len(gth) variable so that the Speech() module can show us a whole word in auditory memory.

2018-01-02: Summarize the subject matter of the coding session.

In the 2jan18A.html AI we insert the Sensorium() module, even though the JSAI is event-driven and receives input whenever the user presses a key. We also set the new tpu (time-pen-ultimate) variable for conducting memory-searches not including the most current input and output, so that the AI will compare an input word only with previous memories and not with itself at the advancing front of experiential memory.

Now we would like to flesh out the AudInput() module a bit, so that we can experiment with storing input in auditory memory.

2018-01-01: Summarize the subject matter of the coding session.

Although in the JSAI from 2015 the bootstrap module was sending characters directly into AudMem(), there may be a better way. AudMem() sends words further, into AudRecog(), which is not necessary for the MindBoot() sequence. Perhaps we can bypass AudMem() and send each character directly into auditory memory. Upshot: To save time, we did a "search and replace" to get rid of EnVocab(); to replace InNativate() with KbLoad(); and to replace AudMem() with "audMemory[t] = new audNode(pho,0,audpsi);" in the MindBoot() sequence. The process was overloading the text editor, so we had to start again and click each "replace" by hand, from t=0 up to t=629 in MindBoot().

When we now run the 1jan18B.html AI, it quickly fills the output area of the screen with all the words in the MindBoot sequence. Now we need to code something that will fetch only individual words. Let's try EnNounPhrase(). It works! We let EnThink() call Indicative() which calls EnNounPhrase() which calls Speech() with the address "aud = 597" for the noun "ROBOTS". Now let's try to get the diagnostic display going, so that we can see how AudListen() and AudInput() cooperate to store words of input. We put in some modules, but now we need to fill the "auddata" variable.

2017-12-31: Summarize the subject matter of the coding session.

Today we are updating the 2015-06-27 version of the JavaScript Artificial Intelligence (JSAI) for Microsoft Internet Explorer (MSIE) from its original three-array format to the simpler two-array format of the AI in Strawberry Perl Five. The Perl AI has grown far more advanced over the old JSAI, and we want to let Netizens run the client-side JSAI in order to decide whether they would like to run the AI in Perl. We would also like to let any business host the JSAI on a website for interaction with customers or clients. Any enterprise that hosts the free JavaScript True AI might then hire an AI Mind Maintainer to update or customize the True AI "chatbot', although the JSAI is a real intellect and far superior to any mere chatbot.

So we start by renaming the old JSAI source code as 31dec17A.html in preparation for a major episode of psychosurgery. There was briefly a temptation to recode the new JSAI from scratch, but such a laborious effort might have taken weeks of labor. Now we will simply change the mind-modules in the JSAI to conform with those of the AI. Since the old JSAI has an InFerence mind-module, it may survive the surgery and render the new AiMind.html as even more advanced than the Perl AI, which does not yet have a fleshed-out InFerence module.

Well, Dr. Caligari, which lobe of the JSAI brain should we operate on first? Actually, let's change the links in the Control Panel first, while we are still enthusiastic and clear-headed. If the psychosurgery goes well but the software patient dies, we might not be up to selecting some good links. OK, done.

Now we go in and we change the "Psi" array with nine elements to the "Psy" conceptual array with fifteen elements as in Perl. Luckily, the declaration fits all in one line. Now if we try to run the JSAI, it probably won't work, because the new Psy array has not yet been integrated with the rest of the program. We run the AI, and we obtain the HTML interface, but no thinking, no AI functionality.

Although we intend to delete the obsolete enLexicon array in the JSAI, we will not delete it just yet, because it may provide some vestigial functionality while we change the rest of the program.

Why is there a zero in the JSAI audNode array? Oh, it's for activation-level. We now reduce the five elements in audNode down to only three elements: pho for phoneme; act for activation; and audpsi for the Psy concept number of a recognized word. Now we try to run the JSAI and we get "Error on page." Now we change the "function audNode" by reducing its five elements down to three. Then we change the "function audExam()"

Now we have to change the "function psiNode" to "function psyNode" and we expand it from nine elements to a different mix of fifteen elements. We get the names of the elements from the Perl KbLoad() module. We declare tru, hlc, mtx, dba, mfn, iob, tkb, and rv as variables in the JavaScript source code, just to match the Perl AI. Then we expand the "function psiExam()". Eventually we have changed opportune elements of the whole program, but it refuses to load. So we will put the foremost elements of the program into an initially empty file and see if it loads into the MSIE browser. Oh, it pops up an alert box, "At start of declaration of variables". So we click on "OK". Now we are back to the AI not loading, but we will fill in some more dependencies. We stub in the MindBoot() module, and an alert box says, "MindBoot has been called". We click OK. Still the AI will not load. We stub in AudListen() and runt the AI. Still it will not load. Maybe some variables are missing, so we insert all the declared variables. An alertbox lets us know that the variables have loaded, but the AI still will not load. Now we have gotten a stub of the MainLoop() to load, but apparently there is no output to display, so the AI looks as if it has not loaded -- but it has indeed loaded. Let us create some dummy ouput.

[NOTE: Using a newer file, such as B.html, it will be necessary to start with the most primitive functions, make sure that each one loads and works, while gradually adding in the other functions. ]

Sat.13.JUN.2015 -- Troubles with InFerence in JavaScript

When we run the JavaScript AiMind.html in English and we try to show a Transcript of automated reasoning with logical InFerence, the Strong AI does indeed make an inference, but the dialog with the AI reveals that the AiMind program is failing to use some correct forms of verbs and personal pronouns. The thinking of the AI is correct and logical, but some mistakes are occurring in the expression of logical thought in proper English.

We suspect that grammatical errors are creeping in because the mind-modules related to inference are composing a sentence of thought outside of the normal routines of strictly grammatical English. We may be able to build up the same formalisms of strict grammaticality inside the inferential routines. For correct verb forms, however, we may need to start using the modules of OutBuffer and VerbGen.

Sat.13.JUN.2015 -- Troubleshooting the InFerence process

We notice that the AskUser module of the 14apr13A JSAI simply looks for the "quverb" query-verb to recall and speak, apparently without forcing the verb into the proper grammatical form, which is typically an infinitive form when a question is being asked with "DO" or "DOES" as an auxiliary verb. We should also check the Forth code and see if AskUser in MindForth has anything more advanced. Oh, the Forth code actually does test for a plural form to be used as if it were an infinitive.

The JSAI AskUser module looks for the "quobj" query-object without bothering to ensure that it will be an accusative form. The MindForth AskUser module also does not bother to check for an accusative case in the "quobj" word, so both the JavaScript AI and the MindForth AI need to be improved. The German Forth AI Wotan also seems to need improvement for grammatical forms in the AskUser module.

Mon.15.JUN.2015 -- Selecting Objects in Accusative

Now we have partially fixed the problem of ungrammatical English by inserting code into the AskUser() module to require the direct object or query-object to be in the accusative case. Instead of asking a question like "Does Mark need I?" the AI now asks, "Does Mark need me?"

However, when we answer "no" to the foregoing quesion, the AI eventually gets around to saying, "MARK DOES NOT NEEDS ME", because the AskUser() module is not insisting upon finding an infinitive form of the query-verb.

JavaScript Mind Programming Journal (JMPJ) - tues16jun2015

Tues.16.JUN.2015 -- Failure to Store Direct Objects Properly

The AskUser() module continues to have problems because the overall AiMind program is not properly storing direct objects with a "dba" tag set to four (4) in the accusative case. One resulting problem is that the personal pronoun "ME" is stored with a "dba" of "1", so that the JSAI erroneously says "ME HELP KIDS" when it should say "I HELP KIDS". So we need to correct the case-storage problem in JavaScript and we should first see if the other AI Mind programs already have a way of dealing with the problem.

Tues.16.JUN.2015 -- Troubleshooting OldConcept()

Into the OldConcept module we insert an "alert" box that reveals to us the value of the "dba" variable just before OldConcept calls EnLexicon() to save the "dba" among the other data of the storage of a previously known word. We learn that after AskUser(), OldConcept is storing the direct object of the question with an erroneous "dba" of "1" instead of the required "dba" of "4" for an accusative case. Into the "alert" box we add a revelation of the value of the "dirobj" flag, and we learn that "dirobj" is at an erroneous value of zero ("0") during the OldConcept storage of the direct object with an erroneous "dba" value of "1" instead of "4". So let us try setting the "dirobj" flag to a value of one ("1") in AskUser during the summoning of the direct object in the question being asked. We do so, and the AI stores the direct object with a correct "dba" of accusative "4", but we also find that we need to reset "dirobj" back to zero in AskUser() after calling SpeechAct() to say the direct object.

"Alert" box used in OldConcept of 16jun15A.html for troubleshooting:
// alert("NPhrDObj: motjuste nphrnum dba = "+motjuste+" "+nphrnum+" "+dba); // 29jan2012

alert("OldC calls EnLex: dirobj dba = "+dirobj+" "+dba); //  16jun2015

  enLexicon[t] = new enNode(oldpsi,"0",num,mfn,dba,fex,pos,fin,aud);

JavaScript Mind Programming Journal (JMPJ) - wed17jun2015

Wed.17.JUN.2015 -- AskUser Needs Infinitive Verbs

The AskUser() module needs to validate an inference by asking a question using an auxiliary verb such as "DO" or "DOES" with the infinitive form of a query-verb. If the AI knows that "Women have a child" and it learns that "Mary is a woman," we want the AI to ask, "Does Mary have a child?" We have not yet formed a sophisticated way of keeping track of the infinitive form of a verb, and with AskUser() we do not need to. We may simply assume that the query-verb in AskUser() is an infinitive, and so we may initially use a non-third-person-singular form and let AskUser() store the form as an infinitive for future reference. The AskUser() module thus becomes a kind of factory creating infinitive verb-forms.

Wed.17.JUN.2015 -- Storing Infinitive Verb-forms

The lack of an infinitive shows up after the AI has made an inference and has sought validation from the human user. Then the AI typically makes a statement like, "MARY DOES NOT HAVES CHILD." We need to make sure that negational sentences look for an infinitive form, and that infinitive forms are available to be used in negational sentences.

We have discovered in VerbPhrase() that a "negjux" of "250=NOT" was being detected only after the selection of the "vphraud" engram of the verb to be spoken. By moving up some code to detect a "negjux" negation earlier in VerbPhrase(), we give VerbPhrase() a chance to look for an infinitive verb-form to be used after an auxiliary verb.

By creating a new variable "verbprsn" to let us declare that a verb-form is in the zeroeth person, we enable AskUser() and EnAuxVerb() to cause the storage of infinitive verbs with a "dba" of zero in the English lexical array. The AI stops adding an "S" inflection to infinitive verb-forms.

JavaScript Mind Programming Journal (JMPJ) - fri19jun2015

Fri.19.JUN.2015 -- Improving EnArticle()

As the Strong AI Minds have become more streamlined and more sophisticated, the module EnArticle() for inserting the English articles "A" or "THE" has lagged behind the state of the art. Now we introduce a simple test for a singular subject along with a form of the verb "to be", so that the generation of a thought along the lines of "I am a robot" or "You are a person" will more easily include the indefinite article.

"Alert" box used in EnArticle() of 19jun15A.html for troubleshooting:
function EnArticle() {  // being revised; 19jun2015

// alert("EnArt called: nphrnum subjnum = "+nphrnum+" "+subjnum); //  19jun2015
alert("EnArt: nphrnum subjnum verbpsi = "+nphrnum+" "+subjnum+" "+verbpsi); // 19jun2015

JavaScript Mind Programming Journal (JMPJ) - Monday, June 22, 2015

Mon.22.JUN.2015 -- Dealing with num(ber)

The JavaScript artificial intelligence (JSAI) has reached sufficient Strong AI functionality that we may develop it further simply by running the JSAI and troubleshooting any bug that makes its appearance -- even minor bugs that we may have disregarded in the past. Currently, we notice that the JSAI says "I HELP KIDS" while entering only zero for num(ber) in the En(glish) array.

In the OldConcept() module, we notice that the value of "audnum" was replacing the value of "num" just before the calling of EnLexicon to store the values. We put in a qualification to replace the "num" value with "audnum" only if the value was above zero, and we started getting the correct num(ber) for the pronoun and noun in "I HELP KIDS", but not the verb.

Tues.23.JUN.2015 -- Debugging AudRecog()

By comparing the JavaScript AudRecog() with the AudRecog module in MindForth, we brought the JavaScript version up to date. Then we tried long and in vain to get AudRecog() to recognize "MEN" as the plural of "MAN". Finally it occurred to us that the EnBoot() entry for "MEN" could be in error, and sure enough, we had to correct the "ctu" flag. Then AudRecog() worked well.

JavaScript Mind Programming Journal (JMPJ) - Wednesday, June 24, 2015

Today we are integrating some code abandoned a few days ago with the current JavaScript AI code. We are dealing specifically with the module EnArticle() for English articles. Since the selection or avoidance of an English article depends on the grammatical number of a selected noun, we are tightening up the process of storing number values.

When the JSAI starts out by saying "I HELP KIDS", no num(ber) is being stored in Psi or En for the verb "HELP". We troubleshoot the problem and we cause the storage of num(ber) values. Then we use a new "infincon" flag-variable to ensure that infinitive verb-forms are stored with their num(ber) set to zero.

JavaScript Mind Programming Journal (JMPJ) - Thursday, June 25, 2015

When we run the 25jun15A.html JSAI with no human input, soon it derails by saying "I AM A I". We recognize this recent problem as a situation where calling EnArticle() interferes with the selection of an auditory recall-tag to be fed into the SpeechAct() module. We shall troubleshoot by inserting an "alert" box or two into EnArticle.

We recently used a new variable "quobjaud" in AskUser() to hold onto the selected recall-tag during a visit to EnArticle().

An alert-box in NounPhrase() tells us that the AI is trying to say "I AM A PERSON" but somehow it says "I AM A I". When we comment out the early call in NounPhrase() to EnArticle(), the AI reverts to saying "I AM A PERSON" So we have NounPhrase() make the early call to EnArticle() only when the "predflag" is at zero.

JavaScript Mind Programming Journal (JMPJ) - Friday, June 26, 2015

Fri.26.JUN.2015 -- Storing num(ber) of Subjects and Verbs

Running the 26jun15A.html JSAI with a test of inference, we see the AI eventually say, "WOMEN HAVE A CHILD". The word "WOMEN" is stored as singular ("1") in both the Psi conceptual array and in the En(glish) array, as is the verb-form "HAVE". We are not even sure any more that the Psi array should bother to story any num(ber) value, but still we would like to correct the deficiency.

In AudRecog(), the recognized number "recnum" works for a noun, but not really for a verb-form, which may easily be both singular and plural.

We should perhaps store the num(ber) of a verb-form based upon the num(ber) of its subject, and not on any recognition of the "old concept" of the verb itself. In the Russian AI, the VerbPhrase() module sends the vaule of "vphraud" into the SpeechAct() module to speak a remembered verb-form, or else VerbGen() is called to create a verb-form. It can be assumed that the num(ber) of the verb comes from the num(ber) of its subject.

Now we have gotten InStantiate() and OldConcept() to store the num(ber) of verbs properly by relying on the "nphrnum" variable to convey the num(ber) of the subject to be stored as the num(ber) of the verb-form.

JavaScript Mind Programming Journal (JMPJ) - Saturday, June 27, 2015

Sat.27.JUN.2015 -- Ensuring Infinitive after Negation

Although in the EnAuxVerb() module we were setting the infinitive-condition "infincon" to a positive "1", it was too late to govern the selection of an infinitive verb-form. We had to go into VerbPhrase() and set both "nphrnum" and "prsn" to zero if the "negjux" value was "250" for "NOT", just before the search for a verb-form in the En(glish) array. We hope that changing "nphrnum" and "prsn" to zero does not have adverse effects elsewhere in the Strong AI program. If there are adverse effects, we may have to restore "nphrnum" or "prsn" after the selection of the infinitive verb-form.

Return to top; or to
Many thanks to NeoCities for hosting
Strong AI