Как ваш персональный цифровой помощник понимает, чего вы хотите (и добивается этого)

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

Это чудо легко рационализировать, сказав: «Ну, наш мозг - это просто самые продвинутые вычислительные структуры в известной нам Вселенной». Но как насчет «машин»? Вы когда-нибудь задумывались, как невидимый «персонаж» в вашем мобильном телефоне или умном динамике может понимать и выполнять задачи за вас? Конечно, они не так хороши, как мы, но в них меньше вычислительной мощности и сложности, чем у нас.

Я не могу объяснить, как я написал этот пост или как вы его читаете. Но я знаю, как ваш телефон помогает вам, и постараюсь объяснить это. Понимание, дорогой читатель, будет зависеть от вас.

СОДЕРЖАНИЕ

Почему язык такой чертовски сложный?

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

  • бесконечно творческий - одно и то же можно сказать по-разному [1]
  • структурированный - если вы выполните поиск в Google по запросу «коричневые перчатки», носители языка знают (благодаря грамматической структуре высказывания), что «оранжевые перчатки» будут более актуальными, чем «коричневый кошелек», но это не так просто для машины понять
  • логический - также имеет значение то, что не сказано. Если я буду искать «формальное платье», мы знаем, что я не приму результаты для «повседневное платье», но могу принять результаты для «вечерние платья». Но как машина должна это знать?
  • лексически и синтаксически неоднозначно - слова и структуры предложений иногда можно интерпретировать по-разному, что означает, что один поисковый запрос может соответствовать огромному количеству результатов, только некоторые из которых соответствуют намерениям пользователя.
  • на основе контекста - иногда единственный способ устранить неоднозначность лексически неоднозначного слова - через окружающие слова; кроме того, одно и то же слово может означать разные вещи для разных людей в зависимости от «контекста» их жизни.
  • «отрицательный» - это небольшая, но распространенная проблема при обработке естественного языка. Например, добавление «не» к предложению или саркастическая речь меняет все значение.
  • на основе мультимедиа: мы общаемся не только с помощью текста, но и с помощью голосовых сообщений, смайликов, хэштегов и т. д.

Если естественные языки настолько сложны, зачем встраивать их в наши технологии? Почему бы, например, не иметь фиксированных наборов фраз для каждого устройства, которые пользователи должны выучить, чтобы иметь возможность запрашивать определенные задачи?

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

Что такое персональный цифровой помощник?

Несмотря на то, что у него есть голос, «личность» и видимость «самосознания», внутри цифровой персональный помощник представляет собой просто программное приложение. В этой статье я немного антропоморфизирую такие фразы, как «помощник знает…» или «Siri пытается…», но это стилистический выбор и не должен подразумевать, что вещь, с которой вы взаимодействуете, способна думать или знать что-либо. вообще! Когда я говорю «помощник», я всегда имею в виду «приложение».

Цифровой персональный помощник ожидает пробуждающего слова, например «привет, Siri», чтобы активировать его. Затем он выполняет обработку естественного языка, чтобы преобразовать устный ввод в текстовое представление, и применяет понимание естественного языка, чтобы попытаться «понять» текст. Затем он пытается выполнить задачу за вас, передав понятную информацию различным API. API - интерфейс прикладного программирования - это интерфейс между различными программами, например, между цифровым персональным помощником и веб-сайтом погоды. API определяет, как две программы могут «общаться», например какие запросы могут быть сделаны, какая информация требуется для каждого запроса и как это должно быть написано. Как только API возвращает результат, генерация естественного языка обычно предназначена для преобразования информации в более удобный текст или речь.

Что такое обработка естественного языка? А НЛУ? А NLG?

Хорошо, давайте проясним некоторые из введенных выше терминов.

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

НЛП может включать в себя такие шаги, как:

  • Автоматическое распознавание речи: преобразование речи в текст, которое преобразует входящие звуковые волны в текст. Модели ASR строятся с использованием машинного обучения, показывая модели тысячи пар входных звуковых волн и выходных предложений и позволяя ей изучать соответствия.
  • Токенизация: означает разделение вводимого текста на отдельные слова, также известные как «токены». (Назначение машинного обучения: большинство алгоритмов принимают входные данные как серию отдельных токенов).
  • Создание основы: включает удаление окончаний слов, чтобы оставить только основу слова. (Цель машинного обучения: уменьшить вычислительную нагрузку за счет уменьшения количества словаря, который необходимо обработать; повысить производительность за счет обеспечения единообразного представления всех слов, что также увеличивает количество обучающих примеров, содержащих каждую основу).
  • Обратите внимание, что при выделении корней не всегда получается грамматическое слово. Например, преобразование множественного числа существительных в единственное число может быть выполнено путем удаления суффикса -s, но это не сработает для неправильных английских существительных. Таким образом, мы получаем: собаки → собака, но страны → страна и женщины → женщины. Подобные проблемы возникают и на других языках. Например, в немецком языке многие существительные во множественном числе могут быть преобразованы в единственное, удалив -en или -er, но неправильные существительные тоже создают проблемы. Таким образом, мы получаем Frauen → Frau (Женщины → Женщина), что правильно, но Bücher → Büch (Книги → Книга, где последнее должно быть написано как Buch ).
  • Лемматизация: означает преобразование каждого слова в стандартную форму. Опять же, примером может быть сокращение множественного числа существительных до единственного, но с лемматизацией результатом также должно быть грамматическое слово. (Назначение ML: как указано выше).
  • Тегирование части речи: означает присвоение грамматических ролей, таких как «существительное», «глагол» или «прилагательное», каждому слову в предложении. (Цель машинного обучения: части речи могут быть полезными функциями ввода для различных языковых задач).
  • Распознавание именованных сущностей: присвоение ярлыков "человек", "место", "организация", "дата / время" релевантным словам в предложении. (Назначение ML: как указано выше).

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

