Теория, которую вам нужно знать, прежде чем начинать проект НЛП

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

Вступление

С января работаю над проектом по извлечению информации из неструктурированного текста. Перед тем, как начать этот проект, я ничего не знал о области обработки естественного языка (НЛП). Как только я начал исследовать эту область, я быстро натолкнулся на Обработку естественного языка с помощью Python, доступную здесь. Эта книга оказалась для меня слишком теоретической, хотя в ней правильно изложены основы, поэтому она по-прежнему является бесценным ресурсом. Следующим моим большим открытием стала Анализ текста с помощью Python Дипанджана Саркара, которую я прочитал от корки до корки. Это фантастическая книга, которая научила меня всем техническим навыкам, необходимым для начала проекта НЛП. Второе, сильно расширенное издание [6] вышло совсем недавно.

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

О чем этот пост

Этот пост будет в основном теоретическим для краткости. Я напишу больше практических статей в будущем. Теперь я затрону несколько тем, например:

  1. Обработка текста с помощью НЛП
  2. Извлечение функций из текста
  3. Обучение с учителем по тексту
  4. Обучение по тексту без учителя

Предварительная обработка текста

Типичный конвейер предварительной обработки текста состоит из следующих шагов:

  1. Сегментация предложения.
  2. Нормализация и токенизация.
  3. Пометка части речи (POS).
  4. Признание именной организации.

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

Сегментация предложения

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

Токенизация и нормализация

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

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

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

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

Пометка части речи

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

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

Признание именованных сущностей

Прежде чем именованные объекты можно будет распознать, токены должны быть разбиты на части. Разделение на части означает сегментирование и маркировку наборов токенов. Одним из наиболее часто используемых фрагментов является фрагмент именной фразы, состоящий из определителя, прилагательных и существительного, например, «счастливый единорог». Предложение «Он нашел счастливого единорога» состоит из двух частей «он» и «счастливый единорог».

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

Машинное обучение

Как сообщает Brink et al. По определению, машинное обучение (ML) - это использование закономерностей в исторических данных для принятия решений о новых данных [1], или, как красноречиво выразилась главный научный сотрудник Google по вопросам принятия решений Кэсси Козырков: Машинное обучение - это просто разметка вещей. , беря ваше описание чего-либо и сообщая вам, какой ярлык это должно быть .« Применение методов машинного обучения полезно, когда проблемы под рукой слишком сложны для решения с помощью программирования, например, различение разных пород кошек на изображениях, или решения, которые необходимо адаптировать со временем, например, распознавание рукописных текстов [2].

Обычно машинное обучение делится на машинное обучение с учителем и без учителя [2]. Мы можем использовать контролируемое обучение, когда наши исторические данные обучения содержат метки (например, «утка» и «не утка» на рисунке ниже). С другой стороны, обучение без учителя применяется, когда в данных нет меток. Методы неконтролируемого машинного обучения нацелены на обобщение или сжатие данных. Примером этого различия является проблема обнаружения нежелательной почты по сравнению с обнаружением аномалий. В первом случае у нас были бы обучающие данные с доступными метками спам / не-спам, во втором случае нам пришлось бы обнаруживать аномальные электронные письма на основе обучающего набора писем.

Извлечение признаков

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

Стратегии, основанные на подсчете

Самый простой способ преобразования текстов в числовые векторы - это использовать метод Bag-of-Words (BoW). Принцип BoW состоит в том, чтобы взять все уникальные слова из текста и создать корпус текста, называемый словарем. Используя словарь, каждое предложение может быть представлено как вектор, состоящий из единиц и нулей, в зависимости от того, присутствует ли слово из словаря в предложении или нет. На рисунках ниже показан пример матрицы, созданной с использованием метода BoW для пяти нормализованных предложений.

Чтобы добавить больше контекста к словарю, токены могут быть сгруппированы вместе. Этот метод называется подходом N-грамма. N-грамма - это последовательность из N токенов. Например, 2 грамма (биграмма) - это последовательность из двух слов, а триграмма - это последовательность из трех слов.

После того, как словарный запас выбран, будь то 1-, 2- или 3-граммовый, необходимо подсчитать количество граммов. Мы могли бы использовать подход BoW. Обратной стороной этого подхода является то, что популярные слова становятся слишком важными. Таким образом, наиболее популярный метод для этого называется "частота документа с обратной частотой" (TF-IDF).

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

Продвинутые стратегии

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

Word2Vec - это фреймворк от Google, использующий неглубокие нейронные сети для обучения моделей встраивания слов [3]. Существует два типа алгоритмов Word2Vec: Skip-Gram, который используется для прогнозирования контекста вокруг данного слова, в то время как модели непрерывного набора слов (CBOW) используются для прогнозирования следующего слова в данном контексте.

Метод Global Vectors, GloVe, использует статистику совпадений для создания векторного пространства [4]. Этот метод является расширением Word2Vec, которое позволяет лучше встраивать слова. На рисунках ниже показан пример вложения слов GloVe в примерах предложений и графическое представление вложений. Как и следовало ожидать, похожие концепции рядом.

Еще одна импровизированная версия Word2Vec была разработана Facebook и получила название fastText. fastText - это среда глубокого обучения, которая учитывает отдельные символы при построении векторного пространства [5].

Контролируемое обучение

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

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

