Авторские статьи
2023-10-12 16:42 Natural language processing

Что такое NLP?

NLP (Natural Language Processing) — область, которая занимается обработкой и анализом естественного языка, речи человека. В ней объединяются методы и техники машинного обучения (machine learning), статистики и лингвистики, чтобы научить искусственный интеллект (artificial intelligence, AI) понимать текст и произнесенные слова почти на уровне людей. NLP используется для разработки компьютерных программ, которые переводят сообщения с одного языка на другой, реагируют на устные команды, быстро обрабатывают большие объемы информации — даже в режиме реального времени. Вы наверняка взаимодействовали с ними: в виде голосовых систем GPS, умной колонки Яндекс.Станция, чат-ботов для обслуживания клиентов. Но сейчас роль NLP растет в корпоративных решениях, которые помогают оптимизировать бизнес-операции, повысить производительность труда сотрудников и упростить рутинные задачи.
Основой NLP являются статистические модели и алгоритмы машинного обучения, такие как рекуррентные нейронные сети (RNN), сверточные нейронные сети (CNN), модели Transformer и прочие. Эти модели обучаются на больших наборах текстовых данных для выполнения различных задач, связанных с естественным языком.
Рассмотрим на примере, как обработка естественного языка используется в реальности для решения задачи автоматической классификации текстов. Предположим, у нас есть набор новостей, которые нужно разнести по категориям: спорт, политика, технологии и т. д. Вы хотите поручить этот процесс компьютеру. Используя методы NLP, можно создать модель машинного обучения, которая на датасете размеченных данных научится извлекать признаки из текстов (определенные слова, названия и т. д.) и связывать их с соответствующими категориями. Далее она задействуется для классификации новых документов. Например, если на сайте пользователи могут публиковать новости самостоятельно, такая модель автоматически определит, к какой категории относится каждый текст, и не пропустит к публикации статьи с запрещенной информацией.

Какие задачи решают с помощью NLP?

Наша речь полна двусмысленностей. Мы воспринимаем их абсолютно естественно: все эти метафоры, омонимы, сарказм и иронию. Но попробуйте объяснить компьютеру, почему фраза «Всю жизнь мечтал копать картошку под дождем» абсолютно не означает, что ее автор действительно мечтал об этом. И мы не говорим о лингвистических ловушках типа «Косил косой косой косой». На изучение иностранного языка до уровня носителя у людей уходят годы. Программа должна справиться гораздо быстрее.
Поэтому часть задач NLP направлена на то, чтобы помочь компьютеру лучше понимать текст. Среди них:
  1. Распознавание речи — преобразование устной речи в текстовые данные. Требуется для любого приложения, которое выполняет голосовые команды. Люди говорят по-разному: кто-то торопится, кто-то «глотает» слоги, кто-то неправильно ставит ударения. Поэтому ИИ обучают на больших объемах разнообразных данных, чтобы дать как можно больше примеров произношения.
  2. POS tagging — определение частей речи на основе контекста и использования слов. Например, в предложении «Камни стали падать» слово «стали» будет определено как глагол, а в фразе «Скульптура сделана из стали» то же слово — существительное.
  3. Устранение смысловой неоднозначности (Word Sense Disambiguation, WSD) — выбор наиболее подходящего смысла слова в контексте предложения. Слова в русском языке могут иметь несколько значений, и их правильное понимание зависит от контекста, в котором они используются. Например, слово «лук» может означать оружие или овощ.
  4. Распознавание именованных сущностей (Named-entity recognition, NER) — идентифицирует слова и выражения как именованные объекты. Это имена людей, названия стран, организаций и т. д. Позволяет быстрее обрабатывать тексты, вычленять из них важную информацию для принятия решения. Например, чтобы классифицировать сообщения в службу поддержки по операторам, проблемам.
  5. Разрешение кореферентности (Coreference resolution) — задача поиска всех слов (упоминаний), которые относятся к одной и той же сущности. Так, в предложении: ««Я согласен с Ольгой, потому что ее предложения по проекту соответствуют моим представлениям», — сказал Юрий», алгоритм соотнесет местоимение «ее» с человеком Ольга, а «я» и «моим» с человеком Юрий. Сюда же относятся метафоры или идиомы — например, выражение «Настоящий медведь!», которое относится не к животному, а к крупному мужчине.
  6. Анализ настроений (Sentiment Analysis) — считывает эмоциональную направленность текста, положительный он, отрицательный или нейтральный. Часто используется для классификации отзывов, поиска негативных комментариев.

Что можно делать с помощью NLP?

Одна из популярных задач — классификация текстовых данных. Сюда относится, например, сортировка отзывов на положительные и отрицательные. Таким образом работает система фильтрации спама: делит письма на спам и не спам. Также это определение интентов: классификация намерений или действий, выраженных в тексте. Например, определение интента пользователя при общении с чат-ботом (запрос на информацию, заказ продукта, поддержка и т. д.).
NLP позволяет разрабатывать системы автоматического машинного перевода. Так легче разговаривать и переписываться с друзьями по интересам из других стран, по этому принципу работают мультиязычные системы.
С помощью NLP можно создать алгоритм для автоматического поиска и извлечения нужной информации в текстах — например, для формирования базы данных на основе анкет регистрации пользователей (имена, даты, адреса и т. д.). Обработка естественного языка используется для автоматической генерации текстов — создания статей, новостных заголовков, ответов на вопросы. Именно так работает чат GPT. И, конечно, NLP необходим при разработке виртуальных помощников, которые взаимодействуют с пользователем на основании устных или напечатанных запросов.

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

  1. Токенизация. Текст разбивается на отдельные токены — слова или предложения. Это первый шаг в обработке естественного языка. Например, в библиотеке NLTK (Natural Language Toolkit) текст «Привет! Как у тебя дела?» после токенизации будет выглядеть как ['Привет', '!', 'Как', 'у', 'тебя', 'дела', '?'].
  2. Стемминг и лемматизация. Эти методы используются для приведения слов к их базовым формам. Стемминг удаляет аффиксы, чтобы получить основу слова, в то время как лемматизация приводит слова к их леммам, или словарным формам. Процессы нужны, чтобы ускорить процесс машинного обучения и устранить неоднозначность. Стемминг удобен для задач, где не требуется высокая точность, а нужно просто сократить слова до их основы. Лемматизация более предпочтительна, если точность и учет грамматических характеристик слова важны для дальнейшего анализа текста.
  3. Синтаксический анализ. Определяет грамматическую структуру предложений, помогает понять, как различные слова связаны друг с другом и как они образуют смысловые единицы. Например, у нас есть предложение «Я читаю интересную книгу». Синтаксический анализ может преобразовать это предложение в дерево зависимостей, которое иллюстрирует связи между словами:
