5.7.1. Диалоговые системы
Когда много спрашивают - мало думают и плохо помнят. М. Горький
Программа "Элиза" Венценбаума - одна из первых программ, позволяющая вести диалог с пользователем в свободно конструируемой форме на различные темы. Программа ведет диалог, задавая вопросы. Диалог строится с учетом тематически объединенных рубрик. Рубрика - это некоторая смысловая единица, характеризующая определенный набор слов или словосочетаний по тематике задаваемого пользователю вопроса и составленная из слов и словосочетаний, встречающихся в ответах пользователя.
Рассмотрим пример ведения диалога. Программа предлагает поговорить по некоторым темам, которые выбираются пользователем из меню. Например, выбрана тема "Языки программирования". Программа начинает диалог: "Давайте поговорим о языках программирования. Какому из языков программирования вы отдаете предпочтение?". Первый вопрос выбирается из первой, начальной, рубрики или всех рубрик темы случайным образом. Текущая рубрика запоминается. Пользователь вводит ответ. Например, "На работе я выполняю проект на языке C++, а дома люблю писать программы на языке РЕФАЛ". Программа ищет в рубрикации ключевые слова из ответа пользователя, определяет на их основе, что сказал пользователь, и, основываясь просто на этих ключевых словах пользовательского ответа, случайно выбирает вопрос из текущей рубрики. Если в текущей рубрике не найдено ни одно ключевое слово, система ищет ключевые слова в других рубриках и при нахождении их меняет текущую рубрику. Например, если в какой-либо рубрике темы "Языки программирования" есть слово "C++", которому соответствует вопрос "Сколько лет вы уже программируете на C++?", то программа задает этот вопрос. Остальные ключевые слова, которым соответствуют какие-либо вопросы, запоминаются и ставятся в очередь. Основываясь на ключевых словах (в примере это были слова С++ и РЕФАЛ), накапливается очередь вопросов.
Это пример контекстно-зависимого диалога. Программа, не основываясь на семантике, выбирает отдельные слова из пользовательского ответа. Этот анализ называют дескриптивно-рубрикационным. Недостатком такого подхода является то, что программа должна хранить огромное количество рубрик, поиск же по этим рубрикам занимает большое время. Такие системы не учитывают семантики и из-за этого могут неправильно отреагировать на ответ пользователя. К тому же, при таком подходе не может быть организован диалог, цель которого - принятие программой решений по его результатам, и, соответственно, значимость которого достаточно высока. Такие системы применимы в качестве игрушки, демонстрирующей возможности компьютера. Программа "Элиза" имела именно такое назначение. Достоинства этого подхода в том, что система может вести разговор с пользователем практически на любую тему, на которую написаны соответствующие рубрики. Кстати, наиболее популярным было использование программы "Элиза" в качестве психоаналитика.
- 5. Системы программирования
- 5.1. Введение в системы программирования
- 5.1.1. Основные понятия и определения
- 5.1.2. История и эволюция
- 5.1.2.1. Некоторые важные даты
- 5.1.2.2. Основные этапы в формировании состава систем программирования
- 5.1.2.3. История развития системы программирования компании Borland Inc. На базе языка Pascal
- 5.1.3. Классификация
- 5.1.3.1. Классификация по ориентации на поддержку процессов
- 5.1.3.2. Функциональная классификация
- 5.1.3.3. Классификация по категориям
- 5.1.3.4. Классификация по предоставляемому интерфейсу
- 5.1.4. Проблемы и перспективы развития
- 5.1.5. Рекомендации по литературе
- 5.2. Процесс-ориентированный инструментарий
- 5.2.1. Возникновение и исследование идеи
- 5.2.2. Управление
- 5.2.2.1. Системы управления проектами
- 5.2.2.2. Организационные средства
- 5.2.2.3. Средства оценки качества
- 5.2.3. Анализ требований и проектирование
- 5.2.3.1. Системы на основе структурной методологии
- 5.2.3.2. Системы на основе объектно-ориентированной методологии
- 5.2.4. Программирование (реализация)
- 5.2.4.1. Трансляторы
- 5.2.4.2. Компиляторы
- 5.2.4.3. Системы генерации трансляторов
- 5.2.4.4. Системы анализа корректности программного кода
- 5.2.4.5. Интерпретаторы
- 5.2.4.6. Декомпиляторы
- 5.2.4.7. Усложнители декомпиляции (шифраторы, обфускаторы)
- 5.2.4.8. Системы управления компиляцией и построением программ
- 5.2.5. Тестирование и отладка
- 5.2.5.1. Тестовые мониторы
- 5.2.5.2. Средства отслеживания тестового покрытия
- 5.2.5.3. Средства динамического построения профиля программы
- 5.2.5.4. Системы построения срезов программы
- 5.2.5.5. Отладчики
- 5.2.5.6. Системы отслеживания проблем (ошибок)
- 5.2.6. Ввод в действие
- 5.2.7. Сопровождение
- 5.2.8. Завершение эксплуатации
- 5.3. Универсальный инструментарий
- 5.3.1. Инструменты работы с текстом
- 5.3.1.1. Средства, базирующиеся на регулярных выражениях
- 5.3.1.2. Средства поиска различий
- 5.3.1.3. Средства поиска на основе шаблонов
- 5.3.1.4. Обозреватели и базы данных программ
- 5.3.1.5. Средства обнаружения плагиата
- 5.3.1.6. Текстовые редакторы
- 5.3.1.7. Синтаксически-ориентированные редакторы
- 5.3.1.8. Гипертекстовые средства
- 5.3.2. Системы документирования
- 5.3.3. Системы разработки интерфейсов
- 5.3.4. Системы управления базами данных
- 5.3.5. Системы управления базами знаний и экспертные системы
- 5.3.5.1. Системы искусственного интеллекта
- 5.3.5.2. Механизмы выводов на знаниях
- 5.3.5.3. Неточный вывод на знаниях
- 5.3.6. Электронные библиотеки и инструментарий Интернета
- 5.3.6.1. Парадигма усиления информации
- 5.3.6.2. Профессиональный поиск информации
- 5.3.6.3. Проблемы работы с информационными ресурсами Интернета
- 5.3.6.4. Коллекции информационных ресурсов в Интернете
- 5.3.6.5. Базы данных в Интернете
- 5.3.6.6. Краткая история поисковых средств Интернета
- 5.3.6.7. Искусственный интеллект и задача поиска в Интернете
- 5.4. Инструментарий поддержки процессов некоторых технологических подходов
- 5.4.1. Системы формального преобразования и верификации программ
- 5.4.2. Средства сборочного программирования
- 5.5. Инструментальные системы
- 5.5.1. Инструментальные среды программирования
- 5.5.2. Средства автоматизации разработки программ (case-средства)
- 5.5.3. Интегрированные среды
- 5.5.4. Репозитории проекта
- 5.6. Средства поддержки коллективной разработки
- 5.6.1. Системы разделения файлов
- 5.6.1.1. Система управления версиями файлов
- 5.6.1.2. Система управления пространствами
- 5.6.1.3. Система синхронизации удаленных пространств
- 5.6.2. Системы поддержки работы виртуальных групп
- 5.7. Естественно-языковый интерфейс
- 5.7.1. Диалоговые системы
- 5.7.2. Вопросно-ответные системы
- 5.7.3. Автоматизированные обучающие системы и системы контроля знаний
- 5.7.4. Системы искусственного интеллекта