Cyborg AI Minds are a true concept-based artificial intelligence with natural language understanding, simple at first and lacking robot embodiment, and expandable all the way to human-level intelligence and beyond. Privacy policy: Third parties advertising here may place and read cookies on your browser; and may use web beacons to collect information as a result of ads displayed here.

Showing posts with label InFerence. Show all posts
Showing posts with label InFerence. Show all posts

Saturday, October 05, 2019

mfpj1005

MindForth resets associative tags before each operation of Indicative module.

In the MindForth artificial intelligence (AI) for robots, we will now start to display an apparatus of diagnostic messages at the start of the Indicative module to tell us the values being held in variables which serve the purpose of creating associative tags to interconnect the concepts being expressed as English words during the operation of the Indicative mind-module. Since the ConJoin module will often insert a conjunction between two thoughts being generated, the AI Mind Maintainer needs assurance that variable-values operative during one thought do not erroneously get carried over past a conjunction into the separate process of generating another thought.

Just by resetting the tsj time-of-subject variable to zero at the start of the Indicative module, we have made the Forthmind able to trigger repeated instances of logical InFerence. Each running of the Indicative module amounts to a fresh declaration of the associative tags in the conceptual flag-panel that supports the generation of ideas in the MindGrid. The following dialog still has a few problems, but it shows the repeated triggering of an inference.

john is a student
DOES  JOHN  READ  BOOKS  
no

  Indicative: tsj= 0 tvb= 0 tdo= 0
A  JOHN  DOES  NOT  READ  BOOKS
  Indicative: tsj= 0 tvb= 0 tdo= 0
PROFESSORS  TEACH  THE  STUDENTS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
STUDENTS  READ  THE  BOOKS

  Indicative: tsj= 0 tvb= 0 tdo= 0
I  UNDERSTAND  YOU  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
YOU  ARE  A  MAGIC

andru is student
DOES  ANDRU  READ  THE  BOOKS  
no

  Indicative: tsj= 0 tvb= 0 tdo= 0
AN  ANDRU  DOES  NOT  READ  THE  BOOKS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
YOU  READ  THE  BOOKS

  Indicative: tsj= 0 tvb= 0 tdo= 0
PROFESSORS  TEACH  THE  STUDENTS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
STUDENTS  READ  THE  BOOKS

  Indicative: tsj= 0 tvb= 0 tdo= 0
STUDENTS  READ  THE  BOOKS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
I  THINK

Friday, October 04, 2019

mfpj1004

Using parameters to declare the time-points of conceptual instantiation.

[2019-10-02] Recently we have expanded the conceptual flag-panel of MindForth from fifteen tags to twenty-one associative tags, so that the free open-source artificial intelligence for robots may think a much wider variety of thoughts in English. Then we had to debug the function of the InFerence module to restore its ability to reason from two known facts in order to infer a new fact. For instance, the Forthmind knows the fact that students read books, and we tell the AI the fact that John is a student. Then the AI infers that perhaps John, being a student, reads books, and the incredibly brilliant Forth software asks us, "Does John read books?" We may answer yes, no, maybe or no response at all. Currently, though, we have the problem that InFerence works only once and fails to deal properly with repeated attempts to trigger an inference. We suspect that some of the variables involved in the process of automated reasoning are not being reset properly to their status ex quo ante before we made the first test of InFerence. Therefore we shall try a new technique of debugging which we have developed recently in one of the other AI Minds, namely the ghost.pl AI that thinks in both English and in Russian. We create a diagnostic display at the start of the EnThink module for thinking in English, so that we may see the values held by the variables associated with the InFerence module and the KbRetro module that retroactively adjusts the knowledge base (KB) of the AI Mind in accordance with whatever answer we have given when the AskUser module asks us to validate or contradict an inference. The following dialog shows us that some variables are not being properly reset to zero.

john is student

