Подробное введение во все концепции, распространенные в мире обработки естественного языка.

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

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

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

Что такое язык?

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

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

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

Как компьютеры понимают язык?

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

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

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

Классификация - это, по сути, разделение фрагмента текста на категории, а при переводе этот фрагмент преобразуется на любой другой язык.

Что такое обработка естественного языка?

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

Изучение обработки естественного языка существует уже более 50 лет и выросло из области лингвистики с появлением компьютеров. [1]

Для получения подробного руководства по основам НЛП посетите



Основные преобразования

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

Токенизация, стемминг и леммитизация

Токенизация - это процесс разбиения текста на слова. Токенизация может произойти для любого символа, однако наиболее распространенный способ токенизации - это сделать это для символа пробела.

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

Лемматизация выполняет словарный и морфологический анализ слова и обычно направлен только на удаление флективных окончаний. Флективное окончание - это группа букв, добавленных в конец слова для изменения его значения. Вот некоторые словоизменительные окончания: -s. летучая мышь. летучие мыши.

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

N-граммы

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

Например, рассмотрим предложение: «Обработка естественного языка необходима для компьютерных наук».

Модель 1 грамм или униграмма будет размечать предложение в однословные комбинации, и, таким образом, на выходе будет «Естественный, Язык, Обработка, необходимо, чтобы , Компьютер, наука »

Модель bigram, с другой стороны, будет токенизировать его в комбинацию из 2 слов каждое, и на выходе будет следующее: «Естественный язык, языковая обработка, обработка необходима, важна для компьютера, Компьютерные науки »

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

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

Методы преобразования

Один из наиболее распространенных методов достижения этого в представлении пакета слов - tf-idf.

TF-IDF

TF-IDF - это способ оценки словарного запаса, чтобы придать слову адекватный вес пропорционально тому влиянию, которое оно оказывает на значение предложения. Оценка является продуктом 2 независимых оценок, частоты обращения (tf) и обратной частоты документов (idf)

Частота термина (TF): частота термина определяется как частота слова в текущем документе.

Частота обратных документов (IDF): это мера того, сколько информации предоставляет слово, т. е. является ли оно общим или редким во всех документах. Он рассчитывается как журнал (N / d), где N - общее количество документов, а d - количество документов, в которых встречается это слово.

Горячие кодировки

Горячие кодировки - это еще один способ представления слов в числовой форме. Длина вектора слов равна длине словаря, и каждое наблюдение представлено матрицей со строками, равными длине словаря, и столбцами, равными длине наблюдения, со значением 1, где словарное слово присутствует в наблюдении и нулевое значение там, где его нет.

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

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

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

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

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

Если кто-то хочет получить визуальное представление о линейной алгебре, проекциях и преобразованиях, которые являются основными математическими принципами, лежащими в основе ряда алгоритмов машинного обучения, я настоятельно рекомендую им посетить «Суть линейной алгебры» 3Синий1Коричневый.

Методы представления

Мешок слов

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

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

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

Ниже приведен пример модели Bag of Words для выборки статей из медицинских журналов.

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

Однако у этого представления есть два основных недостатка:

  1. Он игнорирует порядок / грамматику текста и, таким образом, теряет контекст, в котором используется слово.
  2. Матрица, созданная таким представлением, очень разреженная и более смещена в сторону наиболее употребительных слов. Подумайте об этом, алгоритмы в первую очередь работают над подсчетом слов, тогда как в языке важность слова на самом деле обратно пропорциональна частоте встречаемости. Слова с более высокой частотой встречаемости - это более общие слова, такие как, is, an, которые существенно не меняют значение предложения. Таким образом, становится важным правильно взвесить слова, чтобы отразить их адекватное влияние на смысл предложения.

Матрица встраивания

Матрица вложения - это способ представить вложения для каждого слова, присутствующего в словаре. Строки представляют размеры пространства для вложения слов, а столбцы представляют слова, присутствующие в словаре.

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

Следует иметь в виду, что здесь горячая кодировка просто относится к n-мерному вектору со значением 1 в позиции слова в словаре, где n - длина словаря. Эти горячие кодировки взяты из словаря, а не из серии наблюдений.

Рекуррентные нейронные сети (RNN)

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

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

RNN обрабатывает каждое слово предложения как отдельный ввод, происходящий во время «t», и также использует значение активации в «t-1» в качестве ввода в дополнение к вводу в момент «t». На схеме ниже показана подробная структура архитектуры RNN.

Описанная выше архитектура также называется архитектурой «многие ко многим» с (Tx = Ty), то есть количество входов = количеству выходов. Такая структура весьма полезна при моделировании последовательности.

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

  1. RNN «многие к одному»: архитектура «многие к одному» относится к архитектуре RNN, в которой много входов (Tx) используются для получения одного выхода (Ty). Подходящим примером использования такой архитектуры будет задача классификации.

На изображении выше H представляет собой выход функции активации.

2. RNN «один ко многим»: архитектура «один ко многим» относится к ситуации, когда RNN генерирует серию выходных значений на основе одного входного значения. Ярким примером использования такой архитектуры будет задача создания музыки, где вводом является jounre или первая нота.

3. Архитектура «многие ко многим» (Tx не равно Ty): эта архитектура относится к тому, где многие входы считываются для получения большого количества выходов, где длина входов не равна длине выходов. Ярким примером использования такой архитектуры являются задачи машинного перевода.

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

Ограничения RNN

Помимо всей своей полезности, RNN имеет определенные ограничения, основными из которых являются:

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

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

Закрытый рекуррентный блок

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

GRU состоит из дополнительного блока памяти, обычно называемого вентилем обновления или вентилем сброса. Помимо обычного нейронного блока с сигмовидной функцией и softmax для вывода, он содержит дополнительный блок с tanh в качестве функции активации. Tanh используется, поскольку его выход может быть как положительным, так и отрицательным, следовательно, может использоваться как для увеличения, так и для уменьшения. Выходные данные этого устройства затем объединяются с входом активации для обновления значения ячейки памяти.

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

Более подробное объяснение можно найти на странице https://towardsdatascience.com/understanding-gru-networks-2ef37df6c9be.

LSTM

В архитектуре LSTM вместо одного шлюза обновления, как в GRU, есть ворота обновления и ворота забывания.

Эта архитектура дает ячейке памяти возможность сохранить старое значение в момент времени t-1 и добавить к нему значение в момент времени t.

Более подробное объяснение LSTM доступно по адресу http://colah.github.io/posts/2015-08-Understanding-LSTMs/

Двунаправленный RNN

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

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

В этом блоге я попытался охватить все соответствующие практики и архитектуры нейронных сетей, распространенные в мире обработки естественного языка. Тем, кто заинтересован в глубоком понимании нейронной сети, я настоятельно рекомендую пройти курс Эндрю Нг на Coursera.

Ссылки

  1. Https://machinelearningmastery.com/natural-language-processing/
  2. Deep Learning Coursera, Эндрю Нг
  3. Http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/
  4. 3Blue1Brown сериал You Tube
  5. Https://towardsdatascience.com/understanding-gru-networks-2ef37df6c9be
  6. http://colah.github.io/posts/2015-08-Understanding-LSTMs/