Реализация извлечения ключевых фраз (Keyword/Keyphrase Extraction)

Ручной разбор договоров и заявок отнимает часы, а важные термины теряются. Мы разрабатываем извлечение ключевых фраз под ключ: настраиваем разметку под ваш корпус и передаём готовое решение. Покрытие терминов растёт, а объём ручной проверки сокращается в разы.
Часто задаваемые вопросы

Почему извлечение ключевых фраз ломается на живых текстах

Извлечение ключевых фраз выглядит простой задачей, пока тексты однотипные и чистые: подали документ — получили список терминов. На живом корпусе — договорах, протоколах совещаний, сканах, переписке — точность на реальных текстах падает, и в ответ вместе со смыслом приходят колонтитулы, реквизиты и обрывки таблиц.

Первый источник потерь — сама терминология. В одном подразделении пишут «узел учёта», в другом — сокращение, в третьем — опечатку от спешки, и один и тот же объект распадается на десяток написаний. Словарь предметной области у каждого заказчика свой, а без него извлечение ключевых фраз не понимает, что считать вариантом нормы.

Второй — шум в документах. Текст приходит из вёрстки, из таблиц, из сканов после распознавания, где символы склеиваются и путаются. Тогда команда уходит в ручной перебор терминов: списки стоп-слов, ручные правила, синонимы под каждый новый шаблон. Конструкция держится до первой смены поставщика или формы документа.

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

Эффект внедрения: покрытие терминов и объём ручной разметки

На старте проекта по разбору технических регламентов эксперт размечал термины вручную: около четырёхсот значимых фраз на тысячу страниц. До трети из них он физически не успевал отметить — они всплывали позже, на согласовании, когда документ уже ушёл дальше по процессу. Пропущенный термин обходится дороже лишнего: он не попадает в словарь, и в следующих документах система снова его не видит.

После настройки извлечения ключевых фраз покрытие терминологии вышло на 92–96% от экспертной разметки на том же типе документов. Основа — словарь предметной области, собранный из уже размеченных фрагментов; KeyBERT дообучается на этих парах, поэтому составные названия вроде «датчик давления контура охлаждения» остаются целыми, а не распадаются на отдельные слова.

Ручная разметка сокращается примерно в пять раз и меняет характер: эксперт не размечает с нуля, а подтверждает или отклоняет предложенное, тратя время на спорные случаи. Класс ошибок «пропущенный термин» уходит не полностью, но перестаёт быть системным — на него приходятся единичные случаи вместо трети корпуса.

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

Подходы к извлечению: правила, статистика, языковые модели

Логика выбора начинается не с модели, а с характера данных. Там, где терминология закрытая и повторяется — регламенты, номенклатура, типовые договоры — словарные правила дают предсказуемые попадания и не требуют разметки. Как только корпус становится разнородным, словарь начинает отставать: каждую новую формулировку приходится вносить вручную.

Обучаемая модель выигрывает при стабильном домене и наличии нескольких сотен размеченных документов — она ловит фразы, которых нет в справочнике. Языковая модель подключается там, где совпадения буквального нет, а смысл сохраняется: перефразировки, синонимы, сокращения. На большинстве проектов мы собираем гибридную схему: кандидатов поставляют правила и статистика, а ранжирует их модель — редкие термины не теряются, а шум отсекается.

Подход Когда подходит Ограничения
Словарные правила Закрытая терминология, частые повторы, нужен объяснимый результат Не находит новые формулировки, словарь ведётся вручную
Обучаемая статистическая модель Есть разметка, домен стабилен, важна скорость на больших объёмах Зависит от качества разметки, проседает при смене тематики
Языковая модель Перефразировки, синонимы, нужен учёт контекста Требует ресурсов, ограничена длиной документа
Гибридная схема Разнородные документы, высокие требования к полноте и точности Сложнее в поддержке, нужен контроль на каждом шаге

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

Как проходит внедрение: от разбора корпуса до передачи решения

Порядок работ почти не зависит от того, где применяется извлечение ключевых фраз — в поиске по базе знаний, разборе обращений или аналитике отзывов. Сначала разбираем корпус, потом фиксируем разметку, и только затем настраиваем модель: если шаги поменять местами, получается решение, которое показывает красивые примеры и не переносится на реальный поток документов.

  1. Разбор корпуса. Смотрим, из чего состоит поток: типы документов, языки, доля дублей и служебного текста, есть ли готовая разметка. На выходе видно, где нужна нормализация — кодировки, колонтитулы, мусор после распознавания сканов.
  2. Постановка разметки. Договариваемся, что считаем ключевой фразой: длину, границы, вхождение в заголовок, обработку синонимов и сокращений. Размечаем эталонный набор и считаем согласие между разметчиками — без этого метрики качества ничего не значат.
  3. Схема извлечения. Собираем контур: базовый слой на статистике и совместной встречаемости слов, поверх — модель под домен, плюс нормализация, стоп-листы и словари терминов заказчика.
  4. Настройка под домен. Уточняем параметры на валидационной части, добавляем синонимы и названия продуктов, дообучаем модель на размеченных примерах.
  5. Проверка на отложенной выборке. Тестовый набор фиксируем заранее и не трогаем при настройке: считаем полноту и точность по фразам, разбираем ошибки по типам. Набор остаётся у заказчика как регрессионный — на нём проверяются любые дальнейшие правки.
  6. Передача решения. Отдаём код, конфигурации, модель, схему разметки и регламент обновления словарей. Обучаем команду, чтобы правки вносились без нас.