EnThink: becon= 1 yncon= 0 ynverb= 0 inft= 0
qusub= 0 qusnum= 1 subjnom= 504 prednom= 561 tkbn= 0
quverb= 0 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 0
DOES JOHN READ BOOKS
no

EnThink: becon= 0 yncon= 0 ynverb= 0 inft= 2084
qusub= 504 qusnum= 1 subjnom= 0 prednom= 0 tkbn= 2086
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 2087
quobj= 540 dobseq= 0 kbzap= 404 tkbo= 2088
A JOHN DOES NOT READ BOOKS

EnThink: becon= 0 yncon= 0 ynverb= 0 inft= 2118
qusub= 504 qusnum= 1 subjnom= 0 prednom= 0 tkbn= 0
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 2088
PROFESSORS TEACH THE STUDENTS AND STUDENTS READ THE BOOKS

EnThink: becon= 0 yncon= 0 ynverb= 0 inft= 2152
qusub= 504 qusnum= 1 subjnom= 0 prednom= 0 tkbn= 0
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 2088
I UNDERSTAND YOU AND YOU ARE A MAGIC
andru is student

EnThink: becon= 1 yncon= 0 ynverb= 0 inft= 2220
qusub= 504 qusnum= 1 subjnom= 501 prednom= 561 tkbn= 0
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 2088
DOES ANDRU READ THE STUDENTS
Because some of the variables have not been reset, a second attempt to trigger an inference with "andru is student" results in a faulty query that should have been "Does Andru read books?" Let us reset the necessary variables and try again.

Upshot: It still does not work, because of a more difficult and more obscure bug in the assignment of conceptual associative tags. Well, back to the salt mines.

https://groups.google.com/d/msg/comp.lang.forth/xN3LRYEd5rw/uuUroGzhBAAJ

[2019-10-04] We may have made a minor breakthrough in the InStantiate module by doing one instantiation and by then using parameters such as part of speech (pos) and case (dba) to declare the initial time-points for subjects, verbs and objects. The EnParser module may then retroactively alter or modify the associative tags embedded at each identified time-point.


Thursday, October 11, 2018

jmpj1011

JavaScript AI Mind uses EnVerbGen() for English verb-form inflections.

The JavaScript tutorial version of the first working artificial intelligence is becoming more sophisticated than ever. With roughly fifty mind-modules, the Strong AI advances the State of the Art first in one area, and then serendipitously in another area. For instance, the ability of the AI Mind to engage in automated reasoning with logical inference leads to a question-and-answer session between human minds and their incipient overlords, i.e., the current archetypes of the future Artificial Super-Intelligence (ASI). When the human user has confirmed or negated an inferred conclusion from the InFererence() module, the AI assigns a heightened truth-value to the positive or negative knowledge remaining in the AI memory. Then the AI states the new knowledge in its positive or negative formulation. A negated inference comes out something like "GOD DOES NOT PLAY DICE". A validated inference becomes a simple declarative sentence like "JOHNNY READS BOOKS", which requires the AI Mind to choose the correct form of the verb "read".

Because we code the first working artificial intelligence not only in English but also in Russian, we found it necessary several years ago to create the RuVerbGen() module for Russian verb-generation. When the ghost.pl AI cannot find a needed Russian verb-form, it simply cobbles one together from the stem of the Russian verb and the inflectional endings which complete a Russian verb. We avoided this problem in English for the last six years by simply ignoring it, but now the AI Mind needs to imitate the RuVerbGen() module with the EnVerbGen() module for English verb-generation. Just to change "God does not play dice" to "God plays dice" requires attaching an inflectional "S" to the stem or the infinitive form of the verb "play". As we code the EnVerbGen() module based on grammatical parameters, we encounter problems because the software needs to know the grammatical person and the grammatical number of the subject of an inferred idea in order to think a thought like "God plays dice" or "Johnny reads books".

