RuVerbGen Russian verb-generating module

of ghost.pl First Working AGI

Artificial General Intelligence


1. Diagram of the RuVerbGen Mind-Module

       
  /^^^^^^^^^^^\RuVerbGen Creates Russian Verb-Form/^^^^^^^^^^^\
 /   EYE       \            _________________    /    EAR      \
|               |CONCEPTS  /    Volition     \  |  ___________  |
|   _______     |   | | |  \_________________/  | / MindBoot  \ |
|  / old   \    |   | | |   _|___      _|____   || memory vault||
| / image   \!!!|!!!|!|!|  /     \    /      \  ||             ||
| \ recog   /---|---|-|-+ (EnThink)  (RuThink ) || "СТУДЕНТЫ"  ||
|  \_______/    |   |С| |  \_____/    \______/  || "ЧИТАЮТ"    ||
|               |   |Т| |          _____|______ || "КНИГИ"     ||
|               |  Ч|У| | _____   (RuIndicative)| \___________/ |
|               |  И|Д|К|| Ru- \   \__________/ |               |
|   visual      |  Т|E|Н|| Noun-\  / ___|____   |               |
|               |  А|Н|И|| Phrase\/ / RuVerb-\  |  Я            |
|   memory      |  Ю|Т|Г||_______/ /  Phrase  \ |  ЧИТАЮ        |
|               |  Т|Ы|И|          \__________/ |  КНИГИ        |
|   channel     |   | | |   _________|_____     |               |
|               |   | | |  /   RuVerbGen   \    |  ТЫ           |
|               |   | | | (     ЧИТАЕШЬ     )   |  ЧИТАЕШЬ      |
|   _______     |   | | |  \_______________/    |  КНИГИ        |
|  /new    \    |   | | | ___|_____   ___|_____ |               |
| / percept \   |   |_|_||AudBuffer| |OutBuffer||               |
| \ engram  /---|---(Psy)|ЧИТАЮ    | |    ЧИТАЮ||               |
|  \_______/    |    \_/ |_________| |_________||               |


2. Purpose

The purpose of RuVerbGen is to create a Russian verb-form not directly available in auditory memory when the AI Mind knows the particular Russian verb and its forms of conjugation, but does not have the one particular verb-form held in auditory memory.


3. Function

If the AI Mind knows a Russian verb and tries to utter a missing form of the Russian verb, RuVerbGen creates the missing form.


4. Code of RuVerbGen() from ghost.pl First Working AGI in Perl

