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.
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.)
Roadmap to Artificial Intelligence
8. Resources for Artificial Intelligence in Russian Language
9.
AiTree of Mind-Modules for
Natural Language Understanding