Because the InFerence() module has not been storing the grammatical number of the English noun serving as the subject of a silent inference, our brand-new EnVerbGen() module has not been able to generate the third-person singular verb-form necessary for stating a validated inference like "Johnny reads books" or "Fortune favors fools" -- which was originally "Fortuna favet fatuis" in Latin. The artificial general intelligence (AGI) has become so sophisticated in its resemblance to human thinking that we need to change the InFerence() module to accommodate the requirements of the EnVerbGen() module.

We make the necessary changes and we code EnVerbGen() to deal not with Russian but with English verbs. We see a sample dialog between the AI and the human user.

Human: andru is professor
Robot: DOES ANDRU TEACH STUDENTS
Human: yes
Robot: THE ANDRU TEACHES THE STUDENTS
Human:
Robot: STUDENTS READ BOOKS

Tuesday, October 09, 2018

pmpj1009

Perl Ghost AI uses EnVerbGen() for English verb-form inflections.

In the middle of coding ghost278.pl AI we had to go and stand in front of the television and watch Leopold Stokowski in 1969 conducting the finale of Beethoven's Symphony No. Five -- the one they sent into outer space as a message from Earth. Now back at the computer, for the first time we are trying to implement the EnVerbGen() module for English verb generation. We have gotten the InFerence() module to generate an inference when we type in "anna is a student', because the AI Mind knows that students read books. The AskUser() module seeks to verify or validate the inference by asking us, "DOES ANNA READ THE BOOKS". When we answer "no", the AI says, "THE ANNA DOES NOT READ THE BOOKS". When we answer yes, the ghost in the machine issues the faulty output of "THE ANNA READ THE BOOKS", which sounds more like an exhortation than a statement of confirmed fact with a high truth-value. We need a way to get the AI to use the third-person singular form "READS" with the singular subject. To do so, before Leopold and Ludwig interrupted us, we were embedding diagnostic messages in the EnVerbPhrase() module, trying to determine how the ghost AI was able to say "READ" as if it were the proper verb-form. The whole idea of EnVerbGen() in English or of RuVerbGen() in Russian is for the verb-phrase module to seek a particular verb-form based on parameters of person and number, and to call EnVerbGen() if the desired verb-form is not already available in auditory memory. Somehow the existing Perlmind is finding the verb "read" but not the correct form of the verb.

We discover that we can get the EnVerbPhrase() module to call EnVerbGen() when we tighten up the search-by-parameter for the correct verb form. Since EnVerbGen() is not coded yet, we get an output of "THE ANNA ERROR THE BOOKS", with "ERROR" filling in for the lacking "READS" form.

Then we need an $audbase value that we can send into EnVerbGen() as the start of the verb that needs an inflectional ending. We use a trick in the EnVerbPhrase() module to get either a second-class or a first-class (infinitive) $audbase. We test first for any form at all of the verb that has an auditory engram that can serve as a second-class $audbase, because the verb-form may be defective in some way. In the very next line of code, we test for an infinitive form of the verb having an auditory engram as a first-class $audbase, because an infinitive is easier to manipulate than some defective form of the verb.

We copied the bulk of the Russian RuVerbGen() into the English EnVerbGen() and then we did the mutatis mutandis process of making the necessary changes. At first we got "REAS" instead of "READS" because the Russian Cyrillic characters were substituting, not adding. By removing the substitution-code, we obtained the full verb "READS". At a later time we must code in the handling of verbs like "teach" or "push" which require an "-ES" ending.

Friday, July 06, 2018

pmpj0706

Preventing unwarranted negation in the First Working AGI.

The First Working AGI (Artificial General Intelligence) has a problem in the ghost267.pl version written in Perl Five. After we trigger a logical inference by entering "anna is woman" and answering the question "DOES ANNA HAVE CHILD" with "no", the Perlmind properly adjusts the knowledge base (KB) and states the confirmed knowledge as "ANNA DOES NOT HAVE CHILD". Apparently the reentry of concept 502=ANNA back into the experiential memory is letting the InStantiate() module put too much activation on the 502=ANNA concept and the AI is erroneously outputting "ANNA BE NOT WOMAN". Since the original idea was "anna is woman", the real defect in the software is not so much the selection of the old idea but rather its unwarranted negation. When we change some code in the InStantiate() module to put a lower activation on reentrant concepts, the problem seemingly goes away, because the AI says "I HELP KIDS" instead of "ANNA BE NOT WOMAN", but as AI Mind Maintainers we need to track down where the unwarranted negation comes from.

