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

- Джаред Даймонд, Guns, Microms & Steel

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

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

Представление смысла

Давайте посмотрим, как машина может «понимать» естественный язык и извлекать абстрактное представление «значения», с которым она может работать.

Простая диаграмма иллюстрирует основные компоненты.

Слева собираем ввод. Голосовой или текстовый ввод поступает в декодер, где ввод обрабатывается в несколько этапов для извлечения представления, которое может понять машина. Весь этот процесс называется пониманием. Результатом этого процесса декодирования является Значение.

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

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

Нарушение понимания

Две попытки уловить значение в исследовательской и академической среде - это логические формы и абстрактное представление смысла (AMR). В Ozlo мы придерживаемся весьма скромных целей, нам не требуется полностью определенное «представление значений», которое способно объединить все аспекты естественного языка в деревья значений, вместо этого мы выбираем области, которые имеют отношение к предметным областям и возможностям продукта. Мы не стремимся быть универсальным чат-ботом, поэтому мы можем начать с более простых элементов представления смысла и постепенно наращивать, добавляя более сложные элементы естественного языка по мере необходимости.

Нам сразу пригодятся два метода:

  1. Моделирование концепций. Понятия - это смысловые единицы значения, которые понимает Озло. В каждой области, о которой знает Озло, например о еде или фильмах, есть концепции, которые помогают ему помещать высказывания в контекст. В сфере питания Озло должен знать, что такое кухня и пищевые предпочтения.
  2. Моделирование действий. Они охватывают довольно широкий диапазон от моделирования типа вопросов до детального понимания фактических действий глагола. Некоторые примеры:
    - команда - например, сделай что-нибудь, получи что-нибудь
    - вопросительные вопросы - например, спрашивать об объектах или их атрибутах
    - утверждения - например, выражая предпочтения, приветствия, приветствия и т. д.

Семантическое понимание

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

Давайте возьмем пример пользовательского ввода и поработаем с различными компонентами.

where can I get a pizza ?

Токенизация

Пользовательский ввод - это необработанный текст (его можно получить из текстового интерфейса или транслитерировать из голоса в текст). Это выполняется через структуру токенизации, чтобы получить набор токенов (или слов). Токенизация примера будет выглядеть так:

Аннотации

На этом этапе механизм понимания присоединяет расширенные метаданные к токенам, сгенерированным на предыдущем этапе. Метаданные, прикрепленные к промежуткам токенов, предоставляют богатый сигнал для различной обработки в нисходящем направлении. Двумя наиболее важными составляющими метаданных, которые мы прикрепляем, являются теги частей речи (POS) и категориальные теги или теги NER. Мы создали собственный POS-теггер, который специально обучен структурам высказываний, которые тщательно настроены на высказывания в наших областях и опыте работы с продуктом. Это позволяет нам создать POS-теггер, который имеет очень высокую точность для интересующих нас высказываний и довольно хорошо справляется с вводом на более общем языке.

Ниже приведен фрагмент созданных нами меток аннотаций. Это небольшое подмножество всего множества меток, также обратите внимание, что процесс аннотации может работать в нескольких диапазонах токенов (множественные сегменты входного высказывания):

Парсер

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

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

Возвращаясь к нашему примеру, анализ группы клиентов дает результат, который выглядит следующим образом:

Значение поколения

С помощью анализа постоянных мест у нас теперь есть полное синтаксическое представление входного высказывания, которое фиксирует как синтаксические единицы (теги POS), так и отношения между этими элементами (составная структура).

Затем Озло объединяет эту синтаксическую структуру с семантическим пакетом информации для создания грубого представления смысла.

Дерево Представление смысла представлено как структура данных семантически обозначенный аргумент-предикат. Эта структура данных предикат-аргумент основана на структуре аргументов предиката в лингвистике, но не совсем то же самое.

В нашем примере получается следующая структура данных Predicate-Argument.

Настроение, тип вопроса и semanticBag на рисунке 5 - это выводы, которые мы делаем и на основе синтаксической структуры, и на основе семантических аннотаций, которые мы можем извлечь из частей высказывания.

Эта структура данных Аргумент-предикат - это то, что мы называем артефактом Представление смысла, создаваемым уровнем понимания.

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

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

Что происходит за гранью понимания

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

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

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