читаю
/ \
Я книгу
/
интересную
В этом примере слову «читаю» назначается роль главного сказуемого, а словам «Я» и «книгу» — роли зависимых существительных. Слово «интересную» является определением, связанным с существительным «книгу».
На обработке семантического содержания текстов и понимании его значения сконцентрированы другие методы, в частности построение моделей и векторное представление слов.

Векторное представление слов

Это метод обработки естественного языка, который позволяет представить слова в виде численных векторов. Такие представления можно использовать в моделях машинного обучения, которые работают с числовыми данными.
Word2Vec и GloVe являются наиболее популярными методами векторного представления слов.
1. Word2Vec создает векторные представления слов, основываясь на контексте, в котором они появляются в текстовых данных. Он использует нейронные сети для формирования плотных векторов, где семантически близкие слова находятся близко друг к другу в векторном пространстве. При обучении модели Word2Vec на большом объеме текстовых данных алгоритм создает представления слов, которые сохраняют семантические связи между ними. Например, векторы для слов «кот» и «кошка» будут иметь близкое расположение в векторном пространстве.
2. GloVe (Global Vectors for Word Representation) объединяет глобальную и локальную информацию. Его основная идея состоит в том, чтобы изучить статистику встречаемости слов и их совместную встречаемость в больших корпусах текста. GloVe строит матрицу, которая отражает информацию о взаимном использовании слов, а затем создает на ее основе векторные представления. Главное преимущество метода — он учитывает глобальную структуру совместной встречаемости слов, что дает более качественные векторные представления.

Методы машинного обучения

Построение моделей для обработки естественного языка — это процесс разработки и обучения алгоритмов, способных понимать устные и письменные текстовые данные на английском, русском и других языках. Для этого используют:
  1. Рекуррентные нейронные сети (RNN). Они обрабатывают последовательности данных с учетом контекста. Основная идея RNN заключается в передаче информации от предыдущих шагов в следующие. Традиционные нейронные сети не имеют памяти, то есть они рассматривают каждый входной элемент независимо от предыдущих элементов. Однако в некоторых задачах, таких как анализ последовательности, семантическое понимание естественного языка и машинный перевод, важно учитывать контекст предыдущих данных. Например, при решении задачи по классификации отзывов. Текст «Этот фильм просто потрясающий, я никогда не видел ничего подобного!» разбивается на последовательность слов. Далее RNN будет поочередно обрабатывать каждое из них, учитывая информацию о предыдущем, чтобы изучить зависимости между словами в тексте и определить, положительный это отзыв или отрицательный.
  2. Сверточные нейронные сети (CNN). Они часто используются для обработки изображений, но могут быть адаптированы для обработки текста. В контексте NLP, CNN применяются для анализа последовательностей данных: выражений, предложений. Операция свертки является основной составляющей сверточных нейронных сетей и используется для извлечения локальных признаков из входных данных. В контексте текстовых данных, операция свертки применяется к окнам текста фиксированной ширины, чтобы найти локальные шаблоны или признаки. Окно представляет собой набор слов или символов, которые проходят через фильтр (ядро свертки) на каждом шаге. Для работы в CNN текст обычно представляется в виде матрицы, где каждое слово обозначено числовым вектором (например, с использованием метода Word2Vec или GloVe). Затем применяются свертки (как в случае с обычными изображениями) для изучения локальных аспектов текста. CNN позволяют выделять смысловые особенности в тексте и имеют преимущество в вычислительной эффективности перед RNN.
  3. Трансформеры. Это относительно новый подход к обработке текстов, нейронные сети, специально созданные для работы с последовательностями данных. Были впервые представлены в статье инженеров Google «Attention Is All You Need». Трансформеры отличаются от классических рекуррентных нейронных сетей (RNN) тем, что они не оперируют последовательностями данных, а сразу обрабатывают все элементы последовательности «параллельно» и могут эффективно работать с последовательности любой длины. Они используют механизм self-attention, который позволяет модели изучать отношения между всеми элементами последовательности. Один из примеров — BERT (Bidirectional Encoder Representations from Transformers). BERT использует механизм «внимания» (attention mechanism), который позволяет модели фокусироваться на различных частях текста при обработке каждого слова. BERT обучается на больших объемах текстовых данных, и его алгоритмы затем могут быть использованы для задач NLP: классификация текстов, извлечение информации и машинный перевод. Векторные представления слов в BERT получаются через преобразование контекстовых векторов определенного слова.
Каждая из перечисленных моделей имеет свои преимущества и недостатки и может оказаться более или менее подходящей в зависимости от задачи, наличия обучающих данных и доступных ресурсов вычислений. Для выбора лучшей модели проводятся исследования и эксперименты.