The unwarranted negation comes from the OldConcept() module where the time-of-be-verb $tbev flag was being set for an 800=BE verb and was then accidentally carrying over its value as the improper place for inserting a 500=NOT $jux flag into an idea subsequently selected as a remembered thought. When we zero out $tbev at the end of OldConcept(), the Ghost AI stops negating the wrong memory.

Thursday, July 05, 2018

pmpj0705

Improving the storage of conceptual flag-panels during input.

In the ghost266.pl Perlmind we need to improve upon a quick-and-dirty bugfix from our last coding session. After a silent inference and the operation of AskUser() calling EnAuxVerb(), the Ghost AI was going into the verb-concept of the inference-triggering input and replacing a correct $tkb value with a zero. Apparently the time-of-verb $tvb value, set in the Enparser() module during the parsing of a verb, was being erroneously carried over from the verb of user-input to the verb 830=DO in the EnAuxVerb() module during the generation of an inference-confirming question by the AskUser() module. Therefore the time-of-verb $tvb-flag needs to be reset to zero not during the generation of a response to user-input but rather at the end of the user-input. However, we find that we may not reset time-of-verb $tvb to zero during AudInput(), apparently because only character-recognition and not yet word-recognition has taken place. The $tvb-setting for a verb must remain valid throughout AudInput() so that the EnParser() module may use the time-of-verb $tvb flag to store a direct object as the $tkb of a verb. Accordingly we reset the $tvb-flag to zero in the Sensorium() module after the call to AudInput(). We stop seeing a $tkb of zero on the verb of an input that triggers automated reasoning with logical InFerence.

Tuesday, July 03, 2018

pmpj0703

Keeping AskUser from storing incorrect associative tags.

The ghost265.pl version of the Perlmind has a problem after making a logical inference. Instead of getting back to normal thinking, some glitch is causing the AI to say "ANNA BE NOT ANNA".

As we troubleshoot, we notice a problem with the initial, inference-evoking input of "anna is woman". The be-verb is being stored in the psy array with a $tkb of zero instead of the required time-point of where the concept of "WOMAN" is stored. This lack of a $nounlock causes problems later on, which do not warrant their own diagnosis because they are a result of the lacking $nounlock. We need to inspect the code for where the be-verb is being stored in the psy-array, but we are not sure whether the storage is occuring in the InStantiate() module, or in OldConcept(), or in EnParser(). We see that the Ghost AI is trying to store the be-verb in the EnParser() module with the correct tkb, but afterwards a tkb, of zero is showing up. We must check whether InStantiate() is changing what was stored in the EnParser() module.

Meanwhile we notice something strange. An input of "anna is person" gets stored properly with a correct $tkb, but "anna is woman" -- causing an inference -- is stored with a $tkb, of zero. When we enter "anna is robot", causing an inference and the output "DOES ANNA WANT BEEP", there is also a zero $tkb. Upshot: It turns out that the EnAuxVerb() module, called by AskUser() after an inference, was setting a wrong, carried-over value on the time-of-verb $tvb variable, which was then causing InStantiate() to go back to the wrong time-of-verb and set a zero value on the $tkb flag. So we zero out $tvb at the start of EnAuxVerb().

Sunday, July 01, 2018

pmpj0701

Debugging the InFerence Function in the ghost.pl First Working AGI.