Что остаётся заказчику: конфигурации, разметка, регламенты

Мы отдаём не только работающий сервис, но и всё, что нужно для его самостоятельного развития. Комплект передачи рассчитан на вашу команду: инженерам — настройки и код, аналитикам — разметку и правила, руководителю — регламент, по которому решение живёт дальше.

  • Конфигурация схемы извлечения: правила нормализации текста, стоп-слова, веса частей речи и пороги отсечения вынесены в отдельный файл настроек, а не спрятаны в коде.
  • Размеченный корпус на 1–3 тысячи документов вашей предметной области: эталонные ключевые фразы, разделённые на обучающую и проверочную части.
  • Инструкция по разметке: что считаем ключевой фразой, как склеивать составные термины, как разбирать спорные случаи — чтобы новые данные размечались одинаково разными людьми.
  • Схема обработки текста от приёма документа до выдачи результата: где стоят проверки, где пишутся журналы событий, куда добавлять новые шаги.
  • Регламент обновления словаря и моделей: периодичность, кто согласует изменения, как фиксируется просадка качества на проверочной выборке.
  • Набор проверок и метрики прогона на эталонном корпусе — видно, стало извлечение точнее или хуже после правок.
  • Документация по интеграции: форматы запроса и ответа, ограничения по объёму, поведение при пустом результате.

Каждый пункт — это файл, раздел документации или выданный доступ, а не устная договорённость. Через месяц после запуска вы сами меняете порог отсечения или добавляете свои правила разметки и сразу видите эффект на проверочном корпусе.

Кейс: как изменилось качество разбора документов после внедрения

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

Мы разметили эталонную выборку по классам полей и начали измерять точность и полноту отдельно по каждому классу, а не одной средней оценкой. Извлечение кандидатов собрали на spaCy, добавили словарные якоря и досчёт составных терминов с аббревиатурами по всему документу, а не по абзацу. Порог уверенности вывели в отдельную очередь: аналитик видит не весь поток, а только спорные места.

Метрики до и после

На том же потоке полнота выросла с 61% до 93%, точность — с 74% до 96%. Доля документов, уходящих в ручную проверку, упала с 100% до 18%, а разбор пакета на 200 страниц сократился с трёх часов до получаса.

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

Чем разметка под задачу отличается от готового словаря терминов

Готовый словарь терминов — это статичный список с нормализацией форм и порогом совпадений. Он уверенно отвечает на вопрос, встречается ли известное нам слово, но не на вопрос, называет ли эта фраза суть документа. Такой список прозрачен, объясняется проверяющему и правится одной строкой — поэтому как отправная точка он уместен почти всегда.

Разметка под задачу начинается не со списка, а со схемы: что именно считаем ключевой фразой в вашем домене — свойство изделия, дефект, сторону сделки, действие или условие. Дальше на корпусе ваших документов фиксируются критерии, спорные случаи и правило их разрешения, а разметку ведут несколько человек с регулярной сверкой. Мы отдельно считаем долю спорных фрагментов: если она высока, инструкция сырая, и модель выучит шум вместо закономерности.

Практическое отличие подходов в том, что словарь закрывает покрытие известных сущностей — регламентные термины, коды, устойчивые наименования, — а разметка задаёт границы фразы и её приоритет среди прочих. Рабочая стратегия чаще гибридная: словарь служит источником стартовых меток и жёстким слоем правил, поверх которого обученная на разметке модель разбирает живые формулировки.

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

Частые технические сомнения: разметка, качество, сопровождение

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

Придут документы нового типа — извлечение деградирует?

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

Сколько документов нужно разметить?

На старте — несколько сотен фрагментов; дальше работает активное дообучение: в разметку первыми уходят случаи с низкой уверенностью модели и пограничные термины. Каждая следующая сотня примеров даёт больше, чем предыдущая, и объём разметки растёт медленнее, чем качество извлечения.

Как принимаем работу и считаем качество?

Пороги точности и полноты фиксируем до старта — отдельно по каждой категории ключевых фраз, по редким терминам и по документам с плохим сканом. Спорные случаи сводим в один список: решение по каждому принимает ваша сторона, а не метрика вслепую.

Сможем сопровождать решение своими силами?

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

Обсудим задачу и вернёмся с оценкой и планом работ

Чтобы разговор сразу шёл по делу, приложите к нему образцы: 20–50 реальных документов из тех, что будут обрабатываться, включая «неудобные» — сканы, тексты с таблицами, колонтитулами и битой вёрсткой. Чем ближе выборка к рабочему процессу, тем точнее мы оценим, где извлечение ключевых фраз упрётся в качество исходного текста, а где достаточно настройки правил и словаря.

Полезно подготовить к обсуждению:

  • список предметных терминов и сущностей, которые обязаны попадать в результат;
  • примеры «правильных» ключевых фраз, размеченные вручную хотя бы на десятке документов;
  • ожидаемый класс ошибок: что критичнее — пропустить значимую фразу или добавить лишнюю;
  • требования к формату выдачи: таблица, файл, запись в базу или вывод прямо в интерфейсе;
  • ограничения по доступам и хранению: где лежат данные и что нельзя выносить за контур;
  • целевой объём: сколько документов в день обрабатывается и с какой скоростью нужен результат.

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

Опишите задачу — вернёмся с оценкой, планом этапов и критериями приёмки пилота.

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139