sub RuVerbGen() {  # http://ai.neocities.org/RuVerbGen.html
  my $binc = 0;  # de-globalized Buffer-INCrement counter used only locally. 
# print "\nRuVG: audb= $audbase nphrnum= $nphrnum dba= $dba vphraud= $vphraud \n"; 
  if ($subjpsi==1701) { $dba = 1 }  # 2016apr02: "1701=Я" is first-person "I";
  if ($subjpsi==1707) { $dba = 2 }  # 2016apr02: "1707="ТЫ" is second-person "you"; 
  if ($subjpsi==1737) { $dba = 2 }  # 2016apr02: "1737="ВЫ" is second-person "you"; 
  if ($subjpsi==1731) { $dba = 1 }  # 2016apr02: "1731="МЫ" is first-person "we"; 
  my @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #01
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #02
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #03
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #04
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #05
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #06
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #07
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #08
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #09
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #10
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #11
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #12
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #13
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #14
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #15
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  @aud=split(',',$ear[$audbase]);  # 2016apr05: @ear word-engram #16
  if ($aud[0] ne " ") { $abc = $aud[0]; AudBuffer(); $audbase++ } 
  do {  # 2016apr05: next loop uses OutBuffer();
    OutBuffer();  # 2016apr03: 
    if ($binc == 1) {   # 2016apr30: space filled below with Russian AI links.
      if ($b01 ne "") { print "$b01"; $idea = "$idea" . "$b01"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 2) {   # 2016apr25: http://ai-news.ru 
      if ($b02 ne "") { print "$b02"; $idea = "$idea" . "$b02"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 3) {   # 2016apr25: http://ailab.ru/forum.html 
      if ($b03 ne "") { print "$b03"; $idea = "$idea" . "$b03"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 4) { # http://egtd.ru -- Эмоционально-Генетическая Теория Развития
      if ($b04 ne "") { print "$b04"; $idea = "$idea" . "$b04"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 5) {   # 2016apr25: http://geektimes.ru 
      if ($b05 ne "") { print "$b05"; $idea = "$idea" . "$b05"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 6) {   # 2016apr25: http://gotai.net/forum
      if ($b06 ne "") { print "$b06"; $idea = "$idea" . "$b06"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 7) { # 2016apr25: http://intsys.msu.ru -- ИНТЕЛЛЕКТУАЛЬНЫЕ СИСТЕМЫ
      if ($b07 ne "") { print "$b07"; $idea = "$idea" . "$b07"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 8) { # http://raai.org -- Российская ассоциация искусственного интеллекта
      if ($b08 ne "") { print "$b08"; $idea = "$idea" . "$b08"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 9) {  # 2016apr24: 
      if ($b09 ne "") { print "$b09"; $idea = "$idea" . "$b09"; }  # 2016apr24
    }  # 2016apr24: end of outputting character and concatenating for ReEntry().
    if ($binc == 10) {  # 2016apr03: 
      if ($b10 ne "") { print "$b10"; $idea = "$idea" . "$b10"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 11) {  # 2016apr03: 
      if ($b11 ne "") { print "$b11"; $idea = "$idea" . "$b11"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 12) {  # 2016apr03: 
      if ($b12 ne "") { print "$b12"; $idea = "$idea" . "$b12"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 13) {  # 2016apr03: 
      if ($b13 ne "") { print "$b13"; $idea = "$idea" . "$b13"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 14) {  # 2016apr03: 
      if ($b14 ne "") { print "$b14"; $idea = "$idea" . "$b14"; }  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 15) {  # 2016apr03: 
      if ($b15 eq "\x85") { $b15 = "" }  # 2016apr3: "Е" Cyrillic
      if ($b15 eq "\x92") { $b15 = "" }  # 2016apr3: "Т" Cyrillic
      if ($b15 eq "\x64") { $b15 = "" }  # 2016apr3: "Ш" Cyrillic
      print "$b15"; $idea = "$idea" . "$b15";  # 2016apr23
    }  # 2016apr23: end of outputting character and concatenating for ReEntry().
    if ($binc == 16) {  # 2016apr03: 
      if ($b16 eq "\x85") { $b16 = "" }  # 2016apr3: "Е" Cyrillic
      if ($b16 eq "\x8C") { $b16 = "" }  # 2016apr3: "М" Cyrillic
      if ($b16 eq "\x92") { $b16 = "" }  # 2016apr3: "Т" Cyrillic
      if ($b16 eq "\x8C") { $b16 = "" }  # 2016apr3: "Ь" Cyrillic
      if ($b16 eq "Е") { $b16 = "" }  # 2016apr3: "Е" Cyrillic; TEST
      if ($b16 eq "\x9E") { $b16 = "" }  # 2016apr3: "Ю" Cyrillic
      if ($b15 eq "\n{U+1070}") { print "  LETTER-YU" }  # 2016apr3: "Ю" Cyrillic
    }  # 2016apr03: 
    $binc++;  # 2016apr03: OutBuffer() "b" increment
  } while ($binc < 17);  # 2016apr03: while inspecting OutBuffer()
  $c01=""; $c02=""; $c03=""; $c04="";  # 2016apr06: clear out the AudBuffer()
  $c05=""; $c06=""; $c07=""; $c08="";  # 2016apr06: clear out the AudBuffer()
  $c09=""; $c10=""; $c11=""; $c12="";  # 2016apr06: clear out the AudBuffer()
  $c13=""; $c14=""; $c15=""; $c16="";  # 2016apr06: clear out the AudBuffer()
  $binc = 0;  # 2016apr06: Reset the b-increment variable after use. 
  if ($dba == 1) {  # 2016apr3: first person;
    if ($snu == 1) {  # 2016ap03: subject-number parameter;
      $pho = "\x9E";  # 2016apr03: "Ю"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
    }  # 2016apr03: end of test for singular subject-number;
    if ($snu == 2) {  # 2016ap06: subject-number parameter;
      $pho = "\x85";  # 2016apr06: "Е"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x8C";  # 2016apr06: "М"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
    }  # 2016apr06: end of test for plural subject-number;
  }  # 2016apr03: end of test for first-person; 
  if ($dba == 2) {  # 2016apr3: second person;
    if ($snu == 1) {  # 2016ap03: subject-number parameter;
      $pho = "\x85";  # 2016apr03: "Е"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x98";  # 2016apr03: "Ш"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x9C";  # 2016apr03: "Ь"
      print "$pho ";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
    }  # 2016apr03: end of test for singular subject-number;
    if ($snu == 2) {  # 2016ap05: subject-number parameter;
      $pho = "\x85";  # 2016apr05: "Е"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x92";  # 2016apr05: "Т"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x85";  # 2016apr05: "Е"
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
    }  # 2016apr05: end of test for plural subject-number;
  }  # 2016apr03: end of test for second-person; 
  if ($dba == 3) {  # 2016apr3: third person;
    if ($snu == 1) {  # 2016ap03: subject-number parameter;
      $pho = "\x85";  # 2016apr06: "Е" Cyrillic
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x92";  # 2016apr06: "Т" Cyrillic
      print "$pho ";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
    }  # 2016apr03: end of test for singular subject-number;
    if ($snu == 2) {  # 2016ap06: subject-number parameter;
      $pho = "\x9E";  # 2016apr06: "Ю" Cyrillic
      print "$pho";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
      $pho = "\x92";  # 2016apr06: "Т" Cyrillic
      print "$pho ";  # 2016apr06: after stem, output this inflection.
      $idea = "$idea" . "$pho";  #2016apr23: concatenate for ReEntry()
    }  # 2016apr06: end of test for plural subject-number;
  }  # 2016apr03: end of test for third-person; 
  $idea = "$idea" . " ";  #2016apr23: add a space after verb for ReEntry()
  $gencon = 1;  # 2016apr05: to prevent unwarranted calling of Speech()
}  # 2016apr12: RuVerbGen() returns to RuVerbPhrase() 


5. Troubleshooting and Robotic Psychosurgery

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


6. Variables for First Working Artificial General Intelligence

$abc -- AudBuffer() transfer character

$audbase -- is the start of the @ear auditory engram of a verb that needs to have its inflectional ending changed in a VerbGen() mind-module such as RuVerbGen(). $audbase is incremented by one successive unit as long as the target word in auditory memory continues, and each character of the target word from auditory memory is sent as the value of $abc into the AudBuffer() mind-module, which left-justifies the target word before sending it to be right-justified in the OutBuffer() mind-module prior to any manipulation of the inflectional ending of the target word.

$b01 -- buffer variable 01 in the OutBuffer() quasi-array

$b15 -- buffer variable 15 in the OutBuffer() quasi-array

$b16 -- buffer variable 16 in the OutBuffer() quasi-array for the right-justifying of an English or Russian word of up to sixteen characters in length. The buffer variable $b16 always contains the very last character in a word of any length. Since each word is right-justified in the OutBuffer(), a module like NounGen() or RuVerbGen() can perform tests on the contents of $b14 and $b15 and $b16 so as to detect one inflectional ending and to replace it with a different ending as necessary. In English, where a noun like "beach" or a verb like "teach" will sometimes need to have "-es" as an ending ("beaches", "teaches"), $b15 and $b16 can be used to detect the "-ch" at the end of the word, as an indicator that the "-es" ending may need to be added on.

$binc -- OutBuffer() B-INCrement for the RuVerbGen() module. The $binc increment-counter allows RuVerbGen() to examine and test all the right-justified characters of a Russian verb, especially the several characters of an inflectional ending which might need to be changed on the basis of grammatical number (singular or plural), person (first, second, third), or past-tense gender (male, female, neuter).

$dba -- doing-business-as noun-case (nominative, genitive, etc.) or verb-person (first, second, or third)

$idea -- for re-entry of AI thought back into the AI.

$pho -- a "phoneme" or character of auditory input.

$snu -- subject-number as parameter for verb-selection.

$subjpsi -- parameter to govern person of verb-forms by identifying the subject-concept of a verb.


7. Future Development

Similar modules will be necessary for generating adjectival forms and noun-forms.


8. Resources


Please see

http://github.com/kernc/mindforth/blob/master/wiki/VerbGen.wiki

http://cyborg.blogspot.com/search/label/Russian -- is a weblog URL which invites Netizens to view blog-posts discussing the RuVerbGen 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.