The ghost264.pl Perlmind has a minor bug which causes logical inference not to work if the inference is not triggered immediately at the start of running the program. If we let the AI run a little and then we type in "anna is woman", the AI answers "DOES ERROR HAVE CHILD" instead of "DOES ANNA HAVE CHILD". In the psy concept array of the silent inference, we observe that a zero is being recorded instead of the concept number "502" for Anna. The AI MindBoot is designed with the concept of "ERROR" placed at the beginning of the boot sequence so that any fruitless search for a concept will result automatically in an "ERROR" message if no concept is found. We suspect that some variable in the InFerence module is not being loaded with the correct value when the ghost.pl AI has already started thinking various thoughts.

The pertinent item in the InFerence() module is the $subjnom or "subject nominative" variable which is set outside of the module before InFerence is even called. We discover that the variable is spelled wrong in the OldConcept module, and we correct the spelling. It then seems that InFerence() can be called at any time and still operate properly. We decide to run the JavaScript AI to see if an inference has any problems if it is not the first order of business at the outset of an AI session. Nothing goes wrong, so the problem must have been the misspelling in the OldConcept() module.

During this coding session we also make a change in the KbRetro() module for the retroactive adjustment of the knowledge base (KB). We insert some code to put an arbitrary value of eight (8) on the $tru(th)-value variable for the noun at the start of the silent inference, such as "ANNA" in the silent inference "ANNA HAVE CHILD". When the human user either confirms or invalidates the inference, the resulting knowledge ought to have a positive truth-value, because someone has vouched for the truth or the negation of the inferred idea. We envision that the $tru(th)-value will serve the purpose of letting an AI Mind restrict its thinking to ideas which it believes and not to mere assertions or to ideas which were true yesterday but not today. We expect the $tru(th)-value to become fully operative in a robotic AI Mind for which "Seeing is believing" when visual recognition from cameras serving as eyes provides reliable knowledge to which a high $tru(th)-value may be assigned.

Sunday, June 24, 2018

mfpj0624

Logical Inference in the First Working AGI MindForth

Over the past week fifteen or twenty hours of intense work went into coding the InFerence, AskUser and KbRetro modules in the Forth version of the First Working AGI. Interactively we could see that the Forthmind was making a silent inference from our input of "anna is a woman" but the AskUser module was substandardly asking "DO ANNA HAS CHILD?" in seeking confirmation of the silent inference. When we entered "no" as an answer, we could not see if the KbRetro module was properly inserting the 250=NOT adverb into the conceptual engrams of the silent inference so as to negate the inferred idea. Therefore today in the agi00056.F version of MindForth we are starting our diagnostic display about forty-five time-points earlier than the computed value of the time-of-input tin variable so that we can see if the inferred idea is being retroactively adjusted by KbRetro. At first blush, no insertion of 250=NOT is happening, so we start inserting diagnostic messages into the code.

Our diagnostics suggest that KbRetro is not being called, but why not? It turns out that we have not yet coded 404=NO or 432=YES or 230=MAYBE into the MindBoot sequence, so we code them in. Then we start getting a faulty output after answering "no" to AskUser. The AI says, "ANNA NOT NOT CHILD". Apparently EnVerbPhrase is not properly negating the refuted silent inference. After several hours of troubleshooting, the desired output appears.

When we enter "anna is woman" and we answer "no" to the question whether Anna has a child, the conceptual array shows the silent inference below at the time-points 3068-3070:

