Русскоязычный Искусственный Интеллект Душка
For Artificial Intelligence Dushka

RuVerbPhrase Russian Verb-Phrase Module of

English and Russian bilingual ghost.pl AI in Perl


1. Diagram of the RuVerbPhrase Mind-Module


   /^^^^^^^^^\   CONCEPTS  _________________       /^^^^^^^^^\
  /   EYE     \     | | | / Volition module \     /   EAR     \
 /             \    | | | \_________________/    /  _________  \
|               |   | | |  _____|________       |  /MindBoot \  |
|   _______     |   | | | (   RuThink    )      | / Russian   \ |
|  /image  \    |   | | |  \____________/       | \ bootstrap / |
| / percept \---|---|-|-+    ______|_______     |  \"vault"  /  |
| \ engram  /   |  С|Ч|К|   / RuIndicative \    |   \_______/   |
|  \_______/    |  Т|И|Н|   \______________/    |   auditory    |
|               |  У|Т|И|       |       |       |   memory      |
|   visual      |  Д|А|Г|  _____V______ |       |   channel     |
|               |  Е|Ю|И| (RuNounPhrase)|       |               |
|   memory      |  Н|Т| |  \"СТУДЕНТЫ"/ |       |  "СТУДЕНТЫ"   |
|               |  Т| | |   \________/  |       |               |
|   channel     |  Ы| | |         ______V_____  |               |
|               |   | | |        (RuVerbPhrase) |               |
|               |   | | |  ____  /\ "ЧИТАЮТ" /  |   "ЧИТАЮТ"    |
|               |   | | | /Ru- \/  \________/   |               |
|   _______     |   | | |/AdVerb\       |       |               |
|  /fresh  \    |   | | |\______/ ______V_____  |               |
| / image   \   |   |_|_|        (RuNounPhrase) |               |
| \ engram  /---|---(Psy)         \  "КНИГИ" /  |   "КНИГИ"     |
|  \_______/    |    \_/           \________/   |               |


2. Purpose of the RuVerbPhrase AI Mind Module

RuVerbPhrase inserts a Russian verb into a nascent thought.

RuVerbPhrase either fetches a stored Russian verb from auditory memory or calls RuVerbGen to generate a required Russian verb-form.


