Это вторая часть серии руководств по обработке естественного языка для начинающих. Чтобы познакомиться с НЛП, ознакомьтесь с первой частью.

Вступление:

Позвольте мне рассказать вам историю.

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

В этом посте мы увидим, что когда мы пытаемся подойти к задаче НЛП (а также к большинству задач машинного обучения), мы должны вести себя как Тим.

1. Предварительная обработка:

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

При этом мы можем ссылаться на два основных типа данных:

  1. Структурированные данные: информация с заранее определенной структурой, которая обычно представлена ​​в числовом виде, но может также включать текст (например, для обозначения классов). Хорошим примером является таблица SQL. SQL - это стандартный язык для хранения, обработки и извлечения данных в базах данных. Это означает, что данные структурированы и связаны с помощью разных столбцов. На рисунке 1 мы видим 2 столбца, которые могут принимать числовые значения (EmployeeId и DepartmentId) и два других для текстовой информации (LastName и Страна).
  2. Неструктурированные данные. Это большая часть общего объема данных, которые мы потребляем и производим каждый день: информация, не имеющая четко определенной систематической структуры. Когда мы имеем дело с естественным языком, мы имеем дело с неструктурированными данными: мы не можем указать универсальную структуру или неизменный диапазон значений, которые может иметь предложение (в отличие от примера выше).

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

Когда Тим удаляет поврежденные или неиспользуемые части из своего набора, это называется этапом предварительной обработки, на котором он пытается выбрать полезные части для процесса сборки. Когда мы предварительно обрабатываем данные, в НЛП мы называем это нормализацией текста или подготовкой данных, поскольку мы пытаемся каким-то образом «нормализовать» элементы нашего корпуса.

Следующие сообщения будут охватывать каждый из различных инструментов, которые можно применять на каждом этапе, но, ради аргументации, если у нас есть и cat, и cats в нашем корпусе , нам было бы интересно их нормализовать, объединив оба термина в cat (это, как мы увидим, называется стеммингом). Другими примерами могут быть разбиение корпуса на разные предложения или удаление URL-адресов и других элементов, которые могут присутствовать в нашем корпусе и могут не представлять нашего интереса для данной задачи.

2. Структурирование:

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

  • объекты, присутствующие в тексте. Например, предположим, что наш корпус включает несколько стран, имена людей, товарные знаки или животных, которые мы хотим определить как разные элементы.
  • намерения или действия, написанные пользователями. Представьте, что наш корпус состоит из онлайн-бронирования авиабилетов от разных пользователей, тогда намерениями будут действия или варианты, которые могут быть доступны пользователю. В этом контексте bookRequest (с такими предложениями, как: 'Я хочу забронировать рейс, пожалуйста'), setBookingDate (например, ' Есть ли доступное бронирование на завтра? ») или saveBookingProcess (например, « Я хочу продолжить позже. Пожалуйста, сохраните его ») будут примерами намерений.

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

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

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

3. Анализ:

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

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

Хороший способ определить, что вам нужно сделать на этом этапе, - спросить себя: что мне нужно делать со структурированными данными для достижения моей цели?

4. Преобразование:

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

Как и в случае с анализом, это может варьироваться от проблемы к проблеме. Иногда этот шаг просто включает визуальный вывод выводов (например, представление полученных векторов в виде точек в 2 или 3 измерениях), пропорции (например, процентное соотношение для каждого класса настроений) или преобладающего обнаруженного класса (например, класс настроений, получивший большее количество баллов). ). Он также может включать более сложные задачи, такие как создание языка (например, создание нового или персонализированного ответа на запрос пользователя) или синтез речи (например, создание ответа с помощью человеческого голоса).

Выводы:

Я надеюсь, что этот пост дает хороший первоначальный обзор сложности и структуры проектов НЛП. Это хорошее упражнение - задавать себе такие вопросы, как:

  • Что мне делать с этим корпусом?
  • А как насчет моих собственных текстовых данных?
  • Как мне разработать рабочий процесс НЛП для такой системы, как Amazon © Alexa?

Что будет дальше:

Большое спасибо за то, что прочитали это! Я открыт и буду благодарен за любые (уважительные) предложения и / или вопросы.

сигмоидер

(Твиттер)

Ресурсы: