АВАТАР

Аватар, ваш представитель на сайте. Создать программу, генерирующую осмысленный диалог, сложно. Попробуйте, например, найти логические ошибки в следующих тестовых предложениях.

"Учительница тщательно продумала план ведения урока. Дети успеют выучить все 33 цифры алфавита прямо в классе на сегодняшнем занятии".

"Туристическая компания провела исследование, спросив у людей, куда бы они хотели отправиться в отпуск. Многие британцы выбрали Испанию, чтобы на две недельки уехать от палящего летнего солнца".

"Как заварить чашечку прекрасного чая. Возьмите пакетик и аккуратно налейте чай из заварочного чайника в чашку".

"Если самолет потерпит крушение прямо на границе между США и Мексикой, где же тогда хоронить выживших?".

Да и что такое "смысл"? Кто даст ему определение. Между тем, мощность современных процессоров такова, что вполне позволяет имитировать хотя бы внешнюю сторону речи или выдавать на запрос справочную информацию, роботу достоверно известную.

Итак, создаем простенький аватар. На первое время система сама генерит память (англоязычных) вопросов и ответов mem, снабжает вас функцией поиска ответа A в памяти по корреляции вопроса Q с вопросом в памяти, осуществляя селекцию ответа в зависимости от настроения mood, лежащего в пределах от минус до плюс единицы.


mem=initmemory(),  
Q=gets(), puts(Q), mood=0,
A=findanswer(mem Q mood), puts(A),

open subject avatar.png, it moves 110 right, show

Примечание к программе: кнопку старта интерпретации генерирует комментарий, начинающийся % и далее без пробела math, отделяемый запятой. Такой комментарий фильтруются и виден только при отладке примеров. Для аватаров math заменяется на talk, это позволяет усложнить консоль ввода-вывода.

Консоль аватара снабжается полями для ввода по A=gets() и выводa прямого puts(B) и инверсного putr(C) текстовых переменных. В последнем случае строка приписывается вверх экрана, что удобно для вывода длинного диалога. Существуют еще несколько стандартных функций работы с текстом, например: вычисление коэффициента коррелляции двух строк и поиска совпадений в массиве строк.

Рассмотрим его применение.


Q='как дела?', 
Q1='как идут ваши дела?', 
Q2='какая погода за окном?',
c1=corline(Q Q1), c2=corline(Q Q2), c1=?, c2=?

Совпадающие фразы дают коэффициент, равный единице. В данном случае фразы не совпадают, но во втором случае нормированный корреляционный коэффициент получится заведомо меньше. Это облегчает анализ фраз, с учетом того, что они могут быть написаны с вариацией или ошибкой.



Rambler's Top100