*Шаблон+база данных.
Фраза, выводимая программой, не выбирается из числа готовых фраз, а формируется с помощью заполнения некоторого шаблона (или одного из имеющихся шаблонов) словами из базы в зависимости от контекста разговора.
-пока не умеет учиться, как это сделать, пока без понятия.После предварительного анализа в базу заносятся не все, а лишь некоторые фразы (например, относящиеся к значимым темам или являющиеся ответом на наиболее часто встречающиеся реплики). В этом случае, даже если алгоритм анализа фразы примитивен, программа умнеет достаточно быстро, а в базу не попадают бессмысленные реплики; но необходимо выработать удачные критерии отбора фраз.
Add(MainForm,2953706,189,210)
{
Width=431
Height=329
Caption="Умный бот (0.0.1)"
Position=1
}
Add(Edit,8670163,98,77)
{
Width=415
Align=2
Text=""
link(onEnter,2078886:doEvent1,[])
}
Add(Memo,14659374,273,77)
{
Top=20
Width=415
Height=271
Align=5
}
Add(Hub,2078886,154,84)
{
link(onEvent1,425789:doEvent1,[(206,90)(206,83)(206,83)])
link(onEvent2,4465529:doWork1,[(175,97)(175,111)])
}
Add(MultiElement,4465529,182,105)
{
link(onEvent1,425789:doEvent2,[(222,111)(222,90)])
}
BEGIN_SDK
Add(EditMulti,1061766,21,21)
{
EventCount=1
WorkCount=1
Width=531
Height=375
link(doWork1,1980422:doModify,[(25,27)(25,48)])
}
Add(StrList,7590074,91,56)
{
Strings=#29:привет=Привет, как дела $имя!|34:хорошо=Я, очень за тебя рад, $имя!|
}
Add(Replace,5125365,364,168)
{
SubStr="$имя"
link(onReplace,12842497:In,[])
link(Str,6494692:Value,[(370,149)(356,149)])
link(Dest,13323879:Var,[])
}
Add(Memory,2056730,217,28)
{
Default=String(Незнакомец)
}
Add(ArrayEnum,10160767,84,140)
{
link(onItem,11174774:doSplit,[])
link(Array,7590074:Array,[(90,120)(111,120)])
}
Add(StrCase,1980422,28,42)
{
link(onModify,13976054:doValue,[(72,48)(72,72)(16,72)(16,97)])
}
Add(Memory,13976054,28,91)
{
link(onData,10160767:doEnum,[(72,97)(72,146)])
}
Add(StrPart,11174774,133,140)
{
Char="="
DirectEvent=0
link(onSplit,6494692:doValue,[(201,146)(201,104)])
link(onPart,13221857:doEvent1,[(170,153)(170,160)])
}
Add(StrMask,15231518,203,154)
{
Point(doMask)
link(onFalse,13028953:doReplace,[(240,160)(240,223)])
link(onTrue,5125365:doReplace,[(353,167)(353,174)])
link(Str,11441942:Var,[(209,152)(202,152)(202,140)])
}
Add(LineBreak,9020021,28,140)
{
Type=1
link(Data,7866856:Var2,[])
Primary=[11441942,175,-14]
}
Add(Hub,13221857,175,154)
{
link(onEvent1,15231518:doMask,[(196,160)(196,167)])
link(onEvent2,15231518:doCompare,[(196,167)(196,160)])
}
Add(Memory,6494692,350,98)
{
}
Add(LineBreak,8872250,217,77)
{
Type=1
link(Data,2056730:Value,[])
Primary=[13323879,161,63]
}
Add(LineBreak,15413986,504,28)
{
link(Out,1061766:onEvent1,[(540,34)(540,27)])
Primary=[12842497,-70,140]
}
Add(GetDataEx,7866856,28,126)
{
link(Data,13976054:Value,[])
}
Add(LineBreak,14018493,35,147)
{
Type=1
link(Data,7866856:Var3,[(41,131)])
Primary=[1762685,238,42]
}
Add(LineBreak,15779123,182,35)
{
link(Out,2056730:doValue,[(214,41)(214,34)])
Primary=[15195293,203,182]
}
Add(Replace,13028953,273,217)
{
SubStr="меня зовут "
DestStr="1-"
Point(CurentStr)
link(onReplace,2464266:doSplit,[])
link(Str,1762685:Var,[])
}
Add(StrPart,2464266,336,217)
{
Char="-"
DirectEvent=0
link(onSplit,15195293:In,[])
link(Str,13028953:CurentStr,[(342,205)(310,205)(310,261)(279,261)])
}
Add(InfoTip,3165757,0,21)
{
Info=#18:Регистру переводим|
Width=85
Height=60
}
Add(InfoTip,1402341,0,84)
{
Info=#18:Текст пользователя|
Width=85
Height=46
}
Add(InfoTip,11222914,77,28)
{
Info=#18:Шаблон+база данных|
Width=92
Height=88
}
Add(InfoTip,16629815,56,119)
{
Info=#12:Перебор базы|
Width=113
Height=60
}
Add(InfoTip,595701,168,119)
{
Info=#18:Сравнения с маской|
Width=99
Height=74
}
Add(InfoTip,15906990,315,63)
{
Info=#25:Подставка данных в шаблон|
Width=169
Height=144
}
Add(InfoTip,14262625,238,189)
{
Info=#24:Заполнить данные шаблона|
Width=176
Height=81
}
Add(InfoTip,12074308,175,28)
{
Info=#8:Ваше имя|
Width=106
Height=67
}
Add(InfoTip,7416486,427,7)
{
Info=#21:Ответ отправить в чат|
Width=148
Height=53
}
END_SDK
Add(Hub,425789,231,77)
{
InCount=2
OutCount=1
link(onEvent1,14659374:doAdd,[])
}
Add(InfoTip,16066098,77,56)
{
Info=#10:Пишем боту|
Width=71
Height=88
}
Add(InfoTip,9407358,259,49)
{
Info=#3:Чат|
Height=88
}
Add(InfoTip,5693582,154,56)
{
Info=#6:Анализ|
Width=99
Height=88
}
Add(InfoTip,6332098,161,182)
{
Info=#14:Сама программа|
Width=99
Height=88
}