Мы находимся на пороге революции в способности компьютеров общаться с нами на человеческих языках. Давняя мечта первых пионеров программного обеспечения, эта возможность оставалась недостижимой более четырех десятилетий.

Эта проблема является одной из самых сложных, стоящих перед компьютерной наукой, и многие попытки ее решения потерпели неудачу. Часть проблемы заключается в том, что такие языки, как английский, феноменально сложны и до смешного неоднозначны. Одно слово может иметь несколько значений; одно значение может иметь несколько слов; часто мы опускаем слова, потому что знаем, что они не нужны адресату; и часто мы фактически не в состоянии общаться, даже когда мы думаем, что были точны. В некоторых тестах на понимание естественного языка люди показывают худшие результаты, чем машины!

Теперь в нашем распоряжении действительно хорошие данные для разбора слов и сопоставления их с частями речи и значениями. У нас также есть действительно хорошие алгоритмы машинного обучения, которые могут использовать огромные объемы текста для создания статистических моделей для естественного языка. Но наши лучшие системы естественного языка по-прежнему не могут следовать нормальному человеческому разговору.

Одна из ключевых причин, по которой компьютеры так плохо понимают человеческий язык, заключается в том, что им не хватает контекста. С того момента, как мы родились, мы начали собирать общий контекст. Некоторые из этих контекстов являются общими для всех людей, некоторые — для людей одной национальности, религии, образования… Общий контекст между близкими друзьями может быть настолько глубоким и таким широким, уходящим в прошлое на годы или даже десятилетия, что одно слово может вызвать оба громко смеются над какой-то общей историей, связанной с этим словом.

Мы полагаемся на этот общий контекст и многие другие невысказанные подсказки, чтобы определить, что на самом деле означают произносимые слова. Когда я использую «42» в середине предложения, есть большая вероятность, что я имею в виду событие в романе Дугласа Адамса, а не произведение семи и шести.

Когда мы начинаем разговор с незнакомцем, наши первые предварительные вопросы часто являются попыткой найти общий контекст, на котором мы можем основывать остальную часть нашего разговора. «Где вы ходили в школу?», «Где вы работаете?», «Вы знаете…»

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

Компьютерам не хватает общего контекста; они не знают мира, культур, религий, языков, истории и географии… они не ходили с нами в школу, они не слышали эту песню, они не могут видеть, как мы улыбаемся, они даже не могут видят, что в данный момент мы заняты разговором с кем-то другим, и в результате они с треском не понимают того, что мы им говорим.

Традиционные подходы к пониманию естественного языка рассматривают каждое высказывание отдельно, иногда они даже не отслеживают разговор до этого момента. Когда они используют слово «Оно» для обозначения предыдущей концепции, они понятия не имеют, что мы имеем в виду. У них память короче, чем у пресловутой золотой рыбки.

Им также не хватает всего контекста, который мы получаем от других наших чувств: зрения, обоняния, осязания, температуры… и у них нет чувства времени или того, когда уместно или неуместно говорить.

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

Конечно, мы уже много лет миримся с контекстуальной грубостью компьютеров. Windows с радостью крадет фокус из документа, который я печатаю, чтобы открыть модальное диалоговое окно «Доступно обновление системы», когда она могла бы легко дождаться подходящего момента (есть даже Windows API, который упрощает это реализовать, но никто этого не делает) .

Что нам нужно сделать, чтобы создать следующее поколение разговорных личных помощников, которые будут более мощными и более дружелюбными, так это дать им контекст.

Для понимания естественного языка потребуется использовать обширные базы данных, основанные на здравом смысле и фактических знаниях; ему нужно будет помнить разговоры, которые мы вели с ним в течение месяцев и лет; и для этого потребуется сенсорное осознание того, что происходит вокруг меня прямо сейчас. Понимание естественного языка, машинное зрение и интернет вещей действительно должны объединиться, чтобы решить эту проблему.

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

Контекст решает!

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