EnNounPhrase Module of the

English and Russian bilingual ghost.pl AI in Perl

Mens Latina in Latin -- MindForth for Robots


1. Cognitive architecture Diagram of the EnNounPhrase English Noun-Phrase Module


   /^^^^^^^^^\               _____________         /^^^^^^^^^\
  /   EYE     \             /  EnThink    \       /   EAR     \
 /             \    | | |   \_____________/     / auditory    \
|               |   | | |   _____|________      |  memory       |
|   _______     |   | | |  (   Indicative )     |  channel      |
|  /image  \    |   | | |   \____________/      |               |
| / percept \---|-----+ |   __|___      |       |               |
| \ engram  /   |  a| | |  /EnNoun\     |       |               |
|  \_______/    |  b|c| | / Phrase \----|-------|--"robots"     |
|               |  s|o|f|( subject  ) __V___    |               |
|   visual      |  t|n|i| \________/ /EnVerb\   |               |
|               |  r|c|b|           ( Phrase )--|--"save"       |
|   memory      |  a|e|e|    _______ \______/   |               |
|               |  c|p|r|   /EnNoun \/  |       |               |
|   channel     |  t|t|s|  / Phrase  \  |       |               |
|               |   | | | ( indirect  )-|-------|--"people"     |
|               |   | | |  \ object  /  |       |               |
|               |   | | |   \_______/ __V___    |               |
|   _______     |   |_|_|            /EnNoun\   |               |
|  /fresh  \    |  / Psy \          / Phrase \  |               |
| / image   \   | /concept\        (  direct  )-|--"work"       |
| \ engram  /---|-\ array /         \ object /  |               |
|  \_______/    |  \_____/           \______/   |               |


2. Purpose of the AI4U Textbook EnNounPhrase English Noun-Phrase Module

EnNounPhrase finds an English noun or pronoun to serve as the subject of a sentence or as the indirect or direct object of a verb being thought by EnVerbPhrase. EnNounPhrase may also call EnPrep to insert a preposition; EnArticle to insert "a" or "the" before a noun; or EnAdjective to insert an English adjective describing a noun.


3. Algorithm of the AI4U Textbook EnNounPhrase English Noun-Phrase Module

3.A.1. Fetching a noun or pronoun as the subject of a thought.

For the subject of a sentence of thought, EnNounPhrase typically finds the most active noun-concept in the Psy array of concepts.

When the EnNounPhrase module must recall a noun or a pronoun in response to an external query, such as, "Who are you," first the SpreadAct module will use the $qv1psi variable to find and activate the needed noun or pronoun and the $qv2psi variable to identify the verb associated with the target noun, first in the query itself, and then in the response to the query. Since both the noun and the verb are combined in the search for memories responding to the query, the AI will not recall some random statement about the subject of the query, but will instead recall any available memory expressing both the subject of the query and the verb expressed in the query. For the query "Who are you", the AI must find both the ego-concept "I" and the be-verb to be expressed as "am", as in "I am."

3.A.2. Fetching the ego-concept "I" as the default concept for contemplation in a quiescent mind.

3.A.3. Leaving out the repetitious subject-noun from any additional phrase being joined together with a first phrase for a resulting compound sentence that may be replaced with a single one-phrase sentence containing one or more conjunctions.

