Инженер-программист (диалоговые системы). М. М. Зимнев
Традиционным режимом взаимодействия человека с электронно-вычислительной машиной является пакетный. При этом программист пишет программу на формализованном языке программирования, программа "набивается" на перфокарты, из них составляется "колода", которая передается оператору ЭВМ. Он вкладывает "колоду" перфокарт в устройство ввода, и машина работает по введенной программе. Результаты работы распечатываются на листах бумаги, которые возвращаются программисту (в лучшем случае через несколько часов). Это очень неудобно, потому что программист должен заранее предусмотреть все возможные варианты работы ЭВМ и приготовить всю необходимую информацию, к тому же для внесения небольших изменений или исправления мелких ошибок необходимо повторить цикл операций заново.
Современным способом работы с электронно-вычислительной машиной является диалоговый, при котором программист, работая непосредственно за терминалом, управляет работой ЭВМ, сообщает необходимую ей информацию и делает запросы о ее работе. Средствами, сделавшими возможным такой режим работы, стали многопрограммный режим работы ЭВМ, при котором все программисты работают как бы независимо и одновременно, и терминалы. Большую роль в развитии диалоговых систем сыграло и появление микроЭВМ - персональных компьютеров. При диалоговом, режиме исчезают промежуточные бумажные носители информации: перфокарты, "распечатки" программ и др. Программист непосредственно работает с ЭВМ, вводя информацию с помощью клавиатуры и наблюдая на экране ответы машины в текстовой или графической форме.
Каким же должен быть диалог? Каковы правила обмена сообщениями для наиболее эффективной работы человека и ЭВМ? На каком языке они должны "разговаривать"? Как строить диалоговые системы, чтобы их мог использовать любой пользователь-специалист, незнакомый с программированием? Вот проблемы, которые приходится решать инженеру-программисту, разработчику диалоговых систем.
Разработчик диалоговых систем должен владеть основами инженерной психологии, изучающей проблемы взаимодействия человека и техники; прикладной лингвистики, изучающей возможности использования языка для решения практических задач, а также знаниями, необходимыми каждому программисту: принципами построения ЭВМ, теорией алгоритмов, математической лингвистикой, современными языками программирования и др. Необходимо также понимать специфику задач конкретной предметной области, в которой будет работать диалоговая система.
Построение диалоговых систем - это нахождение компромисса между многими противоречивыми факторами: между требованиями заказчика к системе и уровнем развития технических средств ее реализации, адекватностью действий системы реальной обстановке и ограниченностью формальной модели, ориентацией языка взаимодействия с системой на неподготовленного пользователя и недопустимостью замедленной реакции системы при обработке сложных запросов.
Основная трудность в работе разработчика диалоговых систем состоит в ее многоплановости и универсальности. Разработчик должен охватывать все этапы построения системы: составление проекта (предугадывая возможные изменения в требованиях заказчика), анализ предметной области, построение формальной модели, выбор методов представления знаний, разработку алгоритмов системы и организацию диалога пользователя с системой.
Эта профессия предъявляет ряд требований к ее представителям. Разработчик диалоговых систем должен уметь быстро ориентироваться в задачах конкретных предметных областей; находить общий язык с представителями других областей знания; представить реакцию пользователя при работе с системой.
Диалоговый режим изменяет стиль работы не только программистов, но и пользователей вычислительной техники. ЭВМ становится непосредственным интеллектуальным помощником, усиливающим способности человека по обработке и накоплению большого количества информации, которому можно поручить значительную часть черновой работы, используя принцип: "Машина должна работать, а человек - думать".
В настоящее время основной проблемой при построении диалоговых систем является проблема выбора наиболее эффективного способа взаимодействия человека и ЭВМ. Развитие современной вычислительной техники характеризуется приближением ее к пользователю, в частности, приближением языков, воспринимаемых ЭВМ, к профессиональному языку специалиста предметной области. Это отражается также и в способах взаимодействия человека и.- диалоговых систем на разных этапах короткой еще истории их появления и развития.
Первым и до сих пор наиболее распространенным способом ведения диалога является диалог с формальными правилами ответа на запрос ЭВМ. Вот пример запросов с перечислением возможных вариантов ответа, называемый "меню":
ЭВМ: Выберите подсистему:
1. Игра в шахматы
2. Посадка на Луну
3. Крестики-нолики
Человек: 1.
После ответа "1" ЭВМ переходит к алгоритму игры в шахматы и может предложить выбрать цвет фигур.
ЭВМ: Выберите цвет фигур:
1. Белые
2. Черные
Человек: 2.
И далее система сообщит свой первый ход и будет ждать ответного хода.
По мере накопления опыта построения систем с формальным языком общения выработался определенный свод правил, которого следует придерживаться при работе с такими системами. Например, машина должна помочь, если человек не знает нужного варианта ответа и запрашивает: "Помоги". После такого запроса о помощи ЭВМ должна объяснить правила ввода сообщений и напечатать список возможных ответов. Лучшие системы могут объяснить свои действия, отвечая на запрос пользователя "Почему?".
Однако диалог с формальными правилами неудобен и длителен при работе с большим количеством разнообразных запросов, на которые опытный пользователь мог бы дать ответ сразу. Так появились системы, воспринимающие некоторые предложения естественного языка. Как правило, это системы, работающие в очень узкой ограниченной предметной области, в которой можно описать правила анализа несложных предложений с небольшим набором терминов. Вот пример работы системы ПОЭТ (Э. В. Попов и др.), ведущий диалог с пользователем в области транспортных перевозок.
Пользователь: Какие перевозки водным транспортом были совершены в 1970 году?
Система: Слово "водным" отсутствует в словаре системы. "Водным" понято как характеристика транспорта.
Пользователь: Что известно о видах транспорта?
Система: Различаются следующие виды транспорта: морской, речной, автомобильный и железнодорожный.
Пользователь: Какие перевозки угля морским и речным транспортом совершены в 1970 году?
Система: В 1970 году совершено 5715 перевозок морским и речным транспортом. Надо перечислять все?
Пользователь: Нет. Как система классифицирует перевозки?
Система: Перевозки классифицируются по: отправителю, получателю, виду груза, объему груза, времени.
Системы, понимающие такие предложения и способные формировать свои ответы в виде предложений естественного языка, должны обладать значительными сведениями о правилах доставления русских предложений, о значениях слов и их различных сочетаний, а также иметь модель знаний предметной области, без которых она не могла бы ни выполнить нужных действий, ни даже понять смысла предложения.
Построение диалога на естественном языке без всяких ограничений в настоящее время не представляется возможным. Естественный язык отличает неоднозначность толкования, как отдельных слов, так и структур предложений.
Основной проблемой построения диалоговых систем является проблема представления знаний, которая возникает также при построении систем "искусственного интеллекта". Для того чтобы ЭВМ была действительно интеллектуальным помощником человека и могла выполнять сложные действия по обработке и накоплению информации, имитации мыслительной деятельности, принятию оптимальных решений в сложных ситуациях с большим количеством параметров, необходимо хранить в ее памяти множество фактов, отношений и зависимостей между объектами реального мира. Возникают проблемы: как описать знания о внешнем мире, как организовать хранение этих знаний в памяти системы, как изменять и пополнять их по мере обучения системы в процессе работы. Уже построено несколько способов описания структурированных знаний, опирающихся на различные методы математической логики, но они не являются универсальными для широкого круга задач.
Тесно связанной с проблемой представления знаний является и вторая основная проблема построения диалоговых систем - проблема лингвистического обеспечения диалога на естественном языке. Исследование способов представления знаний о языке для использования их в ЭВМ смыкается с одним из новых направлений в современной лингвистике - структурной лингвистикой. Однако полное представление языковых конструкций в виде формализованных структур еще не построено.
Диалог является составной частью многих типов систем: автоматизированных систем управления, систем автоматизированного проектирования, автоматизированных систем технологической подготовки производства, систем управления базами данных, экспертных систем и др. Поэтому разработчики диалоговых систем работают всюду, где эти системы создаются: в НИИ, вычислительных центрах, научно-исследовательских лабораториях вузов и т. д.
Разработка крупных диалоговых систем ведется большими коллективами программистов, что требует умения работать в коллективе и, по мере роста квалификации, умения руководить людьми.
Профессия инженера-программиста, разработчика диалоговых систем, еще очень молода, и не существует единой специальности, охватывающей все аспекты проблемы. Подготовка по некоторым из них ведется на математических факультетах вузов по специальностям "Теоретическая кибернетика", "Прикладная математика", "Математическая лингвистика".