Также обратите внимание, что НЛП не обязательно включает все вышеперечисленные шаги. Фактически, современные нейронные языковые модели редко используют такие функции, как теги части речи. Это потому, что они достаточно мощны, чтобы принимать неаннотированный языковой ввод и самостоятельно узнавать, какие функции во вводе полезны для выполнения поставленной задачи.

После завершения конвейера НЛП и обработки высказывания пользователя обычно выполняются следующие шаги:

  • Понимание естественного языка: пытается извлечь ценную информацию из (обработанных) человеческих высказываний, чтобы выполнить их запросы. Эта область сочетает в себе искусственный интеллект, машинное обучение и лингвистику, чтобы компьютеры могли «понимать» и использовать человеческий язык. Мы рассмотрим это в следующем разделе.
  • Генерация естественного языка: включает создание текста, похожего на человеческий. Это можно сделать с помощью автоматизированных правил (для простых, ограниченных, повторяющихся контекстов, таких как создание отчетов о погоде на основе данных о погоде) или с помощью нейронной сети, специально обученной для генерации текста.
  • Синтез речи: преобразование текста в речь - это, конечно, процесс создания синтетического голосового звука из текста. Модели обучаются так же, как модели ASR, хотя, конечно, входные и выходные последовательности противоположны.

Как работает понимание естественного языка?

Прежде чем обсуждать «как», давайте продемонстрируем NLU в действии. Какое слово первое приходит вам в голову, когда вы читаете следующее?

«Привет, Siri, закажи мне ...»

Большинство людей ответят что-то вроде «рейс», «отпуск» или «номер в отеле». И Google тоже:

Что тут происходит? Что ж, у всех нас в голове есть языковая модель, которую наш детский мозг учил автоматически, проводя статистические измерения того, какие слова встречаются в различных жизненных ситуациях, а также в синтаксических и лексических контекстах [2]. У поисковых систем и других языковых технологий также есть языковые модели, которые они приобрели с помощью машинного обучения.

Когда вы делаете голосовой запрос на свой телефон, происходит следующий процесс:

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

Во время Обнаружения домена цифровой персональный помощник пытается классифицировать область помощи, которая требуется пользователю, например полеты, погода или личные услуги (например, стрижка).

Обнаружение намерения аналогично определяет, что пользователь хочет сделать. Например, если мы находимся в домене полета, они хотят забронировать рейс или просто получить информацию о рейсе?

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

Обнаружение домена, обнаружение намерений и заполнение слотов выполняются с помощью моделей машинного обучения. Для каждой задачи необходимо снабдить алгоритм обучения текстовыми представлениями тысяч или миллионов пользовательских высказываний с соответствующими метками целевой метки (меток): намерения, и / или домена, и / или слотов. Я говорю и / или потому, что, хотя можно построить одну модель для каждой задачи, так что для каждой входной последовательности потребуется только один вид метки, более распространено обучение модели для выполнения нескольких задач. Это называется многозадачным обучением.

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

Возьмем пример.

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

На этом этапе помощник знает, что ему нужно будет заполнить некоторые слоты, такие как «город отправления», что он делает, как вы продолжаете с «… из Сан-Франциско в Лондон». Теперь он может запрашивать семантический фрейм и передавать соответствующую информацию в API, такой как поиск рейсов Kayak.

API возвращает свои результаты, и, наконец, используется генерация естественного языка для преобразования их обратно в понятный человеку текст или синтезированную речь.

Заключение

Вот и все - как ваш персональный цифровой помощник знает, чего вы хотите, и делает это за вас. Простой? Нет. Замечательный? Я так думаю.

О, и я новичок в этой «средней» вещи. Итак, если вам понравился этот пост, вы знаете, что делать. ;)

  • [1] Изменчивость языка, вероятно, является причиной того, что Google получает пятьсот миллионов уникальных запросов каждый день.
  • [2] Процесс изучения второго языка отличается от процесса изучения первого языка, особенно по мере взросления, но общий тезис о языковой модели в нашей голове остается неизменным.