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 of the RuVerbGen Russian AI Mind Module
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.
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 ghost294.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. 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.
Variables for the RuVerbGen Russian AI Mind Moduile
$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.
6. Troubleshooting and Debugging for
AI Mind Maintainers
6.1.a. Symptom: (Something goes wrong.)
6.1.b. Solution: (AI Mind
Maintainer devises solution.)
Similar modules will be necessary for generating adjectival forms and noun-forms.
Roadmap to Artificial Intelligence
8. Resources for Artificial Intelligence in Russian Language
9.
AiTree of Mind-Modules for
Natural Language Understanding