Типичные алгоритмы, которые используются для классификации текста:

  • Полиномиальный наивный байесовский алгоритм - принадлежит к семейству наивных байесовских алгоритмов, основанных на использовании теоремы Байеса, с использованием предположения, что каждая функция независима друг от друга. Multinomial Naive Bayes - это расширение, используемое для задач классификации с более чем двумя разными метками (мультиклассовая классификация).
  • Логистическая регрессия - алгоритм, использующий сигмовидную функцию для прогнозирования категориальных значений. Популярный пакет sklearn позволяет настраивать параметры модели таким образом, чтобы алгоритм можно было использовать и для классификации по нескольким меткам.
  • Машины опорных векторов (SVM) - алгоритм, использующий линию или гиперплоскость (в случае, если объектов больше двух, что создает многомерное пространство) для разделения классов.
  • Случайный лес - метод ансамбля, который параллельно обучает несколько деревьев решений на различных подмножествах данных.
  • Gradient Boosting Machine (GBM) - семейство ансамблевых методов, которые обучают последовательность слабых учеников, например деревья решений, для достижения точных результатов. XGBoost - одна из самых популярных реализаций этого семейства алгоритмов.

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

Метрики оценки

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

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

Метрики, полученные из матрицы неточностей:

  • Точность - количество правильных прогнозов, сделанных моделью по всем сделанным прогнозам.
  • Точность - количество правильных положительных случаев по всем положительным предсказаниям, другими словами, сколько выбранных элементов является релевантным.
  • Напомним - количество правильных положительных случаев по всем фактическим положительным событиям, другими словами, сколько релевантных элементов выбрано.
  • Оценка F1 - единая оценка, сочетающая точность и отзывчивость, достигнутая с использованием гармонического среднего. Гармоническое среднее - это своего рода среднее значение, когда x и y равны. Но когда x и y различны, тогда оно ближе к меньшему числу по сравнению с большим числом.

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

Неконтролируемое обучение

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

Доступны несколько категорий алгоритмов кластеризации:

  • Кластеризация на основе подключения - также известная как иерархическая кластеризация, соединяет точки данных на основе расстояния между ними. Существует два типа стратегий, используемых для соединения этих точек: агломеративный подход, подход «снизу вверх», когда каждая точка данных становится отдельным кластером с итеративным слиянием пар кластеров, или подход разделения «сверху вниз», при котором все данные space - это один кластер, который рекурсивно разбивается. Для агломеративной иерархической кластеризации необходимы две дополнительные метрики: метрика расстояния, которая показывает, насколько похожи две точки данных, евклидово расстояние, расстояние Хэмминга или косинусное расстояние являются типичными примерами, и критерий связи, который показывает, насколько похожи группы точек данных.
  • Кластеризация на основе центроидов - данные делятся на кластеры в зависимости от близости точек к центроидам кластеров. K-means - самая популярная реализация алгоритма. Базовый алгоритм выглядит следующим образом: (1.) выбрать k как количество кластеров, (2.) назначить точки данных в кластеры, (3.) вычислить центроиды кластера, (4.) переназначить точки данных ближайшему центроиду, ( 5.) повторяйте предыдущие два шага, пока центроиды не изменятся.
  • Кластеризация на основе плотности - пространство данных делится и кластеризуется на области плотности. DBSCAN и OPTICS - два популярных алгоритма, которые извлекают плотные области пространства данных, оставляя «зашумленные» данные в разреженных областях. OPTICS пытается преодолеть слабость DBSCAN, заключающуюся в плохой работе с границами и наборами данных различной плотности.

Резюме текста

Резюмирование текста можно разделить на две части: тематическое моделирование и автоматическое реферирование текста. Автоматическое обобщение текста - это процесс использования алгоритмов машинного обучения для создания резюме документов или набора документов. Эти алгоритмы лучше всего работают с большим количеством документов и / или длинных документов.

С другой стороны, тематическое моделирование фокусируется на извлечении тем из коллекции документов. Тематические модели часто называют вероятностными статистическими моделями, потому что они используют статистические методы, такие как разложение по сингулярным значениям (SVD), для выявления скрытых семантических структур из текстов. SVD полагается на матричную факторизацию, которая представляет собой метод линейной алгебры, который делит матрицу признаков на более мелкие компоненты. Такие методы, как Latent Semantic Indexing (LSI), Latent Dirichlet Allocation (LDA) и Negative Matrix Factorization (NNMF), используют преимущества методов линейной алгебры для разделения документа на темы, которые, по сути, представляют собой кластеры слов, как показано. ниже. Алгоритмы тематического моделирования обычно дают лучшие результаты, когда тексты разнообразны.

Заключение

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

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

использованная литература

[1] Х. Бринк, Дж. У. Ричардс и М. Фетерольф, Машинное обучение в реальном мире (2017 г.), Manning Publications.

[2] С. Шалев-Шварц, С. Бен-Дэвид, Понимание машинного обучения: от теории к алгоритмам (2014), Cambridge University Press.

[3] Т. Миколов, И. Суцкевер, К. Чен, Г. С. Коррадо, Дж. Дин. Распределенные представления слов и фраз и их композиционность (2013), Достижения в системах обработки нейронной информации 26

[4] Дж. Пеннингтон, Р. Сочер и К. Д. Мэннинг, GloVe: глобальные векторы для представления слов (2014), В EMNLP.

[5] П. Бояновски, Э. Граве, А. Жулен и Т. Миколов. Обогащение векторов слов подсловной информацией (2016), препринт arXiv

[6] Д. Саркар. Анализ текста с помощью Python: Практическое руководство по обработке естественного языка (2019), Apress