doctor (1108521)

Файл №1108521 doctor (Доктор)doctor (1108521)2019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

DoctorОбщее описаниеДанное задание связано с упрощённой версией известной медицинской системы «Доктор», разработанной в Массачусетском Университете в начале 60-х годов профессором Жозефом Вейзенбаумом (Joseph Weizenbaum). Деятельность системы заключается в следующем.«Доктор» ведёт интерактивную беседу с пользователем, имитируя поведение психотерапевта. В приведённом ниже примере диалога, реплики пользователя предварены приглашением**, а реакция системы выделена заглавными буквами.

Для некоторого упрощения знакипунктуации опущены, а реплики пользователя и системы представлены в виде списков языка Лисп.==> (visit-doctor ’Bill)(HELLO, BILL)(WHAT SEEMS TO BE THE TROUBLE?)**(everyone hates me)(WHY DO YOU SAY EVERYONE HATES YOU)**(whenever i enter a room no one will look me in the eye)(MANY PEOPLE HAVE THE SAME SORTS OF FEELINGS)**(they laugh at me behind my back)(YOU SEEM TO THINK THEY LAUGH AT YOU BEHIND YOUR BACK)**(they get together and talk about how they hate me)(MANY OF MY PATIENTS HAVE TOLD ME THE SAME THING)**(even my mother hates me)(YOU FEEL THAT EVEN YOUR MOTHER HATES YOU)**(even when i was a baby she said i was ugly and stupid)(PLEASE CONTINUE)**(she hit me all the time)(WHY DO YOU BELIEVE SHE HIT YOU ALL THE TIME)Создаётся впечатление, что система понимает и умеет отвечать на реплики пользователя.На самом деле, в основе такого «интеллектуального» поведения системы лежат всего двадостаточно простых метода генерации ответов.Первый метод заключается в замене всех служебных слов, используемых в предложении пользователя от первого лица, например, I, me, my, am, на соответствующие служебные слова, но уже от второго лица.

Полученный таким образом ответ начинается некоторым общим замечанием, типа why do you say или you seem to think. Второй методещё проще. Жалоба пользователя просто игнорируется, и в качестве ответа система выдаётчто-нибудь такое, please continue или many people have the same sorts offeelings. Тот или иной метод генерации ответа выбирается с помощью генератора случайных чисел.1Каждая интерактивная программа, включая и сам интерпретатор Лиспа, на самом верхнем уровне состоит из некоторого бесконечного цикла (driver loop).

В этом цикле осуществляется ввод данных, их разбор и генерация выходной информации. В примере процедураvisit-doctor сначала приветствует пользователя-пациента, задаёт первый вопрос и вызывает процедуру doctor-driver-loop, содержащую цикл.(define (visit-doctor name)(print (list ’hello, name))(print ’(what seems to be the trouble?))(doctor-driver-loop name))В цикле происходит печать приглашения и чтение реплик пользователя. Если пользователь говорит goodbye, система выходит из цикла и завершает работу.

В противном случае,система порождает ответ в соответствии с той или другой стратегией, описанной выше.(define (doctor-driver-loop name)(newline)(princ ’**)(let ((user-response (read)))(cond ((equal? user-response ’(goodbye))(print (list ’goodbye, name))(print ’(see you next week)))(else (print (reply user-response))(doctor-driver-loop name)))))(define (reply user-response)(cond ((fifty-fifty)(append (qualifier)(change-person user-response)))(else (hedge))))Предикат fifty-fifty, используемый в процедуре reply, возвращает true или falseс равной степенью вероятности.(define (fifty-fifty)(= (random 2) 0))Вводные фразы и замечания общего плана порождаются путём случайного выбора изсоответствующего списка.(define (qualifier)(pick-random ’((you(you(why(whyseem to think)feel that)do you believe)do you say))))(define (hedge)(pick-random’((please go on)2(many people have the same sorts of feelings)(many of my patients have told me the same thing)(please continue))))Процедура replace представляет каркас процедуры, производящей замену служебныхслов в форме от первого лица на соответствующие слова в форме от второго лица.

Всевхождения слова pattern в предложении lst заменяются на слово replacement.(define (replace pattern replacement lst)(cond ((null? lst) ’())((equal? (car lst) pattern)(cons replacement(replace pattern replacement (cdr lst))))(else(cons (car lst)(replace pattern replacement (cdr lst))))))Эта процедура используется в другой процедуре many-replace, которая на вход получает реплику пользователя lst и список пар для замены replacement-pairs вида((<pat1> <rep1>) (<pat2> <rep2>) ... )Все вхождения образца pat1 в предложении lst будут заменены на rep1, pat2 — наrep2, и т.д.(define (many-replace replacement-pairs lst)(cond ((null? replacement-pairs) lst)(else (let ((pat-rep (car replacement-pairs)))(replace (car pat-rep)(cadr pat-rep)(many-replace (cdr replacement-pairs)lst))))))Замена выбранного слова осуществляется с помощью соответствующего вызова процедуры many-replace:(define (change-person phrase)(many-replace ’((i you) (me you) (am are) (my your))phrase))Процедура pick-random, используемая процедурами qualifier и hedge, возвращает произвольный элемент списка:(define (pick-random lst)(nth (random (length lst)) lst))На следующей схеме представлена последовательность вызовов, осуществляемая в системе doctor.3visit-doctor||doctor-driver-loop||reply|----------------------------------------------||||fifty-fiftyqualifierhedgechange-person||||||------------many-replace||||pick-randomreplaceВсе перечисленные выше процедуры содержатся в файле doctor.scm.УпражненияУпражнение 1Измените процедуры qualifier и hedge, расширив репертуар системы.Упражнение 2Что будет получено в результате вызова процедуры:(change-person ’(you are not being very helpful to me))Система doctor может быть улучшена, если заменять не только служебные слова в форме от первого лица на соответствующие слова в форме от второго, но и наоборот.