3. Function of RuVerbPhrase

  • 3.A.1. Fetching a verb to describe an action or a state of being.

  • 3.A.2. Calling RuVerbGen to generate a missing but required Russian verb-form.

  • 3.B. Inserting a negational adverb to negate a Russian verb-form.

  • 3.C. Inhibiting a just-thought verb to prevent it from dominating attention.

  • 3.D. Leaving out the repetitious verb 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.


    4. Code of RuVerbPhrase() from ghost294.pl First Working AGI in Perl

    
    sub RuVerbPhrase() {  # 2016feb24: thinking with Russian verbs
      $act = 0;  # 2016apr25: Start with zero to look for psi1 higher than $act.
      if ($subjpsi==1701 || $subjpsi==1731) { $prsn = 1 }  # 2016apr02: I or we
      if ($subjpsi==1707 || $subjpsi==1737) { $prsn = 2 }  # 2016apr02: you
      if ($subjpsi==1713 || $subjpsi==1719) { $prsn = 3 }  # 2016apr02: he, she
      if ($subjpsi==1725 || $subjpsi==1743) { $prsn = 3 }  # 2016apr02: it, they
      $audjuste = 0;  # 2016feb24: prevent carry-over
      $motjuste = 0;  # 2016feb24: 
      $vphraud = 0;   # 2016apr12: initially, until found or generated by RuVerbGen()
      if ($verblock > 0) {  # 2016apr27: is there already a verblock?
        my @k=split(',',$psy[$verblock]);  # 2016apr28: inspect t=verblock row;
        $verbpsi = $k[1];   # 201706-17: lexical verbpsi;
        $svo2 = $k[1];      # 2017-06-30: item #2 of subj - verb - ind.obj - dir.obj
        $negjux = $k[5];    # 2017-06-30: for negation of verb; 
        if ($k[13]>0) { $nounlock = $k[13] }  # 2018-09-27: TEST $tkb becomes $nounlock.
        $audbase = $k[14];  # 2017-12-05: VerbGen parameter;  
        if ($k[14] > 0) { $audbase = $k[14] }  # 2017-06-17: VerbGen parameter;  
        if ($k[14] > 0) { $aud = $k[14] }      # 2017-06-17: auditory recall-vector
        if ($k[14] > 0) { $vphraud = $k[14] }  # 2017-06-17: auditory recall-vector
        if ($subjpsi==1701 || $subjpsi==1731) { $prsn = 1 }  # 2016apr28: I or we
        if ($svo1==1701) { $prsn=1; $subjnum=1 } # 2017-06-30: I
        if ($subjpsi==1707 || $subjpsi==1737) { $prsn = 2 }  # 2016apr28: you
        if ($subjpsi==1713 || $subjpsi==1719) { $prsn = 3 }  # 2016apr28: he, she
        if ($subjpsi==1725 || $subjpsi==1743) { $prsn = 3 }  # 2016apr28: it, they
        $dba = $prsn;  # 2016apr28:  parameter for VerbGen()
        $vphraud = 0;  # 2016apr28: until a known verb is found;
        for (my $i=$t; $i>$midway; $i--) {  # 2016apr30: include recent input.
          my @k=split(',',$psy[$i]);  # 2016apr28: inspect t=verblock row;
          if ($k[1] == $verbpsi && $k[1] == 1800) {  # 2017-06-25: special 1800=BE-verb
            if ($k[6] == 8) {  # 2017-06-17: select only $pos=8 verbs, even homonyms
            # Following code accepts only a verb-form matching three 
            # requirements: [ ]same concept; [ ]num(ber); and [ ]person:
              if ($k[1]==$verbpsi && $k[8]==$nphrnum && $k[7]==$dba) {  # 2017-06-17
                if ($k[14] > 0) { $aud = $k[14] }      # 2017-06-17: find positive $rv; 
                if ($k[14] > 0) { $vphraud = $k[14] }  # 2017-06-17: find positive $rv; 
                if ($verbpsi == 1800) { $aud = 0; $vphraud = 0; } # 2017-09-10: 1800=BE
                if ($k[14] > 0) { last }  # 2017-06-17: exit loop once $rv is found.
              } # 2016apr28: end of test to find regular or irregular verb-form
            }  # 2016apr28: end of test for part-of-speech $pos == "8" (verb)
          }  # 2016apr28: end of test for correct verb-concept $verbpsi
          if ($k[1] == $verbpsi && $k[1] != 1800) {  # 2018-09-12: other than 1800=BE
            if ($k[6] == 8) {  # 2017-06-17: select only $pos=8 verbs, even homonyms
              if ($k[1]==$verbpsi) {  # 2017-06-17: non-be-verbs may disregard $dba?
                if ($k[14] > 0) { $aud = $k[14] }      # 2017-06-17: find positive $rv; 
                if ($k[14] > 0) { $vphraud = $k[14] }  # 2017-06-17: find positive $rv; 
                if ($k[14] > 0) { last }  # 2017-06-17: exit loop once $rv is found.
              } # 2016apr28: end of test to find regular or irregular verb-form
            }  # 2016apr28: end of test for part-of-speech $pos == "8" (verb)
          }  # 2016apr28: end of test for correct verb-concept $verbpsi
        }  # 2016apr28: End of (for loop) searching for correct verb-form.
      }  # 2016apr28: end of test for a positive verblock.
      if ($verblock == 0) { print "RuVP: mj= $motjuste act= $act"; }  # 2016may21; TEST
      if ($vphraud > 0) { $aud = $vphraud }  # 2017-06-30: correct form?
      if ($vphraud > 0) { $audjuste = $vphraud }  # 2017-06-30: correct form?
      if ($verblock == 0)  {  # 2017-06-30: prevent false negations;
        for (my $i=$t; $i>$midway; $i--) {  # 2017-06-30: search backwards in time.
          my @k=split(',',$psy[$i]);  # 2017-06-30: inspect @psy knowledge-nodes.
          if ($k[2] == 3) {  # 2018-09-27: select only Russian words
            if ($k[6] == 8) {  # 2017-06-30: select only k6 $pos=8 verbs
              if ($k[3] > 0) {  # 2017-06-30: if k3 activation $act is...
                $tselv = $i;  # 2017-06-30: retain time of winning verb;
                $motjuste = $k[1];  # 2017-06-30: Select the most active verb.
                $svo2 = $k[1];      # 2017-06-30: for calling VisRecog()
                $audjuste = $k[14]; # 2017-06-30: recall-vector $rv for Speech()
              }  # 2017-06-30: end of test of activation-level
            }  # 2017-06-30: end of test for part-of-speech $pos == "8" verb
          }  # 2017-06-30: end of test for human language code $hlc eq 3
        }  # 2017-06-30: End of (for loop) searching for most active "motjuste"
      }  # 2017-06-30: end of test for absence of a verblock from subject to verb 
      if ($negjux == 1250) {  # 2017-06-30: if verb is negated with 1250=НЕ for "NOT"
          for (my $i=$t; $i>$midway; $i--) {  # 2017-06-30: search for 1250=НЕ
            my @k=split(',',$psy[$i]);  # 2017-06-30: examine @psy array;
            if ($k[1] == 1250) {  # 2017-06-30: if 1250=НЕ is found;
              $audjuste = $k[14];  # 2017-06-30: 1250=НЕ recall-vector;
              $aud = $k[14];  # 2017-06-30: 1250=НЕ recall-vector for Speech()
              if ($k[14]>0) { $aud=$k[14]; last }  # 2017-06-30: insurance
            }  # 2017-06-30: End of search for 1250=НЕ;
          }  # 2017-06-30: End of search loop from $t back to $midway.
          if ($rv == 0) { $rv = 1003 }  # 2017-12-06: rv of ОШИБКА = ERROR
          Speech();  # 2017-06-30: speak the word starting at the $aud time. 
      }  #2017-06-30: end of test for a negated Russian verb.
      for (my $i=$t; $i>$midway; $i--) {  # 2016apr28: search backwards in time.
        my @k=split(',',$psy[$i]);  # 2016mar15: inspect @psy knowledge-nodes.
        if ($k[2] == 3) {  # 2018-09-27: select only $hlc=ru Russian words
          if ($k[6] == 8) {  # 2017-06-17: select only $pos=8 verbs
            if ($k[3] > $act) {  # 2017-06-17: If psi3 is higher than "$act";
              $motjuste = $k[1];  # 2017-06-17: Select the most active verb.
              $psy[$i]="$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-25: concat
              $act = $k[3];  # 2017-06-17: for comparison with other candidate verbs.
            }  # 2016feb24: end of test of activation-level
          }  # 2016feb24: end of test for part-of-speech $pos == "8" verb
        }  # 2016feb24: end of test for human language code $hlc == 3
      }  # 2016mar13: End of (for loop) searching for most active "motjuste"
      $aud = $audjuste;  # 2016feb24: for transfer into Speech() module
      $verbpsi = $motjuste; # 2016apr02: to search for verb-form.
      if ($subjpsi == 1701) { $dba = 1; }  # 2016apr06: Я (I) 1st p. sing; 
      if ($subjpsi == 1707) { $dba = 2; }  # 2016apr06: ТЫ (you) 2nd p. sing
      if ($subjpsi == 1713) { $dba = 3; }  # 2016apr06: ОН (he) 3rd p. sing;
      if ($subjpsi == 1719) { $dba = 3; }  # 2016apr06: ОНА (she) 3rd p. s;
      if ($subjpsi == 1725) { $dba = 3; }  # 2016apr06: ОНО (it) 3rd p. s;
      if ($subjpsi == 1731) { $dba = 1; }  # 2016apr06: МЫ (we) 1st p. pl;
      if ($subjpsi == 1737) { $dba = 2; }  # 2016apr06: ВЫ (you) 2nd p. pl;
      if ($subjpsi == 1749) { $dba = 2; }  # 2016apr06: ВЫ (you) 2nd p. s;
      if ($subjpsi == 1755) { $dba = 2; }  # 2016apr06: ВЫ (you) 2nd p. pl;
      if ($subjpsi == 1743) { $dba = 3; }  # 2016apr06: ОНИ (they) 3rd p. pl;
      if ($vphraud == 0) {  # 2016apr02: if not substituted above;
        for (my $i=$krt; $i>$midway; $i--) {  # 2016apr03: skip current engrams.
          my @k=split(',',$psy[$i]);  # 2016apr02: inspect @psy lexical nodes
          if ($motjuste != 0 && $k[1] == $motjuste) {  # 2017-06-17: look for $motjuste;
            $svo2 = $motjuste;  # 2017-06-40: TEST
            $audbase = $k[14];  # 2017-06-17: location of quasi-stem for RuVerbGen();
            if ($k[7] == $dba)   {  # 2017-06-17:  for proper person;
              if ($k[8] == $snu) {  # 2017-06-17: subject num(ber) parameter; 
                $vphraud = $k[14];  # 2017-06-17: auditory recall-vector; 
                $aud = $k[14];  # 2017-06-17: auditory recall-vector; 
                last;  # 2016apr02:  exit the loop after first find;
              }  # 2016apr02: end of subject number-parameter test; 
            }  # 2016apr02: end of dba-parameter test;
          }  # 2016apr02: end of test for an available $motjuste
        }  # 2016apr02: end of test to find regular or irregular verb-form
      }  # 2016apr02: End of (for loop) searching through @psy conceptual array.
      $dba = 3;  # 2016apr02: a default if not countermanded below: 
      if ($subjpsi == 1701) { $dba = 1; }  # 2016apr02: Я (I) 1st p. sing; 
      if ($subjpsi == 1707) { $dba = 2; }  # 2016apr02: ТЫ (you) 2nd p. sing.
      if ($subjpsi == 1713) { $dba = 3; }  # 2016apr02: ОН (he) 3rd p. sing;
      if ($subjpsi == 1719) { $dba = 3; }  # 2016apr02: ОНА (she) 3rd p. s;
      if ($subjpsi == 1725) { $dba = 3; }  # 2016apr02: ОНО (it) 3rd p. s;
      if ($subjpsi == 1731) { $dba = 1; }  # 2016apr02: МЫ (we) 1st p. pl;
      if ($subjpsi == 1737) { $dba = 2; }  # 2016apr02: ВЫ (you) 2nd p. pl;
      if ($subjpsi == 1749) { $dba = 2; }  # 2016apr02: ВЫ (you) 2nd p. s;
      if ($subjpsi == 1755) { $dba = 2; }  # 2016apr02: ВЫ (you) 2nd p. pl;
      if ($subjpsi == 1743) { $dba = 3; }  # 2016apr02: ОНИ (they) 3rd p. pl;
      if ($vphraud != 0) { $aud = $vphraud }  # 2016apr03: Accept rv of 3 parameters.
      if ($vphraud == 0) {  # 2016apr03: 
        # 2016apr02: Following code accepts only a verb-form matching three 
        # requirements: [ ]same concept; [ ]num(ber); and [ ]person:
        for (my $i=$t; $i>$midway; $i--) {  # 2016apr02: search backwards in time.
          my @k=split(',',$psy[$i]);  # 2016apr02: inspect @psy knowledge nodes
          if ($k[1]==$verbpsi && $k[8]==$nphrnum && $k[7]==$prsn) {  # 2017-06-17
            $vphraud = $k[14];  # 2017-06-17: VerbPhrase auditory engram tag
          }  # 2016apr02: end of test to find regular or irregular verb-form
        }  # 2016apr02: End of (for loop) searching through @psy conceptual array. 
      }  # 2016apr24: TEST -- A NEEDED BRACKET?
      if ($vphraud == 0) { RuVerbGen() }  # 2016apr12: if no verb-form, generate it.
      if ($vphraud > 0) { $aud = $vphraud }  # 2016apr02: correct form?
      if ($gencon == 0) {  # 2016apr03: if no call to VerbGen()...
        if ($rv < 2) { $rv = 1003 }  # 2017-12-06: rv of ОШИБКА = ERROR
        if ($rv == 0) { $rv = 1003 }  # 2017-12-06: rv of ОШИБКА = ERROR
        Speech();  # 2016feb24: speak the word starting at the $aud time. 
        $gencon = 0;  # 2016apr03: reset whether used or not;
      }  # 2016apr03: end of test to prevent speaking extra verb after VerbGen()
      $dirobj = 1;  # 2016apr01: set flag positive for seeking direct object. 
      if ($subjpsi == 1701) {  # 2017-06-30: only for subject 1701=I;
        if ($svo2 == 1820) {     # 2017-06-30: only for verb 1820=SEE;
          if ($svo4 == 0) {  # 2017-06-30: if SEE has no direct object
          # 2017-06-30: i.e., if there is no robot camera for computer vision...
            VisRecog();  # 2017-06-30: a challenge for robot AI coders
            $svo2 = 0;   # 2017-06-30: reset for safety.
            $svo4 = 0;   # 2017-06-30: reset for safety.
            return;      # 2017-06-30: abandon rest of RuVerbPhrase()
          }  # 2017-06-30: end of test for direct object; 
        }  # 2017-06-30: end of test for "1820=SEE";
      }  # 2017-06-30: end of test for ego-concept 1701=I as subject. 
      RuNounPhrase();  # 2016apr01: for direct object or predicate nominative
      if ($actpsi > 0) {  # 2018-09-28: if there is activation to spread...
        SpreadAct();  # 2018-09-28: for a chain of thought in Russian.
        $actpsi = 0;  # 2018-09-28: reset to zero for safety.
      }  # 2018-09-28: end of test for positive $actpsi.
      $dirobj = 0;  # 2016apr01: reset flag after thinking direct object. 
      if ($prepgen > 0) { RuPrep() }  # 2016apr01: if "Where?" call RuPrep().
      $audbase = 0;  # 2016apr25: reset for safety.
    }  # 2018-09-28: RuVerbPhrase() returns to Russian RuIndicative() module
    


    5. Variables for the RuVerbPhrase Russian AI Mind Moduile

    $gencon -- status-con flag when calling RuVerbGen()


    6. Troubleshooting and Debugging for AI Mind Maintainers

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


    7. Future Development

    Roadmap to Artificial Intelligence


    8. Resources for Artificial Intelligence in Russian Language

  • Artificial Intelligence in Ancient Latin

  • http://github.com/PriorArt/AGI/wiki/MindGrid


    9. AiTree of Mind-Modules for Natural Language Understanding



    "Look Inside" Kindle version to read initial chapters.


    Website Counter