В предыдущих двух статьях мы говорили об общем НЛП (https://medium.com/@umbertofontana/nlp-part-1-introduction-to-nlp-e686611da3da) и о том, как мы можем преобразовывать слова в числа так, чтобы также машина может понимать наш словарный запас (https://medium.com/@umbertofontana/nlp-part-2-words-representation-d0791d6da89d). В этой части мы собираемся расширить предыдущую концепцию на встраивание предложений. После этого мы готовы приступить к практике и реализовать нашу первую Систему НЛП!

От слов к предложениям

Теперь мы знаем, что машина может понимать слова, которые мы ей посылаем, но достаточно ли этого? Что ж, если бы это было так, эта глава закончилась бы здесь. Но давайте посмотрим, почему. Проблема работы только со словами (или n-граммами, мы о вас не забыли) заключается в том, что не учитывается контекст слов. Возьмем предложение «Наземный диспетчер — майору Тому» и «Майор Том — наземному диспетчеру». Оба получают одно и то же представление в этих подходах, но с разными значениями (в одном случае наземный диспетчер хочет уведомить о начале обратного отсчета, а в другом случае майор Том хочет, чтобы наземный диспетчер знал, что он входит в дверь).

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

Doc2Vec

Да, изобретательность в обзывательствах не самая яркая, но годится. Это была первая попытка обобщить Word2Vec для работы с последовательностями слов, и она основана на векторной модели абзаца. Предлагаются архитектуры двух типов, очень похожие на архитектуры CBOW и SkipGram Word2Vec, и они называются распределенная память (DM) и распределенный пакет слов (DBOW).

Расширение очень простое: каждый абзац сопоставляется с уникальным вектором (представленным столбцом в матрице D), и каждое слово также сопоставляется с уникальным вектором (представленным столбцом в матрице W). С более красивыми терминами мы можем сказать, что токен абзаца можно рассматривать как еще одно слово ввода. Вместо этого в архитектуре CBOW в качестве входных данных дается только вектор абзаца, а векторы слов усредняются или объединяются для предсказания следующего слова в контексте.

Векторы пропуска мыслей

Эта модель структурирована как модель кодер-декодер. Кодер используется для отображения предложений в векторе, в то время как декодер (на самом деле у нас есть два декодера) из вывода кодировщика пытается сгенерировать предыдущее и следующее предложение. Идея состоит в том, что предложения, имеющие общие семантические и синтаксические свойства, таким образом сопоставляются с аналогичными векторными представлениями. И кодировщик, и декодер реализованы с помощью рекуррентных сетей. Декодер должен обусловливать кодер. Когда декодер предсказывает предыдущее и следующее предложение, он отправляет декодеру обратную связь, если он дал достаточную информацию по задаче (данные, которые дал мне ваш кодировщик, достаточны для понимания контекста или нет?!). С математической точки зрения, обучение декодеров направлено на минимизацию ошибки реконструкции предыдущего и последующего предложений встроенного предложения. Затем эта ошибка реконструкции передается обратно кодировщику, побуждая его включить ценную информацию о текущем предложении.

InferSent

Эта модель была предложена исследователями Facebook, и ее цель состоит в том, чтобы изучить универсальные представления предложений, используя контролируемые данные из наборов данных Stanford Natural Language Inference (SNLI), которые содержат 570 тысяч пар английских предложений, сгенерированных человеком, вручную помеченных как entailment<. /em>, противоречие или нейтральный. Основная идея состоит в том, чтобы использовать обученную модель Natural Language Inference (NLI) для изучения универсальных представлений предложений, которые охватывают универсально полезные функции. Задача NLI состоит в определении отношения вывода между двумя короткими упорядоченными текстами с тремя метками следствия, противоречия или нейтральности.

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

Оставайтесь с нами, следите за новыми материалами и до встречи на другой стороне!