01 / 37 · Основы работы с текстом
Что такое обработка естественного языка
Задача, которую решает курс, — превращать текст в решения и текст в текст; четыре формы, которые принимает любая задача; одна цель обучения, на которой держится бо́льшая часть курса; почему язык труден для компьютера; зачем знать методы, на которых стоит чат-модель; и как курс идёт от подсчёта слов к LLM-системам, где каждый метод отвечает на провал предыдущего.
На этой странице 9
Спам-фильтр, строка поиска, переводчик и чат-ассистент читают текст и что-то с ним делают. Обработка естественного языка (natural language processing, NLP) — это набор методов, которые позволяют программе так поступать: превращать текст в решение или в другой текст. В этой заметке — в чём состоит задача, почему она трудна, зачем проходить курс о методах, когда чат-модель доступна одним вызовом API, и как курс устроен.
Задача: от текста к решениям и обратно#
Текст — это последовательность символов , где каждый берётся из словаря . Что считать символом (слово, часть слова, байт), решают следующая заметка и заметка о токенизации; здесь важно лишь то, что текст приходит последовательностью дискретных токенов разной длины.
Любая задача курса имеет одну из четырёх форм:
- Текст → метка, : один ответ на весь текст. Спам или нет, тональность отзыва, тема новости. Сквозной пример курса — AG News: 120 000 новостных текстов четырёх тем.
- Метка на каждый токен, : ответ для каждой позиции. Именованные сущности, части речи, начало и конец ответа во фрагменте текста.
- Текст → текст, : новая последовательность при условии входной. Перевод, суммаризация, перефразирование.
- Продолжение текста, : отдельного входа нет, есть только вероятность самого текста, который порождается токен за токеном. Это языковая модель (language model).
Четыре формы задач NLP
Четвёртая форма самая общая. Метку, последовательность тегов или перевод можно записать как текст, продолжающий подсказку (Topic of this article: ), поэтому модель, которая хорошо продолжает текст, в принципе умеет и остальные три. Именно поэтому одна предобученная языковая модель теперь обслуживает много задач; эту линию продолжают заметка о GPT и заметка о семействах моделей. Но это не повод решать так всё подряд: дообученный классификатор дешевле на каждый документ, его проще оценить, и часто он точнее, как показывает заметка о классификации текстов.
Для чего нужен NLP#
- Поиск. Найти фрагменты, которые отвечают на запрос, по совпадению слов или смыслов: заметка о семантическом поиске.
- Классификация в масштабе. Распределять обращения в поддержку, фильтровать спам и оскорбления, размечать новости по темам, измерять тональность: миллионы документов, по одному дешёвому решению на каждый.
- Извлечение. Вытащить из свободного текста в таблицу имена, даты, суммы и связи между ними или, наоборот, удалить их, как при обезличивании медицинских записей: заметки о NER и ответах на вопросы.
- Генерация по источнику. Перевести, сократить, ответить по документу: заметки о переводе и суммаризации.
- Ассистенты и агенты. Языковая модель, которая следует инструкциям, ищет сведения и вызывает инструменты: заметки об обучении на инструкциях, RAG и агентах.
Бо́льшая часть записанного человеческого знания — это текст, и бо́льшая часть работы выше — чтение или письмо в масштабе, недоступном человеку.
Одна цель обучения почти под всем#
Цепное правило теории вероятностей превращает языковую модель в последовательность задач классификации, по одной на позицию:
Обучение максимизирует логарифм вероятности настоящего текста, что то же самое, что минимизировать среднюю кросс-энтропию на токен:
Перплексия (perplexity) читается как эффективное число вариантов: у модели, которая равномерно распределяет вероятность по 10 000 слов, перплексия 10 000, а у модели, которая на каждом шаге даёт наблюдаемому следующему токену вероятность 0.1, — 10. Заметка об n-граммах выводит её и измеряет.
Методы курса различаются тем, как они вычисляют . N-граммная модель считает, как часто следовал за последними токенами. Рекуррентная сеть сжимает весь префикс в один вектор состояния. Трансформер смотрит на каждый предыдущий токен напрямую через внимание (attention). GPT — это трансформер, обученный так на очень большом корпусе. Классификатор использует ту же кросс-энтропию, только с метками вместо токенов.
Почему язык труден для компьютера#
Текст выглядит просто: короткая строка знакомых слов. Его делают трудным пять свойств.
- У символов нет геометрии. В виде one-hot-векторов
catиdogровно так же далеки друг от друга, какcatиcarburetor. Ничто в самих символах не говорит, какие слова похожи; это приходится выучить, и этим заняты векторные представления слов. - Словарь открыт и имеет тяжёлый хвост. Немногие слова составляют бо́льшую часть любого текста, а бо́льшая часть различных слов редка. Модель целых слов тратит параметры на слова, которые почти не видела, и не имеет записи для новых; это исправляет токенизация подсловами.
- Смысл зависит от контекста.
bankвriver bankи вbank account— одна строка с двумя смыслами; уI saw her duckдва прочтения. Один фиксированный вектор на слово их не различит, и отсюда контекстные векторы BERT. - Порядок важен, иногда на больших расстояниях. В
not goodиgood, notодни и те же слова. ВThe keys to the old cabinet are on the tableглагол согласуется сkeys, стоящим на пять слов раньше. Мешок слов порядок игнорирует, n-граммы видят лишь несколько токенов, а ответами становятся рекуррентные сети и затем внимание. - Правильных ответов много. У предложения много верных переводов, у статьи много хороших пересказов, поэтому оценка системы — отдельная задача: BLEU, ROUGE и модели-судьи в заметках об оценке и оценке LLM.
Разобранный пример: словарь AG News#
Приведём 120 000 обучающих текстов AG News к нижнему регистру и разрежем на последовательности букв и цифр. Получится 4 759 159 токенов и 65 043 различных слова.
| Самые частые слова | Доля всех токенов |
|---|---|
| 10 | 19.3 % |
| 100 | 38.1 % |
| 1000 | 66.6 % |
| 10 000 | 93.9 % |
На другом конце 20 925 слов, треть словаря, встречаются ровно один раз. Частота падает примерно обратно пропорционально рангу — закон Ципфа (Zipf, 1949): 10-е, 100-е и 1000-е слова встречаются 44 506, 4714 и 665 раз, так что произведение ранга на частоту остаётся между 0.45 и 0.67 миллиона. Словарь из 10 000 слов покрывает 94 % токенов; остальные 55 000 слов делят последние 6 %, а каждый новый текст приносит слова, которых нет ни среди одних, ни среди других.
Список показывает и то, каков сырой текст. Десятое по частоте «слово» — 39. Источник хранил апостроф в Web's как HTML-сущность ', амперсанд потерялся, и #39; остался в 29 696 текстах из 120 000; 44 316 из 44 506 вхождений 39 взялись отсюда. Догадаться об этом по выборке нельзя, а любая модель, обученная на этих данных, это выучивает.
Зачем знать методы, если есть чат-модель#
Сильная языковая модель отвечает на вопросы о тексте сразу, без настройки. Методы этого курса всё равно стоит знать, по четырём причинам.
- LLM-система собрана из этих деталей. Токенизатор решает, сколько стоит запрос и какие слова модель обрабатывает плохо. Эмбеддинги решают, что найдёт поиск. Внимание и позиционное кодирование задают, сколько контекста помещается. Стратегия декодирования меняет ответ той же модели. Квантизация и параметрически эффективное дообучение решают, что запустится на данной видеокарте. Каждой из этих деталей посвящена заметка курса.
- Простые бейзлайны сильны. На AG News TF-IDF с логистической регрессией даёт 0.918 точности на тесте при фиксированных настройках. Три других результата на тех же данных измерены по разным протоколам, поэтому это отдельные демонстрации, а не рейтинг. Небольшой трансформер, обученный с нуля, даёт 0.906 на эпохе, выбранной по тестовой выборке, так что это число оптимистично. BERT в режиме zero-shot через голову маскированного языкового моделирования даёт 0.456 с естественными словами-метками и 0.613 со словами-метками, подобранными на тестовых статьях, — снова оптимистично. BERT, дообученный на задаче, даёт 0.949 на отложенной десятой части обучающей выборки, а не на тесте. Но и с этими оговорками картина поучительна: подсчёт слов проходит бо́льшую часть пути, большая модель без обучения может сильно отстать, а последние пункты, по-видимому, требуют предобученной модели, дообученной на задаче. Результаты заметки о классификации указывают протокол каждого числа. Знание этого и позволяет выбирать.
- Стоимость и контроль. Дообученный энкодер классифицирует документ за один проход с известной точностью; модель с промптом порождает текст, который нужно разобрать и проверить. Для узкой задачи в масштабе маленькая модель часто выигрывает по стоимости, задержке и возможности её измерить.
- У сбоев есть механизмы. Невиданные слова взрывают перплексию языковой модели (у несглаженной униграммной модели, обученной на небольшом корпусе анекдотов, перплексия на отложенном тексте порядка в заметке об n-граммах); написанное вручную отображение меток молча меняет местами два типа сущностей; согласие небольшой модели-судьи с людьми, 0.19 на 28 примерах, неотличимо от нуля (заметка об оценке LLM). Каждый такой сбой легко найти, если знать механизм, и трудно заметить иначе.
План курса#
Курс следует одной основной линии: большинство методов вводится конкретным провалом предыдущего. Несколько шагов — ответвления, а не исправления: другой способ сделать ту же работу, а не починка предыдущего.
Линия курса: большинство методов отвечает на провал предыдущего
- Основы работы с текстом. Что такое строка и как её чистят, токенизация подсловами, корпусы и оценка качества.
- Классический NLP. Мешок слов и TF-IDF; n-граммные языковые модели, перплексия и сглаживание.
- Распределённые представления. Плотные векторы слов, Word2Vec, GloVe и FastText.
- Нейросетевые модели последовательностей. Свёрточные сети для текста, рекуррентные сети, LSTM и GRU, модели sequence-to-sequence и внимание, которое сняло их узкое место.
- Трансформеры. Self-attention, блок трансформера, позиционные представления, модель перевода.
- Предобученные языковые модели. BERT, GPT и декодирование, семейства моделей, перенос обучения.
- Адаптация и эффективные модели. Дообучение, параметрически эффективное дообучение (LoRA, настройка промпта), обучение на инструкциях и выравнивание, квантизация.
- Задачи NLP. Классификация текстов, пары предложений и их близость, распознавание именованных сущностей, ответы на вопросы, суммаризация.
- Современные LLM-системы. Эмбеддинги и семантический поиск, генерация с извлечением, инструменты и агенты, оценка LLM.
- Продвинутая генерация. Генерация текста без порядка слева направо.
В каждой следующей заметке есть разобранный пример с числами, которые можно проверить вручную, а в конце — раздел «Ноутбук», практическая часть, где описан ноутбук курса, в котором метод запускается.
Что нужно запомнить#
- NLP превращает текст в метку, в метку на каждый токен, в другой текст или в продолжение; эти четыре формы покрывают задачи курса.
- Языковая модель раскладывает вероятность текста в произведение вероятностей следующего токена; обучение минимизирует кросс-энтропию, а перплексия — её удобочитаемая форма.
- Язык труден, потому что у символов нет геометрии, словарь открыт и распределён по Ципфу, смысл зависит от контекста, порядок важен на больших расстояниях и правильных ответов много.
- На AG News подсчёт слов даёт 0.918 на тесте, а дообученный BERT — 0.949 на отложенной части обучающей выборки; протоколы разные, так что это не прямой рейтинг. Сначала измерьте сильный бейзлайн — по тому же протоколу, что и модель, которая должна его обойти.
- Курс идёт от подсчётов к LLM-системам, и большинство методов отвечает на провал предыдущего; текстовая диффузия в конце — ответвление, другой порядок порождения.
Дальше#
Прежде любой модели текст нужно превратить в единицы, которые программа может посчитать. Об этом Текст как данные: байты, Unicode, сегментация и очистка.
Литература#
- D. Jurafsky, J. H. Martin. Speech and Language Processing, 3rd edition draft. 2025. Главы 2–3: токены и n-граммные языковые модели.
- J. Eisenstein. Introduction to Natural Language Processing. MIT Press, 2019.
- Y. Goldberg. Neural Network Methods for Natural Language Processing. Morgan & Claypool, 2017.
- C. D. Manning, H. Schütze. Foundations of Statistical Natural Language Processing. MIT Press, 1999. Гл. 1.4: закон Ципфа и частоты слов.
- G. K. Zipf. Human Behavior and the Principle of Least Effort. Addison-Wesley, 1949.
- X. Zhang, J. Zhao, Y. LeCun. Character-level convolutional networks for text classification. NeurIPS, 2015. Бенчмарк AG News.
- R. Bommasani et al. On the opportunities and risks of foundation models. arXiv:2108.07258, 2021. Одна предобученная модель, адаптированная ко многим задачам.