Например,если пользователь вводит:(you are not being very helpful to me)система должна ответить что-то типа:(YOU FEEL THAT I AM NOT BEING VERY HELPFUL TO YOU)То есть, are должно быть заменено на am, you на i, our на my и так далее (синтаксическая тонкость замены you на VI или me может быть проигнорирована).Реализуйте такую замену с помощью добавления пар(are am), (you i), (your my)к списку образцов в процедуре change-person.(change-person ’(you are not being very helpful to me))Что возвращает модифицированная процедура? Есть ли зависимость от того, куда поместить новые образцы — в начало или конец списка?В чем недостаток данной реализации? Напишите корректный вариант процедуры, поддерживающий замену служебных слов обоих типов.4Упражнение 3Ещё одно улучшение системы состоит в добавлении новой стратегии генерации ответов. Если doctor будет запоминать все, что ему говорит пациент, он сможет реагироватьследующим образом:(EARLIER YOU SAID THAT EVERYONE HATES YOU)Добавьте реализацию этой стратегии к уже существующей программе, воспользовавшисьследующими советами.Измените программу таким образом, что doctor-driver-loop сохраняет список всехреплик пользователя.

Замечание: не используйте оператор set!. В этом нет необходимости.Процедура reply, выбирая эту третью стратегию, берет произвольную реплику пользователя из списка истории, изменяет лицо с первого на второе и добавляет вводную фразуearlier you said that.Для осуществления большего контроля за «случайным» выбором одной из трёх стратегий, вы можете воспользоваться предикатом prob:(define (prob n1 n2)(< (random n2) n1))Упражнение 4Текущая версия программы умеет работать только с одним пользователем, чьё имязадаётся в вызове процедуры visit-doctor.

Когда пользователь говорит goodbye,visit-doctor возвращает управление интерпретатору Scheme. Измените программу таким образом, чтобы доктор автоматически переходил к приёму следующего пациента послепрощания с предыдущим. Предусмотрите некоторый способ завершения работы «многопользовательского» доктора. Например, visit-doctor может заканчиваться после того,как определённое количество пациентов обслужено, или введено специальное имя пользователя, например, suppertime. Для ввода имени очередного пользователя можете воспользоваться процедурой ask-patient-name:(define (ask-patient-name)(print ’(next!))(print ’(who are you?))(car (read)))Теперь сессия работы доктора может выглядеть следующим образом:==> (visit-doctor)(NEXT!)(WHO ARE YOU?) (Hal Abelson)(HELLO, HAL)(WHAT SEEMS TO BE THE TROUBLE?)**(everyone taking 6.001 hates me)(WHY DO YOU SAY EVERYONE TAKING 6.001 HATES YOU)...5**(goodbye)(GOODBYE, HAL)(SEE YOU NEXT WEEK)(NEXT!)(WHO ARE YOU?) (Eric Grimson)(HELLO, ERIC)(WHAT SEEMS TO BE THE TROUBLE?)...**(goodbye)(GOODBYE, ERIC)(SEE YOU NEXT WEEK)(NEXT!)(WHO ARE YOU?) (suppertime)(TIME TO GO HOME)==>Упражнение 5Реализуйте ещё одну возможную стратегию генерации ответа, зависящую от ключевыхслов в реплике пользователя.

Например, на фразу I am often depressed доктор можетответить When you feel depressed, go out for ice cream. Список ключевыхслов и соответствующих реплик доктора может выглядеть так:( ((depressed suicide)((when you feel depressed, go out for ice cream)(depression is a disease that can be treated)))((mother father parents)((tell me more about your family)(why do you feel that way about your parents?))))Более гибкая структура данных может включать зависимость от конкретного ключевогослова из списка. В этом случае на фразу пользователя, содержащую слово father докторбудет отвечать Tell me more about your father.( ((depressed suicide)((when you feel depressed, go out for ice cream)(depression is a disease that can be treated)))((mother father parents)((tell me more about your *)(why do you feel that way about your * ?))))Упражнение 6Обобщите структуру программы, используя набор предикатов и ассоциированный с нимисписок процедур, порождающих ответ.

Если реплика пользователя удовлетворяет некоторомупредикату, то вызывается одна из соответствующих процедур. Например, имея предикат6(lambda (user-response) (< (length user-response) 3))программа может реагировать на короткие реплики пользователя фразой Could yousay more?.Упражнение 7Спроектируйте и реализуйте собственную стратегию генерации ответа, расширяющуюспособности «доктора».Список литературы[1] J. Weizenbaum. Computer Power and Human Reason.

1976.[2] Sherry Turkle. The Second Self. 1984.7.

Характеристики

Тип файла
PDF-файл
Размер
53,68 Kb
Материал
Тип материала
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов лабораторной работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6447
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее