Natural Language Processing (NLP)
Обработка естественного языка (NLP) — область ИИ, которая позволяет компьютерам анализировать, понимать и генерировать человеческий язык: от токенов до LLM.
Обработка естественного языка (NLP) — это область искусственного интеллекта (AI), которая позволяет компьютерам анализировать, понимать и генерировать человеческую речь и текст. Её задачи варьируются от поиска имён в предложении до перевода книги или ведения диалога, а сама область объединяет компьютерную лингвистику с машинным обучением и глубоким обучением. Веб-поиск, спам-фильтры, голосовые ассистенты, подсказки клавиатуры телефона и чат-боты на основе больших языковых моделей (LLM) — всё это работает благодаря NLP.
От правил к большим языковым моделям#
В ходе эксперимента Джорджтаунского университета и IBM в 1954 году более шестидесяти русских предложений перевели на английский, используя словарь из 250 слов и шесть грамматических правил, а ELIZA Джозефа Вейценбаума (1966) имитировала психотерапевта, сопоставляя ключевые слова с заранее заданными ответами. Написанные вручную правила не справлялись с неоднозначностью и разнообразием реальных текстов, поэтому с конца 1980-х годов статистическая обработка естественного языка стала учиться на размеченных текстах: скрытые марковские модели размечали части речи, а статистический машинный перевод обучался на миллионах пар переведённых предложений.
В 2010-х годах на смену им пришли нейронные сети. Word2vec (2013) научилась формировать эмбеддинги, располагающие близкие по смыслу слова рядом друг с другом, а рекуррентные нейронные сети (RNN) читали предложения по одному слову. Трансформер (2017) заменил рекуррентную обработку на самовнимание, которое параллельно связывает каждое слово со всеми остальными. Предварительно обученные трансформеры, такие как BERT и GPT, изучали язык на неразмеченных текстах, после чего для каждой задачи им требовались лишь небольшие размеченные наборы данных; с момента выхода ChatGPT в ноябре 2022 года LLM выполняют множество задач NLP, получая только текстовую инструкцию.
Как системы NLP представляют текст#
Современная система NLP сначала разбивает текст на токены — целые слова или части слов, полученные в результате токенизации, — и сопоставляет каждому токену вектор эмбеддинга. Нейронная сеть, обычно трансформер, преобразует эту последовательность в контекстные векторы, где вектор каждого токена отражает его соседей; затем специализированный выходной слой считывает их: одну метку для всего текста, метку для каждого токена, начало и конец фрагмента с ответом или новые сгенерированные токены. Поскольку смысл заключён в векторах, предложения с разными словами могут располагаться близко друг к другу, как показывает кодировщик предложений all-MiniLM-L6-v2:
from sentence_transformers import SentenceTransformer
# A small sentence encoder maps each text to a 384-dimensional vector
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
query = "How do I reset my password?"
candidates = ["I forgot my login credentials", "How do I reset my router?"]
# Encode all texts, then compare the query with each candidate by cosine similarity
embeddings = model.encode([query, *candidates])
scores = model.similarity(embeddings[0], embeddings[1:])[0]
for text, score in zip(candidates, scores):
print(f"{score:.2f} {text}")Перефразированное утверждение «Я забыл данные для входа» получает оценку 0.68 относительно вопроса, а фраза «Как сбросить настройки маршрутизатора?», в которой повторяются пять из шести слов вопроса, — 0.53. Семантический поиск и этап извлечения в генерации с дополненной выборкой (RAG) ранжируют документы по такому же сопоставлению.
Распространённые задачи NLP#
- Анализ тональности: Определяет, является ли мнение в отзыве, публикации или ответе на опрос положительным, отрицательным или нейтральным.
- Распознавание именованных сущностей (NER): Помечает каждое упоминание человека, организации, места или даты.
- Ответы на вопросы: Возвращает ответ на вопрос, а не список документов.
- Суммаризация текста: Сокращает документ до более короткого текста, в котором сохранены его основные мысли.
- Генерация текста: Создаёт новый текст по одному токену за раз; эта задача лежит в основе чат-ботов и помощников по программированию.
NLP в компьютерном зрении#
Язык также позволяет задавать моделям компьютерного зрения, что искать; объединение NLP и компьютерного зрения привело к созданию моделей, которые читают и пишут об изображениях. Модели «зрение — язык» (VLM) отвечают на вопросы о фотографиях и создают подписи к изображениям, а CLIP обучилась общему пространству эмбеддингов изображений и текста на 400 миллионах пар «изображение — подпись». Детекторы с открытым словарём получают список классов в виде текста: вызов set_classes(["double-decker bus", "person"]) для модели Ultralytics YOLOE-26 токенизирует каждое название с помощью токенизатора CLIP и кодирует его текстовым кодировщиком MobileCLIP2 от Apple; затем детектор сопоставляет эти текстовые эмбеддинги с областями изображения, чтобы обнаруживать и сегментировать категории, на которых его не обучали.
NLP и связанные термины#
- Понимание естественного языка (NLU): Часть NLP, связанная со смыслом, например с намерением пользователя или тем, к чему относится местоимение. Другая основная часть — генерация естественного языка (NLG), которая создаёт текст.
- Большие языковые модели: Языковые модели на основе трансформеров с миллиардами параметров, которые выполняют множество задач NLP по запросу и обходятся дороже за один запрос, чем небольшая модель, обученная для одной задачи.
- Распознавание речи: Преобразует устную речь в текст, который затем интерпретируют модели NLP.
- Оптическое распознавание символов (OCR): Преобразует изображения печатного или рукописного текста в символы — это первый шаг перед чтением отсканированного документа средствами NLP.