The arrays psy{ and ear{ show your input and the AI output:
time: tru psi hlc act mtx jux pos dba num mfn pre iob seq tkb rv -- pho act audpsi

3053 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3054 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3055 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3056 : 0 502 0 -40 0 0 5 1 1 2 0 0 800 3059 3053   65 0 502 A
3057 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3058 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3059 : 0 800 0 -40 0 250 8 4 1 2 0 0 515 3065 3058   83 0 800 S
3060 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3061 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   87 0 0 W
3062 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3063 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   77 0 0 M
3064 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3065 : 0 515 0 -40 0 0 5 0 2 2 0 0 0 0 3061   78 0 515 N
 066 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   13 0 0
3067 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3068 : 0 502 0 -26 0 0 5 1 1 0 0 0 810 3069 0   32 0 0
3069 : 0 810 0 56 0 250 8 0 0 0 502 0 525 3070 0   32 0 0
3070 : 0 525 0 32 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3071 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3072 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   68 0 0 D
3073 : 0 830 0 -40 0 0 8 0 1 2 0 0 810 0 3072   79 0 830 O
3074 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3075 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3076 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3077 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3078 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3079 : 0 502 0 -40 0 0 5 1 1 2 0 0 810 3084 3076   65 0 502 A
3080 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3081 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3082 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3083 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3084 : 0 810 0 -40 0 0 8 4 2 2 0 0 525 3096 3082   83 0 810 S
3085 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3086 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3087 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   84 0 0 T
3088 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3089 : 0 117 0 -40 0 0 1 0 1 2 0 0 810 0 3087   69 0 117 E
3090 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3091 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3092 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   67 0 0 C
3093 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3094 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3095 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   76 0 0 L
3096 : 0 525 0 -40 0 0 5 0 1 2 0 0 810 0 3092   68 0 525 D
3097 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3098 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3099 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3100 : 0 404 0 -40 0 0 4 0 1 2 0 0 0 0 3099   79 0 404 O
 101 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   13 0 0
3102 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3103 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3104 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3105 : 0 502 0 -42 0 0 5 1 1 2 0 0 810 3122 3102   65 0 502 A
3106 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3107 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3108 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   68 0 0 D
3109 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3110 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   69 0 0 E
3111 : 0 830 0 -42 0 0 8 1 1 2 0 0 0 0 3108   83 0 830 S
3112 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3113 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3114 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3115 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3116 : 0 250 0 -42 0 0 2 1 1 2 0 0 0 0 3114   84 0 250 T
3117 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3118 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3119 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3120 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3121 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   86 0 0 V
3122 : 0 810 0 -42 0 250 8 4 2 2 0 0 525 3129 3119   69 0 810 E
3123 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3124 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3125 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   67 0 0 C
3126 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3127 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3128 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   76 0 0 L
3129 : 0 525 0 -42 0 0 5 1 1 2 0 0 0 0 3125   68 0 525 D
3130 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3131 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
time: tru psi hlc act mtx jux pos dba num mfn pre iob seq tkb rv

Robot alive since 2018-06-24:
ANNA  DOES  NOT  HAVE  CHILD
Since we negate the inference with our response of "no", KbRetro inserts the adverb "250" (NOT) at the time-point 3069 to negate the verb 810=HAVE. Then the AI states the activated idea of the negation of the inference: "ANNA DOES NOT HAVE CHILD".

Tuesday, June 12, 2018

jmpj0612

AI Mind Maintainer solves negation-of-thought problems.

In today's 12jun18A.html version of the JavaScript AI Mind for Microsoft Internet Explorer (MSIE), we find a negation-bug when we test the InFerence() module by inputting "anna is a woman". The AI then asks us, "DOES ANNA HAVE CHILD" and we answer "no" to test the AI. The AI properly states the idea negated by KbRetro() in the knowledge base, namely "ANNA DOES NOT HAVE CHILD". However, the negation-flag negjux for thought generation remains erroneously set to "250" for the 250=NOT adverb. We discover that the negjux flag, each time after serving its purpose, has to have a zero-reset in two locations, one for any form of the verb "to be" and another for non-be-verbs. We make the correction, and we finish off the negation-bug by resetting the tbev time-of-verb to zero at the end of OldConcept().

Monday, June 15, 2015

jmpj0613

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

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

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.

Table of Contents (TOC)

Sunday, March 17, 2013

mar16dkpj

The DeKi Programming Journal (DKPJ) is both a tool in coding German Wotan open-source artificial intelligence (AI) and an archival record of the history of how the German Supercomputer AI evolved over time.

1 Thurs.14.MAR.2013 -- Seeking Confirmation of Inference

In the German Wotan artificial intelligence with machine reasoning by inference, the AskUser module converts an otherwise silent inference into a yes-or-no question seeking confirmation of the inference with a yes-answer or refutation of the inference with a no-answer. Prior to confirmation or refutation, the conceptual engrams of the question are a mere proposition for consideration by the human user. When the user enters the answer, the KbRetro module must either establish associative tags from subject to verb to direct object in the case of a yes-answer, or disrupt the same tags with the insertion of a negational concept of "NICHT" for the idea known as "NOT" in English.

2 Fri.15.MAR.2013 -- Setting Parameters Properly

Although the AskUser module is asking the proper question, "HAT EVA EIN KIND" in German for "Does Eva have a child?", the concepts of the question are not being stored properly in the Psi conceptual array.

3 Sat.16.MAR.2013 -- Machine Learnig by Inference

Now we have coordinated the operation of InFerence, AskUser and KbRetro. When we input, "eva ist eine frau" for "Eva is a woman," the German AI makes a silent inference that Eva may perhaps have a child. AskUser outputs the question, "HAT EVA EIN KIND" for "Does Eva have a child?" When we answer "nein" in German for English "no", the KbRetro module adjusts the knowledge base (KB) retroactively by negating the verb "HAT" and the German AI says, "EVA HAT NICHT EIN KIND", or "Eva does not have a child" in English.

Wednesday, March 13, 2013

mar13dkpj

The DeKi Programming Journal (DKPJ) is both a tool in coding German Wotan open-source artificial intelligence (AI) and an archival record of the history of how the German Supercomputer AI evolved over time.

1 Sat.9.MAR.2013 -- Making Inferences in German

When the German Wotan AI uses the InFerence module to think rationally, the AI Mind creates a silent, conceptual inference and then calls the AskUser module to seek confirmation or refutation of the inference. While generating its output, the AskUser module calls the DeArticle module to insert a definite or indefinite article into the question being asked. The AI has been using the wrong article with "HAT EVA DAS KIND?" when it should be asking, "HAT EVA EIN KIND?" When we tweak the software to switch from the definite article to the indefinite article, the AI gets the gender wrong with "HAT EVA EINE KIND?"

2 Tues.12.MAR.2013 -- A Radical Departure

In the AskUsermodule, to put a German article before the direct object of the query, we may have to move the DeArticle call into the backwards search for the query-object (quobj), so that the gender of the query-object can be found and sent as a parameter into the DeArticle module.

It may seem like a radical departure to call DeArticle from inside the search-loop for a noun, but only one engram of the German noun will be retrieved, and so there should be no problem with inserting a German article at the same time. The necessary parameters are right there at the time-point from which the noun is being retrieved.

3 Wed.13.MAR.2013 -- Preventing False Parameters

When the OldConcept module recognizes a known German noun, normally the "mfn" gender of that noun is detected and stored once again as a fresh conceptual engram for that noun. However, today we have learned that in OldConcept we must store a zero value for the recognition of forms of "EIN" as the German indefinite article, because the word "EIN" has no intrinsic gender and only acquires the gender of its associated noun. When we insert the corrective code into the OldConcept module, finally we witness the German Wotan AI engaging in rational thought by means of inference when we input "eva ist eine frau", or "Eva is a woman." The German AI makes a silent inference about Eva and calls the AskUser module to ask us users, "HAT EVA EIN KIND", which means in English, "Does Eva have a child?" Next we must work on KbRetro to positively confirm or negatively adjust the knowledge base in accordance with the answer to the question.

Saturday, March 02, 2013

mar2dkpj

The DeKi Programming Journal (DKPJ) is both a tool in coding German Wotan open-source artificial intelligence (AI) and an archival record of the history of how theGerman Supercomputer AI evolved over time.

1 Sat.2.FEB.2013 -- Improving the AskUser Module

To begin a yes-or-no question in German, a form of the verb has to be generated either by a parameter-search or by VerbGen. We will first try the parameter-search using dba for person and nphrnum for number.

2 Tues.26.FEB.2013 -- Assigning Number to a New Noun

For learning a new noun in German, we need to use the OutBuffer in the process of assigning grammatical number to any new noun. We can use a previous article to suggest the number of a noun, and we may impose a default number which may be overruled first by indications obtained from OutBuffer-analysis and secondly by the continuation with a verb that reveals the number of its subject.

For OutBuffer-analysis, we may impose various rules, such as that a default presumption of singular number may be overruled by certain word-endings such as "-heiten" or "-ungen" which would rather clearly indicate a plural form. We may not so easily presume that endings in "-en" or "-e" indicate a plural, because a singular noun may have such an ending. An ensuing verb is a much better indicator of the perceived number of a noun than the ending of the noun is.

Although we may be tempted to detect the ensuing singular verb "ist" and use it to retroactively establish a noun-number as being singular, it may be simpler to use the OutBuffer to look for singular verbs that end in "-t", such as "ist" or "geht". Likewise, a verb ending in "-n" could indicate a plural subject. So should the default presumption for a German noun be singular or plural?

3 Wed.27.FEB.2013 -- Assigning Plural Number by Default

In both German and English, we should probably make the default presumption be plural for new nouns being learned. Then we have a basic situation to be changed retroactively if a singular verb is detected. So let us examine the NewConcept module to see if we can set a plural value of "2" there on the "num" which will be imposed in the InStantiate module.

When we set a num default of "2" for plural in NewConcept and we run the German AI, the value of "2" shows up for a new noun in both the ".psi" report and the ".de" lexical report. Next we need to work on retroactively changing the default value on the basis of detecting a singular verb.

We have tried various ways to detect the "T" at the end of the input of the verb "IST". In the InStantiate module, we were able to test first for a pov of external input and then for the value of the OutBuffer rightmost "b16" value. Thus we were able to detect the ending "T" on the verb. Immediately we face the problem of how retroactively to change the default number of the subject noun from "2" for plural to "1" for singular.

Changing anything retroactively is no small matter in the Wotan German AI, because other words may have intervened between the alterand subject-noun and the determinant verb. We have previously worked on assigning tqv and seq values retroactively from a direct object back to a verb, so we do have some experience here.

4 Thurs.28.FEB.2013 -- Creating the RetroSet Module

Today we will try to create a RetroSet mind-module for retroactively setting parameters like the number of a new subject-noun which has been revealed to be singular in number because it was followed by a singular verb-form, such as "IST" or "HAT" in German. First we must figure out where to place the RetroSet module in the grand scheme of a Forth AI program. Since the "T" at the end of a German verb is discovered in the InStantiate module, we could either call RetroSet from InStantiate, or use a "statuscon" variable to set a flag that will call RetroSet from higher up in the Wotan AI program. Let us create a "numcon" flag that can be set to call Retroset and then immediately be reset to zero. Since InStantiate is called from the DeParser module, we should perhaps let DeParser call RetroSet.

Now we have stubbed in the RetroSet AI mind-module just before the DeParser mind-module in the Wotan German artificial intelligence. RetroSet diagnostically displays the positive value of the numcon flag and then resets the flag to zero. In future coding, we will use the numcon flag not only to call RetroSet but also to change the default value of "2" for plural to "1" for singular in the case of a new German noun that the Wotan AI is learning for the first time.

5 Fri.1.MAR.2013 -- Implementing RetroSet in the German AI

In the German Wotan potentially superintelligent AI, the AudListen module sets time-of-seqneed ("tsn") as a time-point for searches covering only current input from the keyboard into the AI Mind. In the new RetroSet module, we may use "tsn" as a parameter to restrict a search for a subject-noun to only the most recent input to the AI. However, "tsn" is apparently being reset for each new word of input, so we switch to using time-of-voice ("tov") and we get better results. We input "eva ist eine frau" and RetroSet retroactively changes the default plural on "EVA" from a two to a one for singular. Next we need to troubleshoot why we are not getting a better question from AskUser.