С одной стороны, мы уже многое умеем. И построить систему, которая будет поддерживать «светский разговор», давно не составляет труда. В этом году приз Лёбнера (за псевдопрохождение теста Тюринга) получил бот Jabberwocky, с которым можно разговаривать часами. И голос синтезировать у нас тоже получается хорошо (правда, не только за счет технологий, но и за счет человеческой способности к узнаванию образов). С распознаванием речи, конечно, дела обстоят не ахти, но научимся и распознавать.
То есть построить диалоговый интерфейс с заданными командами на уровне «открой файл», «сохрани изменения» и «закрой файл» мы можем уже сегодня (и такие продукты есть).
Тем не менее остается еще один, самый главный кирпичик. Если мы хотим, чтобы общение с компьютером было продуктивным, компьютер должен нас понимать. Собственно, natural language understanding - это огромное междисциплинарное направление, на которое и отдельной темы номера не хватит, но не нужно быть семи пядей во лбу, чтобы прийти к очевидному выводу: построение эффективных речевых коммуникаций невозможно без нахождения обоих собеседников в одном и том же контексте.
В разделе, посвященном машинному переводу, мы приводили пример с коробкой в ручке, но вот другой пример, никак не связанный с переводами. Допустим, у нас есть компьютер, загруженный по самое не хочу словарями, семантикой, лингвистическими правилами, статистическими алгоритмами и прочая, и прочая, и прочая. Что он ответит на элементарный вопрос «есть ли вода в холодильнике?» Нормальный компьютер, конечно же, ответит, что вода в холодильнике есть. Во всяком холодильнике в любой момент времени можно найти множество молекул воды. На любой вкус. При этом компьютер не путает определения (как он делал в случае с «pen»). Формально он прав. Но мы-то спрашивали совсем о другом.
Человек, услышав тот же вопрос, сразу поймет, что имеется в виду не просто вода, а бутылка с минералкой. Иными словами, компьютер неправильно (с нашей точки зрения) отвечает на вопрос, хотя вся необходимая для ответа информация ему доступна.
Проблема в том, что речевая коммуникация - это не вещь в себе. Это верхушка айсберга, и если мы пытаемся подтянуть компьютеры до нашего уровня, то не можем усовершенствовать только их коммуникационные способности. Нельзя научить улитку французскому языку. И очень вероятно, что все описанные в статье задачи - распознавание речи, синтез текста, качественный машинный перевод - неразрешимы, пока не решена более глобальная задача: построение искусственного интеллекта.
Разработчики не любят говорить на эту тему. Задача создания ИИ давно уже табуирована. Но странное совпадение: сразу несколько исследовательских организаций (включая MIT Labs и Марвина Мински) работает сегодня над компьютерными программами (стоит ли называть их программами - тоже вопрос), обладающими зачатками здравого смысла и умеющими учиться. Они обучают нейросети простым, интуитивно понятным каждому человеку вещам. И не исключено, что когда-нибудь эти разработки действительно дадут нам возможность общаться с компьютером, не задумываясь о том, поймет он нас или нет.
В 1988 году Робин Бердженер (Robin Burgener) построил нейросеть для игры в «двадцать вопросов» (20Q.net). С тех пор сеть сыграла миллионы партий и теперь зачастую справляется с загадкой намного раньше двадцатого вопроса. Сам Бердженер уверен, что за это время сеть не только развила свои способности в угадывании, но и обрела некоторые личностные характеристики («у нее бывают дни, когда из рук все валится, а иногда она в ударе»).
Звучит фантастично? Пока - да.