Что означает репрезентация в НЛП?
Основное содержание этого поста взято из выступления Марьяны Романишин на ODSC Europe 2019. Вы можете ознакомиться с выступлением прямо здесь.
Введение в смысловое представление
Как мы понимаем смысл предложения? Мы должны знать значение слов, как слова связаны друг с другом, контекст предложения и мир вокруг нас (недостаточно используемый, но важный). Некоторые основные приемы обучения компьютера пониманию корпуса человеческого языка (предложений, абзацев или статей). Возьмем это предложение в качестве примера:
Дети хотели съесть все печенье. Они восхитительны.
Мешок слов (BoW)
BoW подсчитывает частоту слов в корпусе. А частота — это единственное измерение, которое сообщает компьютеру, что такое корпус. Это полезно для тематического моделирования (или классификации текста), но также степень детализации этого представления довольно высока, поэтому мы не можем выполнять другие сложные задачи НЛП, такие как суммирование текста или задачи с ответами на вопросы.
Кроме того, даже для задачи классификации текста могут возникнуть сложности. Представьте себе другое предложение с тем же набором слов, но написанное так:
Печенье хотели съесть все дети. Они восхитительны.
Представленный методом BoW корпус может иметь такой же результат. Но предыдущее предложение явно относится к документальной литературе, а второе — скорее к художественной литературе.
Синтаксический анализ
Сначала мы определяем тег Part of Speech (PoS) для каждого слова в предложении, а затем пытаемся смоделировать структуру зависимости. Таким образом, мы кодируем больше информации в репрезентацию, чтобы знать, что главное событие в предложении — это ребенок → хочет → есть. Более подробное объяснение парсинга зависимостей находится здесь в моем предыдущем блоге.
Недостатком этого является то, что отношения между фактическим значением предложения и структурами зависимостей являются многими ко многим. Если мы, люди, перефразируем предложение с тем же значением, компьютер, скорее всего, увидит в нем другую структуру.
Мы хотим, чтобы компьютер действительно понял смысл. Чтобы пояснить на том же примере, нам нужен формализм, который может отфильтровывать парафразы и идентифицировать модификацию, которая изменяет основное значение.
Дети хотели съесть все печенье.
Печенье хотели съесть все дети.
Детское желание – съесть все печенье.
Семантический анализ
Существует много формализмов представления смысла:
- типизированные выражения лямбда-исчисления (широко используемые в области ответов на вопросы)
Идея лямбда-исчисления состоит в том, чтобы произнести предложение через логическое выражение. На приведенном ниже рисунке мы видим, что он определяет любого дочернего элемента как x и любой файл cookie как y, а затем описывает главное событие «хочу» с последующими отношениями между определенными переменными (x и y).
Достоинство этого формализма в том, что мы можем сформировать базу знаний (БЗ) множества «истин». Получив вопрос типа «Какая столица Германии» или любую подобную перефразированную версию, мы можем разобрать их в уникальное логическое выражение и поискать ответы в базе знаний.
- маркировка семантической роли (для извлечения информации)
Это также называется поверхностным семантическим разбором, который определяет, кто сделал что с кому. Элементы кто/что/кого сосредоточены вокруг основного глагола. В приложении для извлечения информации (интеллектуальный анализ текста), где мы хотим найти все действия и объекты вокруг этого действия, мы можем использовать эту технику.
Примером может быть: имея корпус, содержащий всю серию Гарри Поттера, мы хотим проанализировать его и извлечь все события, когда Лорд Волан-де-Морт наложил на кого-то заклинание.
Семантические роли вместе с событием называются фреймами. Фрейм определяет все возможные роли слов в предложении. Проект PropBank посвящен созданию таких фреймов, которые помогают улучшить семантическое представление.
Полезная исследовательская библиотека НЛП: AllenNLP
Представление абстрактного значения (AMR)
Во-первых, каждое предложение является корневым ориентированным ациклическим графом, где
- узлы - это понятия
- ребра - это семантические отношения
- служебные слова опущены
Интуиция дизайна состоит в том, чтобы устранить двусмысленность, вызванную синтаксисом или красноречием, и сосредоточиться только на фактическом значении.
Прошу извинить меня.
AMR для этого предложения описывается следующим образом:
«Я» и «меня» представляют одно и то же понятие, поэтому для этого есть только один узел. «to» опущено, потому что служебные слова не влияют на его значение. Поскольку эти узлы AMR должны отражать концепции, за этим следует множество достоинств. AMR может справиться со многими ситуациями, например,
- смысловые роли
- типы объектов
- кореференция (Лорд Волдеморт/Сам-Знаешь-Кто/Тот-Кого-Нельзя-Называть)
- модальность
- полярность (отрицание в таких предложениях, как «Погода нехорошая»).
- Викификация (связь между статьями Вики для обозначения одной и той же концепции)
обозначение AMR
Каждому узлу AMR назначается переменная. (для простоты возьмите первую букву слова в качестве имени переменной) Для одного и того же предложения мы можем видеть, что мы повторно используем переменные «i» и «y».
Слово после двоеточия, например :arg0, :arg1, :arg2), является фиксированным отношением для AMR. Согласно оригинальной бумаге, AMR использует около 100 отношений:
- Аргументы кадра в соответствии с соглашениями PropBank: (:arg0, :arg1, :arg2, :arg3, :arg4, :arg5)
- Общие семантические отношения: (:сопровождающий, :возраст, :бенефициар, :причина, :по сравнению с,
:уступка, :условие, :состоит из, :степень, :назначение, : направление, : домен, : продолжительность) - Отношения для количеств: (:quant, :unit, :scale)
- Отношения для элементов даты: (:день, :месяц,
:год, :день недели, :время, :часовой пояс, :квартал,
:деньпериод, :сезон, : год2, :десятилетие, :век, :календарь, :эра) - Отношения для списков: (:op1, :op2, :op3, :op4,
:op5, :op6, :op7, :op8, :op9, :op10)
Разбор AMR
Существует два основных алгоритма синтаксического анализа: синтаксический анализ на основе графа и синтаксический анализ на основе перехода.
Для синтаксического анализа на основе графа мы должны сначала идентифицировать понятия, а затем идентифицировать отношения между понятиями. Для этой задачи можно использовать открытый парсер JAMR.
Для синтаксического анализа на основе перехода мы в основном используем сходство между структурой зависимостей и AMR. А затем преобразуем дерево зависимостей в AMR. Это тоже в два этапа: сначала пройти по дереву зависимостей; затем на каждом узле/ребре прогнозируйте действия на основе функций. Могли бы использовать для этой задачи анализатор CAMR.
AMR - это предикат-аргумент. Из приведенного выше AMR мы знаем, что главным событием является «кто-то что-то рисует», а некоторые другие концепции зависят от «чего-то». Кроме того, действие должно указывать от ARG0 до ARG1 на всех уровнях.
На ней изображен удав-удав, переваривающий слона.
Ты понял?:)
Приложения УПП
Я цитирую пару работ здесь для дальнейшего чтения:
- Машинный перевод на основе семантики, ссылка
- Обобщение абстракций (обзор SOTA), ссылка
- Сжатие текста (преобразование текста в текст), ссылка
Использованная литература:
- https://aclanthology.org/W13-2322.pdf
- https://www.youtube.com/watch?v=uCZ9nAe76Ss
- https://amr.isi.edu/
- https://github.com/jflanigan/jamr