Введение в фазы трубопровода НЛП

Обработка естественного языка (NLP) - одна из самых быстрорастущих областей в мире. Это подраздел искусственного интеллекта, занимающийся взаимодействием человека с компьютером. Основные задачи в НЛП включают распознавание речи, понимание естественного языка и создание естественного языка. НЛП внедряется в ряд продуктов и услуг, которыми мы пользуемся каждый день. В этой статье дается обзор распространенного сквозного конвейера НЛП.

Общий конвейер НЛП состоит из трех этапов:

  • Обработка текста
  • Извлечение функций
  • Моделирование

Каждый этап каким-то образом преобразует текст и дает промежуточный результат, необходимый на следующем этапе. Например,

  • Обработка текста - возьмите необработанный вводимый текст, очистите его, нормализуйте и преобразуйте в форму, подходящую для извлечения функций.
  • Извлечение функций: извлекайте и создавайте представления функций, соответствующие типу задачи НЛП, которую вы пытаетесь выполнить, и типу модели, которую вы планируете использовать.
  • Моделирование. Создайте модель, подгоните ее параметры под данные обучения, используйте процедуру оптимизации, а затем используйте ее для прогнозирования невидимых данных.

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

Небольшой пример некоторых этапов конвейера НЛП можно найти в моем GitHub. (скоро появятся другие примеры)

Обработка текста

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

  • Очистка. Первый шаг в обработке текста - очистка данных. т.е. удаление ненужных элементов, таких как HTML-теги. Это можно сделать разными способами. Пример включает использование регулярных выражений, библиотеки красивых супов, селектора CSS и т. Д.
  • Нормализация: очищенные данные затем нормализуются путем преобразования всех слов в нижний регистр и удаления знаков препинания и лишних пробелов.
  • Токенизация - нормализованные данные разбиваются на слова, также известные как токены.
  • Удаление стоп-слов. После разделения данных на слова удаляются наиболее распространенные слова (a, an, the и т. д.), также известные как стоп-слова.
  • Разметка частей речи - части речи идентифицируются для оставшихся слов.
  • Распознавание именованных объектов. Следующим шагом является распознавание именованных объектов в данных.
  • Стемминг и лемматизация - преобразование слов в их канонические / словарные формы с помощью стемминга и лемматизации.

* Создание - это процесс, в котором слово сокращается до его основы / корневой формы. то есть слова «бег», «бегает» и т. д. могут быть сокращены до «беги».
* Лемматизация - еще один метод, используемый для приведения слов к нормализованной форме. В этом случае преобразование фактически использует словарь для сопоставления различных вариантов слова с его корнем. При таком подходе нетривиальные флексии, такие как is, are, was, were, отображаются обратно в корень be.

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

Извлечение функций

Теперь текст нормализован, можно ли его использовать в статистической модели или модели машинного обучения? Не совсем. Вот почему:

Текстовые данные представлены на современных компьютерах с использованием кодировки, такой как ASCII или Unicode, которая сопоставляет каждый символ с числом. Компьютер хранит и передает эти значения как двоичные, нули и единицы, которые имеют неявный порядок. Отдельные персонажи вообще не несут особого смысла и могут ввести в заблуждение алгоритмы НЛП.

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

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

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

Для задач уровня документа, таких как анализ тональности, могут использоваться представления отдельных документов, такие как представления «мешок слов» (BOW) или doc2vec. Для задач, связанных с отдельными словами или фразами, таких как создание текста или машинный перевод, можно использовать представление уровня слова, такое как word2vec или glove.

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

Мешок слов (ЛУК) модель

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

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

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

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

Это представление можно использовать в нескольких задачах. Одна из возможных задач - сравнить документы по частоте использования терминов. Это можно сделать путем вычисления сходства скалярного произведения / косинуса между двумя векторами-строками.

Частота термина - обратная периодичность документа (TF-IDF)

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

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

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

Этот подход называется «Частота термина - обратная частота документа» (TF-IDF).

Подробнее о расчете TF-IDF можно узнать здесь.

Быстрое кодирование

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

Вложения слов

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

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

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

Моделирование

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

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

Создав рабочую модель, вы можете развернуть ее как веб-приложение, мобильное приложение или интегрировать с другими продуктами и услугами. Возможности безграничны!

Вывод

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

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