"Информатика (углублённый уровень)", Калинин И.А., Самылкина Н.Н.
Анализ текста на естественном языке помогает компьютеру работать с человеческой речью: находить сведения, определять тему и тональность, проверять написание и переводить. Для этого текст сначала подготавливают, делят на элементы и при необходимости связывают разные формы слов с начальными. Затем программа использует правила, словари и статистические модели. Результат не всегда точен: значение слов зависит от контекста, а качество анализа — от данных и выбранного метода.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Естественный язык — язык общения людей, правила которого сложились и продолжают развиваться в употреблении. В отличие от формального языка, например языка программирования, он допускает исключения, разные варианты выражения мысли и неоднозначность. Это объясняет, почему компьютеру недостаточно просто проверить текст по строгому набору правил.
Корпус текстов — большая упорядоченная коллекция текстов, предназначенная для компьютерного анализа. В корпусе могут быть разметка — дополнительные сведения о словах, предложениях или типе текста — и средства поиска. Разметка помогает программе находить нужные примеры, а поиск позволяет быстро отбирать материалы для анализа или обучения модели.
Токенизация — разделение текста на элементы, называемые токенами: слова, знаки препинания или другие фрагменты. Например, в строке «Привет, мир!» запятая и восклицательный знак могут стать отдельными токенами. В сокращениях, датах и составных выражениях границы не всегда очевидны, поэтому способ деления выбирают с учётом задачи.
Лемматизация — приведение словоформы к начальной форме, или лемме. Формы «книгой», «книги» и «книгам» связываются с леммой «книга», хотя окончания у них разные. Это нужно, чтобы программа могла считать их формами одного слова, а не тремя независимыми единицами.
Людям обычно легко понять слово по ситуации, но компьютер не располагает человеческим опытом. Одно слово может иметь несколько значений, а одна мысль — выражаться разными формами слова. Значение также зависит от соседних слов и их порядка: если убрать контекст, фраза может стать непонятной или получить неверное толкование. Поэтому программа оценивает не только отдельные слова, но и связи между элементами текста.
Перед анализом текст подготавливают, потому что случайные символы и разное оформление мешают сопоставлять фрагменты. Сначала могут удалить лишние пробелы и технические элементы, затем разделить текст на предложения и токены. Иногда символы приводят к единому виду, например заменяют разные варианты кавычек одним. Объём подготовки зависит от задачи: для поиска словоизменительные формы могут быть важны, а для тематической классификации часть оформления можно не учитывать.
Одной токенизации недостаточно, если нужно сопоставить разные формы одного слова. Например, запрос с начальной формой может не найти все употребления в падежах, если программа рассматривает каждую форму отдельно. Лемматизация объединяет такие варианты, но и она не объясняет, какую роль слово играет в предложении. Для этого учитывают грамматические признаки — например, часть речи и форму — и контекст, чтобы различить похожие написания или значения.
Закономерности в тексте компьютер находит с помощью правил, словарей и статистических моделей. Правило задаёт условие обработки, словарь содержит известные слова и сведения о них, а модель оценивает варианты на основе примеров. Такие примеры часто берут из корпуса, где тексты могут быть размечены людьми. Чем лучше материал корпуса соответствует задаче, тем полезнее выводы модели; незнакомые темы и редкие выражения могут снизить точность.
Подготовленный текст можно использовать для разных практических задач. Классификатор распределяет сообщения по темам или определяет, положительный отзыв или отрицательный; поиск помогает находить нужные сведения, а проверка орфографии — замечать возможные ошибки. Сходные методы применяются при автоматическом переводе. Во всех этих случаях программа не просто «понимает» текст как человек: она обрабатывает данные по правилам или оценивает вероятные варианты, поэтому результат стоит проверять.
| Этап | Что выполняется | Результат | Пример применения |
|---|---|---|---|
| Подготовка текста | Удаление лишних элементов, нормализация символов, выделение предложений | Текст в удобном для обработки виде | Очистка сообщений перед анализом |
| Токенизация | Разделение текста на слова, знаки и другие токены | Последовательность отдельных элементов | Поиск слов и знаков препинания |
| Лемматизация | Приведение словоформ к начальным формам | Связанные с леммами словоформы | Поиск разных форм слова «книга» |
| Определение грамматических признаков | Определение части речи и грамматической формы слова | Токены с грамматическими характеристиками | Разбор предложения |
| Анализ смысла или классификация | Оценка содержания и отнесение текста к категории | Вывод о смысле, теме или тональности | Определение тональности отзыва |
Таблица показывает типичную последовательность: каждый этап готовит данные для следующего, хотя конкретная задача может не требовать всех шагов. Например, для подсчёта знаков препинания лемматизация не нужна. Используйте столбец «Результат», чтобы проверить, какие данные получит программа перед переходом к следующему этапу.
Задача 1. Разделить предложение «Привет, мир!» на токены и объяснить, почему нельзя терять запятую и восклицательный знак. Токенизируем знаки препинания отдельно от слов, чтобы сохранить структуру сообщения. Это важно, поскольку запятая обозначает границу между обращением и остальной частью фразы, а восклицательный знак передаёт тип интонации.
Ответ: получаются четыре токена; знаки препинания сохраняются, потому что могут быть нужны для разбора структуры и выразительности фразы. Конкретный анализатор может использовать и другие правила, но их следует задавать заранее.
Задача 2. Сгруппировать формы «книгой», «книги», «книгам» по начальной форме. Для этого нужно определить лемму, а не просто отбросить одинаковое число букв с конца. Окончания у слов различаются, а в других примерах механическое отсечение может повредить основу или привести к несуществующей форме.
Ответ: «книгой» → «книга», «книги» → «книга», «книгам» → «книга». Лемматизация опирается на свойства слова и грамматический разбор, а не на одинаковую операцию удаления окончания.
Задача 3. Предложить способ автоматически определить, положительный или отрицательный отзыв перед нами, и проверить его на нескольких примерах. Это задача классификации: каждому тексту нужно присвоить одну из двух категорий. Проверка на разных примерах нужна, чтобы выяснить, не принимает ли программа случайные слова за надёжный признак.
Ответ: можно применить классификатор тональности и оценить его на нескольких новых отзывах. Если отзыв «Отлично, снова всё сломалось» назван положительным только из-за слова «отлично», значит, выбранных признаков недостаточно и нужно учитывать контекст.
Считать, что пробелы всегда однозначно разделяют слова, — ошибка: рядом со словом могут стоять знаки препинания, а сокращения и составные выражения требуют отдельных правил. Её допускают, потому что в простых предложениях пробелов часто хватает. Проверка: посмотрите, как обработаны «т. е.», даты и запятые, и убедитесь, что значимые элементы не склеились с соседними словами.
Лемматизацию иногда путают с удалением окончаний, хотя механическое отсечение не определяет начальную форму и может исказить слово. Такой способ кажется удобным, потому что формы одного слова часто похожи на письме. Проверка: сравните результат с правильной начальной формой и убедитесь, что он является реальным словом, а не случайно обрезанным фрагментом.
Приписывать слову одно значение вне контекста — значит игнорировать многозначность и рисковать ошибкой в анализе смысла или тональности. Это происходит, когда ориентируются только на словарь или отдельные «положительные» и «отрицательные» слова. Проверка: прочитайте соседние слова и выясните, меняют ли они значение, например из-за отрицания или иронии.
Считать компьютерный результат безошибочным тоже неверно: на точность влияют данные, метод и сходство новых текстов с примерами. Ошибку допускают, когда принимают автоматический ответ за доказанный факт. Проверка: сопоставьте прогноз с несколькими текстами, понятными человеку, и отдельно изучите случаи, где модель ошиблась.
Для работы с текстом полезно знать, как компьютер представляет символы: кодирование задаёт их числовые значения, а строки позволяют хранить и обрабатывать последовательности символов. Базовые знания об алгоритмах и таблицах данных помогают понять порядок обработки и устройство корпуса. Представление о вероятностях объясняет, как статистическая модель выбирает наиболее подходящий вариант, но не гарантирует правильный ответ. Эти основы пригодятся при изучении искусственного интеллекта и машинного обучения, а также поисковых систем и автоматического перевода.
Чем естественный язык отличается от языка программирования?
Естественный язык складывается и меняется в общении людей, поэтому в нём встречаются неоднозначность и исключения. Язык программирования задаётся строгими правилами: запись команды должна соответствовать его синтаксису.
Зачем компьютеру разбивать текст на токены?
Токенизация превращает сплошную строку в отдельные элементы, с которыми удобно выполнять поиск и дальнейший анализ. Токенами могут быть слова и знаки препинания, поэтому правила деления должны учитывать особенности текста.
Чем лемматизация отличается от удаления окончаний?
Лемматизация определяет начальную форму слова с учётом его строения и грамматики. Простое удаление окончания механически отсекает символы и может оставить несуществующую или неверную форму.
Почему одно и то же слово может быть понято по-разному?
У слова может быть несколько значений, а нужное обычно становится понятным из соседних слов и ситуации. Например, слово «лук» может обозначать растение или оружие, и одному словарному совпадению недостаточно, чтобы выбрать значение.
Может ли компьютер безошибочно определить тональность текста?
Нет, результат может зависеть от контекста, иронии, качества примеров и выбранной модели. Например, слово с положительной окраской иногда употребляют в отрицательном смысле, поэтому классификатор может ошибиться.
§ 25. Анализ текста на естественном языке