Простое введение в основную, но фундаментальную концепцию НЛП

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

В результате этот термин используется в бесчисленных проектах по науке о данных.

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

Итак, что такое n-граммы?

Проще говоря, n-граммы относятся к последовательности из N слов или символов.

Пример

Рассмотрим предложение: «Я живу в Нью-Йорке».

Модель униграмм (n = 1) хранит этот текст в токенах из 1 слова:

["Я живу в Нью-Йорке"]

Модель биграммы (n=2) хранит этот текст в токенах из 2 слов:

[«Я живу», «живу в», «в Нью-Йорке», «Нью-Йорке»]

В этом сценарии город «Нью-Йорк» не будет распознаваться как сущность с униграммой, поскольку каждый токен хранит только одно слово. С другой стороны, биграмма объединяет слова «Нью-Йорк» и «Йорк» и позволяет машине распознавать «Нью-Йорк» как единое целое, тем самым извлекая контекст из текста.

Приложения

N-граммы повсеместно используются в обработке естественного языка.

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

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

Тематическое исследование

Давайте рассмотрим пример, чтобы продемонстрировать влияние n-грамм на производительность модели.

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

Данные сначала очищаются перед любым прогностическим моделированием.

В этом примере текст будет преобразован в набор слов с помощью объекта CountVectorizer в модуле sklearn перед использованием для обучения классификатора машинного обучения.

Примечание. Параметр «ngram_range» относится к диапазону n-грамм из текста, который будет включен в набор слов. Диапазон n-грамм (1,1) означает, что набор слов будет включать только униграммы.

Давайте посмотрим, как наивная байесовская модель предсказывает настроение отзывов с диапазоном n-грамм (1,1).

Наивный байесовский классификатор регистрирует показатель f1, равный 0,752.

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

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

Давайте посмотрим, как модель работает после добавления биграмм (n = 2) к входным функциям. Этого можно добиться, изменив параметр «ngrams_range» на (1,2).

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

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

Мы можем доказать это, показав, насколько точно модель предсказывает тональность заданного текста с различными диапазонами n-грамм.

Здесь 10 моделей с разными диапазонами n-грамм строятся с помощью обучающего набора и оцениваются с помощью тестового набора.

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

Заключение

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

Вот почему важно получить четкое представление об n-граммах и их влиянии на производительность модели. Использование этого инструмента только улучшит возможности ваших моделей.

Желаю вам удачи в ваших начинаниях по машинному обучению!