Skip to content
Neuronavt
Go back

Поиск книг в корпусе: алгоритм и ловушки оценки

Кейс8/10

Коротко

Автор построил прототип для поиска совпадений в корпусе примерно из 664 тысяч книг — в том числе по распознанным фрагментам аудиокниг. Главный вывод статьи: сделать поиск недостаточно, нужно ещё надёжно измерять его качество, а метаданные, выборки и даже «нулевые» результаты могут вводить в заблуждение.

Контекст

Автор разрабатывает собственный корпус книг, чтобы не зависеть от идентификаторов внешних каталогов и связывать с книгами результаты своих анализаторов. Практическая задача — найти книгу по нескольким минутам аудио, распознанным Whisper, — привела к разработке поиска и попыткам оценить его качество. Эксперименты запускались параллельными сессиями AI-агентов на разных машинах.

Главное

Как сделано

Автор индексировал текст книг по шинглам, используя блочный MinHash: отпечатки строятся по блокам из 300 шинглов с локальными минимумами. Это помогает находить текст, включённый в более крупный сборник, не штрафуя совпадение только за размер сборника.

После выдачи кандидатов применяется chaining — проверка связности совпадений. Она отсекает случайные россыпи общих шинглов и требует связного совпадающего фрагмента примерно из десятка слов. Для сравнения вариантов автор перешёл к оценке при одинаковой полноте, например 0,95, 0,98 и 0,99, вместо сравнения на разных рабочих порогах.

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

Результаты

Получен работающий прототип поиска книги по тексту другой книги или по распознанному аудиофрагменту, включая случаи, когда один текст входит в другой. На 19 428 запросах, взятых из книг, в 99,17% случаев первым результатом была книга, действительно содержащая искомый текст: в 58,66% это была точная запись, ещё в 40,51% — другой контейнер того же текста, например сборник или другое издание. Доля действительно ложных совпадений составила 0,37%, пустая выдача — 0,46%. Для аудиокниг хотя бы один из десяти фрагментов нашёл приписанную книгу в 80,4% случаев, но это показатель по эвристической, а не проверенной разметке. Автор не считает метрики окончательными: после замеров он переписал сервис и изменил нормализацию текста.

Ограничения

Для честного сравнения алгоритмов нет надёжного размеченного набора; метаданные и связанные с ними источники часто содержат общие ошибки. Правильный ответ может быть множественным, поэтому оценка по одному ID не подходит. Результаты зависят от размера корпуса, порогов, конфигурации индекса и полноты фактической проверки. Аудиосвязи размечены эвристически, причины неудач примерно у 19,6% аудиокниг не установлены. Приведённые численные результаты относятся к прежней версии сервиса, а стоимость экспериментов не указана.

Что взять себе

Читать оригинал, если…

Откройте оригинал, если нужны подробности экспериментов и таблиц, разбор ошибок разметки или практические детали оценки поиска на крупном корпусе.