1.
Diagram of the OldConcept Mind-Module
/^^^^^^^^^\ A Recognized Word Activates An Idea /^^^^^^^^^\ / EYE \ _______ / EAR \ / \ CONCEPTS / New- \ / \ | _______ | | | | _______ ( Concept ) | C match! | | /old \!!!!|!!|!| | / Old- \ \_______/ | +A match! | | / image \---|----+ | ( Concept ) | | ++T match! | | \ fetch / | |c| | \_______/------|------|-----S recog! | | \_______/ | |a| | | \ | | | | | |t| | | \ | | C match! | | visual | |s| | } \ | | +A match! | | | e| | | | \ _V__ | ++T match! | | memory | a| | | | \/ \ | +++S busy | | | t| | | | / \ | U skip | | reactivation | | |f| __V____ (EnParser) | P skip | | | | |i| / \ \ / | | | channel | | |s| (SpreadAct) \____/ | C match! | | _______ | | |h| \_______/ | | +A match! | | /new \ | |_|_| / ________V__ | R stop | | / image \ | / \/ / \ | S skip | | \ store /---|-\ Psy /------( InStantiate ) | | | \_______/ | \___/ \___________/ | |
2. Purpose of the OldConcept Module
The purpose of the OldConcept module is to manage various housekeeping details involving the recognition of an already known word by the AI Mind. If these details are shunted off to other mind-modules, the OldConcept module could eventually be eliminated as obsolete or unnecessary.
3. Algorithm of the OldConcept Mind-Module
3.A. Operating by default if AudInput recognizes a word of input.
Although AudInput and AudRecog may detect a previously known word in the stream of input, sometimes further interpretation is necessay for the AI to decide upon the ambiguous part of speech of the recognized word.
3.B. Extracting quasi-neuronal associative tags and flags from the conceptual flag-panel of a word stored as a concept in the conceptual memory.
OldConcept searches backwards through the conceptual memory to find and hold onto various somewhat immutable features of a verbal concept, such as its part of speech, its gender, and which human language it belongs to.
3.C. Interpreting certain personal pronouns, such as "you" and "I" in English or "ты" and "я" in Russian, as referring to diametrically opposite entities, depending on whether the AI Mind is thinking internally or is engaged in the understanding of external input.
OldConcept uses the point-of-view $pov flag to discriminate between external input and internal thinking. During input from the outside world, if a human user speaks as "I" to the artificial intelligence (AI), the AI software internally activates the opposite concept of "you" in order to address the user as "you" and in order to think about the user as "you" and not as the ego-concept of "I". AI Mind maintainers (hire a staff of Perl coders!) may need to work further on certain aspects of the point-of-view situation, such as whether to interpret the external use of the pronoun "we" as referring to totally separate, external persons, or as referring to the combined community of the external user and the AI Mind itself. The context of the discussion between user and AI determines the scope and reference of pronouns like "we" and "us", so a mind-module like OldConcept may need further refinement to distinguish between totally external "we" and a "we" that includes both parties to the discussion.
4. Code of OldConcept() from ghost302.pl AI
source code in
Perl
sub OldConcept() { # http://ai.neocities.org/OldConcept.html for (my $i=$t; $i>$midway; $i--) { # 2016feb10: search backwards in time. my @k=split(',',$psy[$i]); # 2016mar15: inspect @psy knowledge nodes if ($k[1] == $oldpsi) { # 2017jun08: find most recent oldpsi engram if ($k[2] ne 0) { $hlc = $k[2] } # 2017jun08: k2 is still "hlc" if ($k[6] > 0) { $pos = $k[6] } # 2017jun08: pos = part of speech; if ($k[8] > 0) { $recnum = $k[8] } # 2017-10-01: rec(ognized) num(ber). if ($k[8] > 0) { # 2017-10-01: TEST; REMOVE } # 2017-10-01: TEST; REMOVE if ($k[9] > 0) { $mfn = $k[9] } # 2017jun08: m/f/n gender 1/2/3; } # 2016feb10: end of test for $oldpsi match in @psy array } # 2016mar13: End of (for loop) searching through @psy conceptual array. if ($hlc == 1) { # 201809-27: test for governing human-language-code if ($oldpsi == 800) { $tbev = ($t-1) } # 2017may29: for be-verb negation. if ($oldpsi == 800) { $becon = 1 } # 2018-06-26: if ($oldpsi == 250) { # 2017may29: 250=NOT for negation of a verb. if ($tbev > 0) { # 2017may29: if positive be-verb time; my @k=split(',',$psy[$tbev]); # 2017may29: examine @psy array; $k[5] = 250; # 2017jun08: set verb "jux" to 250=NOT for negation. $psy[$tbev]="$k[0],$k[1],$k[2],$k[3],$k[4],$k[5],$k[6]," . "$k[7],$k[8],$k[9],$k[10],$k[11],$k[12],$k[13],$k[14]"; # 2017-06-08 $tbev = 0; # 2017may29: reset for safety. } # 2017may29: end of test for a positive tbev; $prejux = 250; # 2016jun17: a flag for negation. } # 2017may29: end of test for negation of a verb with "NOT". if ($oldpsi == 404) { $kbzap = 404 } # 2018-06-28: 404=NO for KbRetro() if ($oldpsi == 432) { $kbzap = 432 } # 2018-06-28: 432=YES for KbRetro() $psi = $oldpsi; # 2016feb10: from MindForth. if ($pov == 2) { # 2016mar27: during a pov "dual" conversation... if ($oldpsi == 245) { $prepgen = 8 } # 2016mar30: if "Where?" call EnPrep() if ($oldpsi == 245) { $wherecon = 1 } # 2018-11-01: if 245=where. if ($oldpsi == 707) { $psi = 701; $rv = 0 } # 2016mar27: interpret "YOU" as "I"; if ($oldpsi == 701) { $psi = 707; $rv = 0 } # 2016mar27: interpret "I" as "YOU". if ($oldpsi == 731) { $psi=737; $num=2; $dba=1; $rv=0 } # 2016mar30: we --> you. if ($oldpsi == 800) { $becon = 1 } # 2018-06-26: flag for calling InFerence() if ($pos == 5) { # 2018-06-26: nouns only, not yet pronouns; if ($subjnom > 0) { # 2018-07-01: already subjnom? $prednom = $oldpsi; # 2018-06-26: for InFerence() } # 2018-06-26: end of test for pre-existing subjnom. if ($prednom == 0) { # 2018-06-26: no prednom yet? $subjnom = $oldpsi; # 2018-06-26: hold for InFerence() $subjnum = $num; # 2018-06-26: hold for AskUser() $qusnum = $num; # 2018-06-26: query-subject-number for AskUser() } # 2018-06-26: alternate between $subjnom and $prednom. } # 2018-06-26: end of test for a noun. if ($fyi >2) { # 2017-04-12: keep following line for Tutorial and Diagnostic Mode } # 2017-04-12: end of test for #3 Tutorial Mode or higher. } # 2016mar27: end of test for other person communicating with the AI. if ($moot == 0) { # 2017-09-22: if not suppression of a query... EnParser(); # 2017-09-13: In preparation to call InStantiate(). } # 2017-09-22: end of test for $moot suppressing associative tags } # 2016feb10: end of test for English human-language-code if ($hlc == 3) { # 2018-09-27: test for governing human-language-code $psi = $oldpsi; # 2016feb24: from MindForth. if ($pov == 2) { # 2016apr01: during a pov "dual" conversation... if ($oldpsi == 245) { $prepgen = 8 } # 2016apr01: if "Where?" call RuPrep() # 2017-09-24: Above line needs to test not for English but for Russian. if ($oldpsi == 1707) { $psi=1701; $num=1; $dba=1; $rv = 0 } #2016apr01: ТЫ --> Я if ($oldpsi == 1701) { $psi=1707; $num=1; $dba=1; $rv = 0 } #2016apr01: Я --> ТЫ if ($oldpsi == 1731) { $psi=1737; $num=2; $dba=1; $rv=0 } #2016apr01: МЫ --> ВЫ } # 2016mar27: end of test for other person communicating with the AI. RuParser(); # 2017-09-13: In preparation to call InStantiate(). } # 2016feb24: end of test for Russian human-language-code $audnew = 0; # 2016feb09: Reset for sake of $rv of next input word. $audpsi = 0; # 2017-03-15: From MindForth -- prevent carry-over. $audrec = 0; # 2018-09-16: prevent carry-over. $finpsi = 0; #2017-06-28: re-set for safety. $len = 0; # 2017-03-15: From MindForth -- prevent carry-over. $prc = 0; # 2018-09-16: prevent carry-over. $tbev = 0; # 2018-07-06 BUGFIX: prevent carry-over from be-verb to non-be-verb. } # 2017may29: OldConcept() returns to AudInput().
5.
Variables for the OldConcept AI Mind-Module
$audnew -- holds onset-tag while rest of word comes in.
$audpsi -- concept number of word in @ear auditory memory array
$audrec -- auditory recognition concept-number
$finpsi -- carry-over end-psi during 32-SPACE or 13-CR (carriage return).
$hlc -- human-language code; 1=en; 2=de; 3=ru. May eventually be subject to override by the $engov or $degov or $rugov flag. May eventually be subject to override by the $engov or $degov or $rugov flag, so that an AI thinking in one language may discuss a word in a different language without switching over to thinking in the different language.
$len -- length, for avoiding input non-words. The len variable increments with each additional character during AudInput, and is reset to zero at the end of InStantiate or OldConcept or NewConcept, so that the auditory engram recall vector rv may be set for the first character of a word when the word-length is a unitary one.
$midway -- a dynamically adjustable time-limit for searching backwards in the experiential memory of the AI. In early AI Minds, "midway" is set to zero so as to search the entire memory. As AI Minds mature and acquire tremendously long lifetime memories, "midway" may be dynamically adjusted to search bacwards actually to the mid-way mark. If an AI has the task of finding all possible recollections and knowledge about a topic where an initial search has yielded no results, "midway" may be adjusted for a secondary and more exhaustive search.
$moot -- – as in legally moot – is a flag to prevent the formation of associative tags during mental operations which are not demonstrably a part of cognition, such as the processing of an input query, the formation of a silent inference, or the creation of an output query.
$num -- number-flag for grammatical number. Verbs must agree in number with their subjects. Two or more singular subjects require a plural verb.
$oldpsi -- used in OldConcept to de-globalize "psi"
$pos -- (part of speech) with a numeric value (1=adj 2=adv 3=conj 4=interj 5=noun 6=prep 7=pron 8=verb) to be inserted into the conceptual flag-panel of a concept during the process of instantiation of a concept-node at a particular time-point. The part-of-speech parameter allows an AI Mind to restrict operations to one particular part of speech, such as verb, or to similar parts of speech, such as nouns and pronouns to be used as subjects or objects of a verb.
$prc -- Provisional ReCognition in the AudRecog() auditory recognition module.
$prednom -- predicate nominative for InFerence.
$qusnum -- query-subject number – for the AskUser module to ask a question seeking yes-or-no confirmation of a logical inference made by the AI Mind.
$subjnom -- subject nominative – is a concept identified in the OldConcept() recognition module as the subject of an input causing the AI to make an inference.
$subjnum -- (subject number) for agreement in grammatical number between a subject and a predicate nominative noun.
$tbev -- time of be-verb for use with negjux negation-flag. In the OldConcept module, tbev is set for any 800=BE verb and is used for inserting a jux of 250=NOT into the flag-panel of a negated be-verb. The tbev flag may be reset to zero in the Sensorium module after any input has been processed by the AudInput module.
6. Troubleshooting and Robotic Psychosurgery
6.1.a. Symptom: (Something goes wrong.)
6.1.b. Solution: (AI Mind
Maintainer devises solution.)
Roadmap to Artificial Intelligence
9.
AiTree of Mind-Modules for
Natural Language Understanding