RuVerbPhrase Russian Verb-Phrase Module

of ghost.pl First Working AGI

Artificial General Intelligence


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

RuVerbPhrase inserts a Russian verb into a nascent thought.


3. Function


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 First Working Artificial General Intelligence

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


6. Troubleshooting and Robotic Psychosurgery

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


7. Future Development


8. Resources


Please see also

http://cyborg.blogspot.com/search/label/Russian -- is a special weblog URL which invites Netizens to view blog-posts discussing the RuVerbPhrase and other Russian mind-modules.


9. AiTree of First Working AGI Mind-Modules


Return to top; or to
http://www.gotai.net/forum -- Russian-language AI forum;
http://ai.neocities.org/Dushka.html -- obsolete Russian AI;
http://github.com/kernc/mindforth/blob/master/wiki/RussMan.wiki
http://en.wikipedia.org/wiki/Natural_language_understanding -- solved.
http://old.reddit.com/r/ControlProblem -- NOT SOLVED.
javascript subreddit for AI Mind discussion;
Forth subreddit for MindForth discussion;
Perl subreddit for ghost.pl AI Mind Maintainers.
Joint Artificial Intelligence Center (JAIC) -- the AI Manhattan Project.