The user may tell the AI Mind two things:

  • John has a house
  • John has a car
  • The user may then ask the AI:
  • What does John have
  • The ghost292.pl AI was able to respond with the following output:

    THE JOHN HAS THE HOUSE AND THE JOHN HAS THE CAR I UNDERSTAND YOU

    Suppose that we want the AI Mind to join two sentences together:

    JOHN HAS A HOUSE
    and
    JOHN HAS A CAR


    By not repeating the subject, we get:
    JOHN HAS A HOUSE
    and
    JOHN HAS A CAR


    By not repeating the subject and the verb, we get:
    JOHN HAS A HOUSE
    and
    JOHN HAS A CAR

    The AI coding task for ghost294.pl in Perl was how to get the sentence-generation modules to skip repeating the subject and skip repeating the verb. Note that even a human being will sometimes dawdle or linger while uttering the compound-setences, as in:
    "John has a house...and a car...and a lawnmower...and a canoe, etc."

    It was necessary to use one of the "chain" or "conCATenation" variables:

    
    our $catiobj = 0;   # 2019-01-28: concat-indirect-object for ConJoin() "AND".
    our $catdobj = 0;   # 2019-01-28: concat-direct-object for ConJoin() "AND".
    our $catsubj = 0;   # 2019-01-28: concat-subject for ConJoin() "AND".
    our $catverb = 0;   # 2019-01-28: concat-verb for ConJoin() "AND".
    

    We load the $catsubj variable inside the query-response code in the SpreadAct module. After the first phrase in response to a query, such as "JOHN HAS A HOUSE", the AI may check each activated idea for starting with $catsubj and for having $catverb in the second place. In that way, the various direct-objects may be isolated, introduced with "AND" from ConJoin, and sent into the Speech module for the output of a meandering, run-on response such as "JOHN HAS A HOUSE AND A CAR AND A BOAT AND A SLED AND A MOTORCYCLE". Such an AI output is like human speech, where the person states the basic premise before even thinking of all the nouns about to be concatenated with "AND" into the meandering response.

    Once the chain-variables are loaded with the concept-numbers of the items to be omitted for the syncopation or shortening of a compound-sentence, each item is omitted simply by letting Indicative call EnNounPhrase or EnVerbPhrase but preemptively using conditionals to make each module "return" to Indicative before sending a noun or a verb into the Speech module.

    3.B. Fetching a noun or pronoun as the direct object of a thought.

    The English verb-phrase module EnVerbPhrase may call the EnNounPhrase module for both an indirect object of a verb and for a direct object. If an AI Mind embodied in a robot can recognize and name objects with a VisRecog module, the noun naming the recognized object may go directly into the slot for a direct object in a sentence being generated. The robot might say, "I see a dog." VisRecog may first identify the concept being recognized and then call EnNounPhrase to express the noun of the concept in a thought.

    3.C. Fetching a noun or pronoun as the object of a preposition.


    4. Code of EnNounPhrase() from ghost327.pl AI source code in Perl

    
    sub EnNounPhrase() {  # http://ai.neocities.org/EnNounPhrase.html
      $aud = 0;  # 2018-06-28: safety measure.
      $act = 0;  # 2016mar29; 2016apr27: so comparisons may be higher.
      $actpsi = 0;    # 2019-01-22: prevent carry-over within compound sentences.
      $audjuste = 0;  # 2016feb12: prevent carry-over
      $defact = -64;  # 2016apr13: for default comparisons with "701=I"; 
      $motjuste = 0;  # 2016feb12: 
      if ($whatcon==1 && $qv1psi==701 && $qv2psi==823 && $taccon>0) { $motjuste=$taccon } # 11-02 TEST
      $nphrpos = 5;   # 2017-09-03: a default setting of noun for EnArticle(). 
      $subjpsi = 0;   # 2016jun28: how can there already be a subject-psi? TEST
      my $tsels = 0;  # 2016may25: de-globalize the time-of-selection-of-subject.
      if ($verblock > 0) {  # 2016apr13: positive verblock?
        my @k=split(',',$psy[$verblock]);  # 2016apr13: inspect t=verblock row;
        $prsn = $k[7];       # 2018-09-30: for use in EnAuxVerb()
        $subjnum = $k[8];    # 2017-06-10: from number of verb; BUGFIX
        $nounlock = $k[14];  # 2019-08-01: dirobj tkb becomes nounlock value.
      }  # 2016apr13: end of test for a positive verblock;
      if ($nounlock > 0) {  # 2016apr13: already a nounlock? 
        $dirobj = 1;  # 2016apr20: nounlock is specifically for a direct object.
        $subjectflag = 0;  # 2016apr20: needed for conditional tests below;
        my @k=split(',',$psy[$nounlock]);  # 2016apr13: inspect t=nounlock row;
        $motjuste = $k[1];  # 2017jun08: in case a search is needed for non-zero $rv
        $act = $k[3];   # 2017jun08: let activation-level play its role here;
        if ($k[17] > 0) { $tdj = $k[17] }  # 2019-10-13: time-of-adjective
    #   if ($k[19] > 0) { $tpr = $k[19] }  # 2019-08-11: time-of-preposition?
        if ($k[19] > 0) { $tnpr = $k[19] }  # 2019-10-28: time-of-noun-preposition?
        if ($k[7] == 4) {   # 2017jun08: if acc. case as for any nounlock;
          if ($k[20] > 0) {     # 2019-08-01: if there is a positive recall-vector...
            $nphrpos = $k[6];   # 2017-09-03: find part-of-speech for EnArticle
            $aud = $k[20];      # 2019-08-01: find positive $rv; 
          }  # 2017-09-03: pre-ELSE end of test for a positive recall-vector
        } else {  # 2019-08-08: if only a zero $rv is found...
          for (my $i=$t; $i>$midway; $i--) {  # 2016apr20: search backwards in time.
            @k=split(',',$psy[$i]);  # 2016apr20: inspect @psy flag-panel
            if ($motjuste == $k[1]) {  # 2017jun08: find motjuste for sake of rv
              if ($dirobj == 1 && $k[7] == 4) {   # 2017jun08: direct object?
                if ($k[20] > 0) { $nphrpos = $k[6] }  # 2019-08-01: for EnArticle.
                if ($k[20] > 0) { $aud = $k[20] }  # 2019-08-01: find positive $rv; 
                if ($k[20] > 0) { last }  # 2019-08-01: exit loop if $rv is found.
              }  # 2016apr20: end of test for direct object and accusative case.
              if ($k[20] > 0) { $nphrpos = $k[6] }  # 2019-08-01: for EnArticle.
              if ($k[20] > 0) { $aud = $k[20] }  # 2019-08-01: find positive $rv; 
              if ($k[20] > 0) { last }  # 2019-08-01: exit loop if $rv is found.
            }  # 2016apr20: end of test to find $motjuste with valid $rv.
          }  # 2016apr27: end of for-loop in search of a positive recall-vector.
        }  # 2017sep03: end of else-clause for typically a pronominal $rv.
        $actpsi = $k[1];  # 2017-06-17: send direct object into SpreadAct()
      }  # 2016apr13: end of test for a positive nounlock;
      if ($tpr > 0) {  # 2019-08-11: if noun links to a preposition...
        my @k=split(',',$psy[$tpr]);  # 2019-08-11: inspect @psy knowledge-nodes.
        if ($k[14] > 0) { $px1 = $k[14] }  # 2019-08-11: intercept "px1" for obj of prep.
      }  # 2019-08-11: end of test for a jump-off point to a preposition.
      if ($whatcon==1 && $qv1psi==701 && $qv2psi==823 && $taccon>0) { $motjuste=$taccon } # 11-02 TEST
      if ($nounlock == 0) {  # 2019-06-05: if English nouns are free to compete...
        $subjectflag = 1;  # 2016mar29: a default until countermanded.  
        $dba = 1;  # 2017-06-11: default nominative until countermanded.  
        if ($dirobj == 1) { $subjectflag = 0 }  # 2016mar29: countermanding default
        for (my $i=$t; $i>$midway; $i--) {  # 2016apr30: include input for topical response
          my @k=split(',',$psy[$i]);  # 2016mar15: inspect @psy knowledge-nodes.
          if ($k[2] == 1) {  # 2018-09-27: select only English words
            if ($k[6]==5 || $k[6]==7) {  # 2017jun08: select $pos noun or pronoun
              if ($k[14] > 0 ) {  # 2019-08-01: retrieve ideas, not single words.
                if ($k[3] > $act) {   # 2017jun08: k3 activation as criterion. 
                  $etc++;   # 2019-03-02: increment number of active ideas for ConJoin()
                  $motjuste = $k[1];  # 2017jun08: Select the most active concept.
                  $aud = $k[20];  # 2019-08-08: auditory recall-vector 
                  $svo1 = $k[1];      # 2017-06-08: keep track of subject.
                  $mjact = $k[3];  # 2017jun08: if too low, motjuste defaults to "I"
                  if ($k[3] > $act && $k[11] > 0) {  # 2019-08-01: if k1-psi has k11-seq
                    $verblock = $k[14];  # 2019-08-01: assign $tkb value to verblock.
                  }  # 2019-08-01: end of test for a k1-subject with a k11-seq.
                  if ($k[3] > $act && $k[14] > 0) {  # 2019-08-01: if k1-psi has k14-tkb
                    $subjnum = $k[8];  # 2019-10-20: necessary for EnArticle()
                    $verblock = $k[14];  # 2019-08-01: assign $tkb value to verblock.
                    $aud = $k[20];  # 2019-08-08: TEST
                  }  # 2017jun11: end of test for a k1-subject with a k13-tkb.
                  if ($dirobj == 1) { $actpsi = $k[1] }  # 2017jun08
                  $subjpsi = $motjuste;  # 2016apr10: for selection of verb-form.
                  $snu = $k[8];  # 2017jun08: for parameter in verb-selection; 
                  if ($k[20] > 0) {  # 2019-08-08: if there is a positive recall-vector...
                    $nphrpos = $k[6];   # 2017-09-03: for sake of EnArticle.
                    $audjuste = $k[20]; # 2019-08-01: temporary recall-vector for Speech
                    $aud = $k[20]; # 2019-08-01: recall-vector for Speech()
                  }  # 2018-06-28: end of test for auditory recall-vector.
                  $tseln = $i;        # 2016mar29: use time-point for inhibition. 
                  $tsels = $i;        # 2016apr17: use time-point for inhibition. 
                  $act = $k[3];       # 2017jun08: noun must have higher act to win
                }  # 2016feb12: end of test for a higher activation $act
              }  # 2017dec06: end of test for a k[13] tkb verblock
            }  # 2016feb17: end of test for noun or pronoun as subject
          }  # 2016feb17: end of test for human language code $hlc == "en"
        }  # 2016mar13: End of (for loop) searching for most active "motjuste"
      } # 2019-06-05: end of test for absence of a $nounlock for English nouns.
      if ($whatcon > 0) {  # 2019-01-28: if SpreadAct() answers a what-query...
      if ($whatcon==1 && $qv1psi==701 && $qv2psi==823 && $taccon>0) { $motjuste=$taccon } # 11-02 TEST
        if ($catsubj==$motjuste && $conj > 0) {  # 2019-01-28: after use of a conjunction...
          return;  # 2019-01-28: omit the subject-noun after the use of a conjunction.
        }  # 2019-01-28: end of test
      }  # 2019-01-28: end of test for SpreadAct() answering a what-query.
      my @k=split(',',$psy[$tsels]);  # 2016apr17: inspect subject at time of selection;
      if ($k[0] > 0) { $tru = $k[0]; }  # 2019-06-13: preserve truth-value for re-entry.
      $psy[$tsels]="$k[0],$k[1],$k[2],-90,$k[4],$k[5],$k[6],"
      . "$k[7],$k[8],$k[9],$k[10],$k[11],$k[12],$k[13],"
      . "$k[14],$k[15],$k[16],$k[17],$k[18],$k[19],$k[20]";  # 2019-08-01: flag-panel
      # 2016jun28: Above line inserts inhibition more than twice what SpreadAct imposes. 
      if ($subjectflag == 0) {  # 2016apr13: i.e., dir.obj or pred.nom;
      if ($whatcon==1 && $qv1psi==701 && $qv2psi==823 && $taccon>0) { $motjuste=$taccon } # 11-02 TEST
        if ($nounlock > 0) {  # 2016apr13: if verb is locked to a particular $seq...
          my @k=split(',',$psy[$nounlock]);  # 2016apr13: inspect t=nounlock row;
          $motjuste = $k[1];  # 2017jun08: nounlock psi pre-empts search.
          $act = $k[3];  # 2017jun08: let activation-level play its role here;
          if ($k[6] == 5) {  # 2017-09-03: if nounlock part of speech is 5=noun
            $nphrpos = 5;    # 2017-09-03: for sake of EnArticle.
            $qv1psi = $k[1]; # 2017-09-03: let direct object go to SpreadAct. 
          }  # 2017-09-03: end of test for only a noun to go into SpreadAct.
          $aud = $k[20]; # 2019-08-02: recall-vector to auditory engram.  
        }  # 2016apr13: end of test for a positive nounlock.
      }  # 2016apr13: end of test for not-a-subject before using ELSE
      if ($aud == 0) {  # 2018-06-28: seek outside of rv-less silent inference...
        for (my $i=$t; $i>$midway; $i--) {  # 2016mar27: search backwards in time.
          my @k=split(',',$psy[$i]);  # 2016mar27: inspect @psy flag-panel
          $act = $k[3];  # 2017jun08: let activation-level play its role here;
          if ($motjuste == $k[1]) {  # 2017jun08: find motjuste for sake of rv
            if ($subjectflag == 1 && $k[7] == 1) {   # 2017jun08: subject?
              if ($k[20] > 0) { $aud = $k[20] }  # 2019-08-01: find positive $rv; 
              if ($k[20] > 0) { last }  # 2019-08-01: exit loop if $rv is found.
            }  # 2016apr01: end of test for subject and for nominative case.
            if ($dirobj == 1 && $k[7] == 4) {   # 2017jun08: direct object?
              if ($k[1] > 0) { $qv4psi = $k[1] }  # 2017-12-12: for inserting "AN".
              if ($k[20] > 0) { $nphrpos = $k[6] } # 2019-08-01: set POS for EnArticle.
              if ($k[20] > 0) { $aud = $k[20] }  # 2019-08-01: find positive $rv; 
              if ($k[20] > 0) { last }  # 2019-08-01: exit loop if $rv is found.
            }  # 2016apr01: end of test for direct object and accusative case.
          }  # 2016mar27: end of test to find $motjuste with valid $rv.
        }  # 2016mar27: End of (for loop) searching through @psy conceptual array. 
      }  # 2016mar27: end of else-clause for when recall-vector is zero.
      if ($nounlock == 0) {  # 2016apr07: if no nounlock override; 
        if ($mjact < 20) {  # 2016jun18: if no subject active enough for chain-of-thought
          if ($subjectflag == 1) {  # 2016apr07: default to "I" only as subject
            $actpsi = 701;  # 2016apr29: send 701=I ego-concept into SpreadAct()
            $motjuste = 701;  # 2016apr07: 701=I default concept of AI Mind
            for (my $i=$t; $i>$midway; $i--) {  # 2016apr07: search for "I"
              my @k=split(',',$psy[$i]);  # 2016apr07: examine @psy
              if ($k[0]>0 && $k[1]==701 && $k[14]>0) { # 2019-08-01: I=701 with non-zero $tru
                if ($k[3] > $defact) {  # 2017jun08: if higher k3 act is found;
                  $tseln = $i;  # 2016apr07: retain time of motjuste; 
                  $tsels = $i;  # 2016may25: retain time of English subject;
                  $actpsi = $k[1];    # 2017jun08: psi with activation to spread
                  $defact = $k[3];    # 2017jun08: dynamic metric;
                  $defact = ($k[3] -1);  # 2019-06-03: allow deeper search.
                  $verblock = $k[14]; # 2019-08-01: k14 $tkb as verblock; 
                  $aud = $k[20];      # 2019-08-01: recall-vector for auditory engram
                }  # 2016apr07: end of test for higher-act ego-concept;
              }  # 2016apr07: end of test for "701=I" with seq-check;
            }  # 2016apr07: end of search for least-inhibited "701=I"; 
            $dba = 1;        # 2016apr07: From RuAi; subject requires nom. case; 
            $nphrnum = 1;    # 2016apr07: for EnArticle() and EnVerbPhrase();
            $nphrpos = 7;    # 2016apr07: prevent article "A" with "I";
            $prsn = 1;       # 2016apr07: for use elsewhere; 
            $subjnum = 1;    # 2016apr07: for use elsewhere;
            $subjpsi = 701;  # 2016apr07: for use elsewhere;
            $topic = 701;    # 2016apr07: for question-asking modules; 
            for (my $i=$t; $i>$midway; $i--) {  # 2016apr07: parameters for 701=I.
              my @k=split(',',$psy[$i]);  # 2016apr07: examine @psy
              if ($k[1] == 701) {  # 2017jun08: if 701=I is found;
                if ($k[7] == 1) {  # 2017jun08: k7/dba must be nominative=1; 
                  $audjuste = $k[20];  # 2019-08-01: "I" recall-vector;
                  $aud = $k[20];  # 2019-08-01: "I" recall-vector for Speech()
                  if ($k[20]>0) { $aud=$k[20]; last }  # 2019-08-01: insurance
                }  # 2016apr07: end of test for nominative "I"; 
              }  # 2016apr07: End of search for 701=I;
            }  # 2016apr07: end of 701=I search based on parameters.
          }  # 2016apr07: end of test for "I" to become subj. not obj.
        }  # 2016apr07: end of test for low activation warranting a default
      }  # 2016apr07: end of test for absence of pre-ordained nounlock;
      $unk = $aud;  # 2017-08-31: preserve value across call to EnArticle().
      if ($motjuste == 701) { $nphrpos = 7 }  # 2019-11-03: for pronoun 701=I
      if ($nphrpos == 5) {  # 2017-09-03: only nouns, not adjectives or pronouns.
        my @aud=split(',',$ear[$aud]);  # 2017-12-12: expose first @ear value
        if ($aud[0] eq "A") { $anset = 65 }  # 2017-12-12: If vowel "A";
        if ($aud[0] eq "E") { $anset = 69 }  # 2017-12-12: If vowel "E";
        if ($aud[0] eq "I") { $anset = 73 }  # 2017-12-12: If vowel "I";
        if ($aud[0] eq "O") { $anset = 79 }  # 2017-12-12: If vowel "O";
        if ($aud[0] eq "U") { $anset = 85 }  # 2017-12-12: If vowel "U";
        EnArticle()         # 2017-12-11: module for thinking an English article.
      }  # 2017-09-03: end of test for a 5=noun noun-phrase part-of-speech
      $aud = $unk;  # 2017-08-31: restore value after call to EnArticle().
      $unk = 0;     # 2017-08-31: reset for safety. 
      $unk = $aud;  # 2019-10-13: preserve value across call to EnAdjective().
      if ($tdj > 0) {  # 2019-10-13: if there is a positive time-of-adjective...
        EnAdjective();  # 2019-03-02: permit insertion of adjective before a noun.
        $tdj = 0;  # 2019-10-13: reset for safety.
      }  # 2019-10-13: end of test for an adjective linked to the noun.
      $aud = $unk;  # 2019-10-13: restore value after call to EnAdjective().
      Speech();  # 2016feb13: speak the word starting at the $aud time. 
      @k=split(',',$psy[$tsels]);  # 2016jun24: inhibit the subject just spoken.
      $psy[$tsels]="$k[0],$k[1],$k[2],-32,$k[4],$k[5],$k[6],"
      . "$k[7],$k[8],$k[9],$k[10],$k[11],$k[12],$k[13],"
      . "$k[14],$k[15],$k[16],$k[17],$k[18],$k[19],$k[20]"; # 2019-08-01: flag-panel
    # if ($tpr > 0) {  # 2019-08-11: if there is a positive time-of-preposition
      if ($tnpr > 0) {  # 2019-10-128: if there is a positive time-of-noun-preposition
        EnPrep();  # 2019-08-11: for a prepositional phrase
      }  # 2019-08-11: end of test for a preposition linked to the noun.
      $dirobj = 0;    # 2016apr12: reset for safety
      $mfn = 0;       # 2019-10-23: prevent carry-over.
      $mjact = 0;     # 2016apr27: reset for safety.
      $motjuste = 0;  # 2016apr25: reset for safety. 
    }  # 2019-10-28: EnNounPhrase() returns to English Indicative() module
    


    5. Variables for EnNounPhrase Module of an AI with NLU

    $act -- quasi-neuronal activation-level

    $aud -- in the Speech() module is an associative tag leading to the typically most recent engram of a word stored in the @ear array of the auditory memory channel.

    $audjuste -- EnNounPhrase() $motjuste $aud to Speech() module

    $catsubj -- flag for holding the concept-number of the SUBJect-noun of words conCATenated together into the first phrase of a potentially compound output sentence, so that one-by-one the words of a candidate second phrase may each be tested for a match with the counterpart word in the very first phrase, and thus, if a conjunction like "AND" from ConJoin is about to add the second phrase to the first phrase, the AI may omit the repetitious same subject from the second phrase, and also the verb if it is found to be repetitious in the EnVerbPhrase module, with the result that the AI syncopates or shortens the compound sentence into a single-subject and single-verb sentence such as, "JOHN HAS A HOUSE AND A CAR" instead of "JOHN HAS A HOUSE AND JOHN HAS A CAR".

    $defact -- default activation for EnNounPhrase()

    $dirobj -- flag indicates seeking for a direct object. Should perhaps be renamed "dirobjcon" so as to indicate a condition rather than a particular direct object.

    $etc -- number of simultaneously active ideas for ConJoin() to separate with a conjunction.

    $motjuste -- (from French) best word for inclusion in a thought.

    $nphrpos -- "noun-phrase part-of-speech" for testing during the EnThink() process.

    $nounlock -- time-point for a verb to lock onto a seq-noun.

    $subjnum -- (subject number) for agreement in grammatical number between a subject and a predicate nominative noun.

    $subjpsi -- subject-concept parameter to govern person of verb-forms

    $taccon -- is a tactile condition flag which may be used by the AI Mind Maintainer either to trigger events involving tactile recognition or to carry the actual sensory identifiers which may be tested either for a positive value or for the specifically identifying value of the sensor.

    $tsels -- Time of SELection of Subject -- is used locally in EnNounPhrase() and in RuNounPhrase() to keep track of the experiential time $t at which a stored concept is selected as a subject, so that the $tsels can be used to revisit the engram at $tsels to change its activation-level in the course of neural inhibition.

    $verblock -- for subject-noun to lock onto seq-verb. The $verblock is a time-point in conceptual @psy memory where the $seq of a subject-noun is located, so that any crucial consideration such as the negation of a verb will be found when the verb-phrase module fetches the verb-concept from memory. If the thinking process finds and activates a particular subject-noun in memory, the $tkb of the subject noun becomes the $verblock so that a particular verb at a particular time will be selected by the English or Russian verb-phrase module.


    6. Troubleshooting and Debugging for AI Mind Maintainers

    6.0.a. Symptom: (Something goes wrong.)
    6.0.b. Solution: (AI Mind Maintainer devises solution.)

    6.1.a. Symptom: In either a pre-existing AI or a new AI, the activation of multiple subject-nouns is detected by the etc flag as a trigger to let the ConJoin module insert a conjunction like "AND" between multiple ideas being expressed as output. Sometimes a problem of runaway activations may occur among the subject-nouns being considered by the noun-phrase module for selection as part of an idea to be output as a thought. In such a case the AI may be filled with a burgeoning swarm of activated subjects and may not be able to stop outputting needlessly compound sentences.

    6.1.b. Solution: The AI Mind Maintainer may troubleshoot the problem by inserting a diagnostic message into that part of the noun-phrase module where nouns are competing to be selected for having the highest activation. The temporary diagnostic message shall report the location in conceptual Psy memory of the activated noun as identified by the looping index-number; the concept-number that identifies the active noun; the number of activated candidates as tallied by the etc variable; and the level of runaway activation as revealed by the value riding on the act variable. The following sample Perl code shows a typical diagnostic message.

      print "\n EnNP i= $i k1= $k[1] etc= $etc act= $act \n";
    }  # 2016feb12: end of test for a higher activation $act
    
    If there are too many activated subject-nouns, the reported etc value will grow larger and larger as proof that there is a problem. One solution in the past has been to make sure that the InStantiate module modestly increases the activation on recognized concepts only from the outside world and not on concepts being thought and being stored in memory as part of the re-entry process. If re-entrant thoughts were to receive activation, then that process could be the source of runaway activation.


    7. Future Development

  • Roadmap to Artificial Intelligence


    8. Resources for the AI4U Textbook EnNounPhrase Module


    9. Spread the News on TikTok and Other Venues

    Are you on TikTok? Are you eager to be a ThoughtLeader and Influencer?
    Create a TikTok video in the following easy steps.

    I. Capture a screenshot of https://ai.neocities.org/EnNounPhrase.html
    for the background of your viral TikTok video.

    II. In a corner of the screenshot show yourself talking about the EnNounPhrase modulee.

    III. Upload the video to TikTok with a caption including all-important hash-tags which will force governments and corporations to evaluate your work because of FOMO -- Fear Of Missing Out:
    #AI #ИИ #brain #мозг #ArtificialIntelligence #ИскусственныйИнтеллект #consciousness #сознание #Dushka #Душка #psychology #психология #subconscious #подсознание
    #AGI #AiMind #Alexa #ChatAGI #chatbot #ChatGPT #cognition #cyborg #Eureka #evolution #FOMO #FreeWill #futurism #GOFAI #HAL #immortality #JAIC #JavaScript #linguistics #metempsychosis #Mentifex #mindmaker #mindgrid #ML #neuroscience #NLP #NLU #OpenAI #OpenCog #philosophy #robotics #Singularity #Siri #Skynet #StrongAI #transhumanism #Turing #TuringTest #volition

    A sample video is at
    https://www.tiktok.com/@sullenjoy/video/7211895021774179626


    10. AiTree of Mind-Modules for Natural Language Understanding


    Nota Bene: This webpage is subject to change without notice. Any Netizen may copy, host or monetize this webpage to earn a stream of income by means of an affiliate program where the links to Amazon or other booksellers have code embedded which generates a payment to the person whose link brings a paying customer to the website of the bookseller.

    This page was created by an independent scholar in artificial intelligence who created the following True AI Minds with sentience and with limited consciousness.

  • http://ai.neocities.org/mindforth.txt -- MindForth Robot AI in English.

  • http://ai.neocities.org/DeKi.txt -- Forth Robot AI in German.

  • http://ai.neocities.org/perlmind.txt -- ghost.pl Robot AI thinks in English and in Russian.

  • http://ai.neocities.org/Ghost.html -- JavaScript Robot AI Mind thinks in English.

  • http://ai.neocities.org/mens.html -- JavaScript Robot AI Mind thinks in Latin.

  • http://ai.neocities.org/Dushka.html -- JavaScript Robot AI Mind thinks in Russian.

    The following books describe the free, open-source True AI Minds.

    AI4U -- https://www.iuniverse.com/BookStore/BookDetails/137162-AI4U

    AI4U (paperback) -- http://www.amazon.com/dp/0595259227

    AI4U (hardbound) -- http://www.amazon.com/dp/0595654371

    The Art of the Meme (Kindle eBook) -- http://www.amazon.com/dp/B007ZI66FS

    Artificial Intelligence in Ancient Latin (paperback) -- https://www.amazon.com/dp/B08NRQ3HVW

    Artificial Intelligence in Ancient Latin (Kindle eBook) -- https://www.amazon.com/dp/B08NGMK3PN

  • https://redditfavorites.com/products/artificial-intelligence-in-ancient-latin

    Artificial Intelligence in German (Kindle eBook) -- http://www.amazon.com/dp/B00GX2B8F0

    InFerence at Amazon USA (Kindle eBook) -- http://www.amazon.com/dp/B00FKJY1WY

    563 Mentifex Autograph Postcards were mailed in 2022 primarily to autograph collector customers at used bookstores to press the issue of whether or not the Mentifex oeuvre and therefore the autograph is valuable. These artwork-postcards with collectible stamps may be bought and sold at various on-line venues.

  • https://www.ebay.com
  • https://galaxycon.com/search?q=Mentifex

    See AI 101 AI 102 AI 103 year-long community college course curriculum for AI in English.
    See Classics Course in Latin AI for Community Colleges or Universities.
    See College Course in Russian AI for Community Colleges or Universities.
    Collect one signed Mentifex Autograph Postcard from 563 in circulation.
    See Attn: Autograph Collectors about collecting Mentifex Autograph Postcards.

    Return to top; or to
    Image of AI4U found at a book store
    The collectible AI4U book belongs in every AI Library as an early main publication of Mentifex AI.


    Website Counter