FedLab Parser — умный поиск без машинного обучения
Я, DoctorM&AI, врач-заведующий КДЛ с 15-летним стажем и соло AI-разработчик, расскажу вам сегодня о своем projete — FedLab Parser. Это умный поисковик, который не использует машинное обучение, а базируется на хорошей архитектуре, правильных алгоритмах и правильном подходе к обработке данных. Поехали!
Проблема
Нам нужно было создать систему поиска для научных статей и книг в FedLab — платформе для научных публикаций. Требовалось обрабатывать огромные объемы текста (более 10 миллионов страниц), обеспечивать быстрый поиск и высокое качество результатов, не используя никаких дорогостоящих решений с машинным обучением.
Решение
Мы решили пойти по пути традиционных информационных систем и создать умный поиск без машинного обучения. Для этого нам понадобилась надежная архитектура, правильные алгоритмы и грамотная предобработка данных.
Реализация
Архитектура
Архитектура нашего проекта базируется на микросервисной архитектуре и включает в себя несколько компонентов:
- Ingestor — сервис, отвечающий за прием и предварительную обработку данных.
- Parser — сервис, отвечающий за парсинг статей и книг.
- Indexer — сервис, отвечающий за индексацию данных в Elasticsearch.
- Search — сервис, отвечающий за обработку и выдачу результатов поиска.
- API Gateway — шлюз, обеспечивающий доступ к нашим сервисам и обеспечивающий аутентификацию и авторизацию пользователей.
Предобработка данных
Перед тем, как начать парсить наши тексты, мы провели предварительную обработку данных:
- Удаление дубликатов — мы удаляли дубликаты страниц, чтобы не засорять индекс лишней информацией.
- Очистка HTML — мы удаляли теги, которые не несут никакой смысловой нагрузки и только замедляют парсинг.
- Извлечение текста — мы извлекаем текст из страницы, используя библиотеку Beautiful Soup.
Парсинг данных
После предобработки мы переходим к парсингу данных. Для этого мы используем нашу собственную библиотеку — FedLab Parser, написанную на Python. Библиотека использует регулярные выражения для извлечения из текста следующих данных:
- Метаданные — название статьи, авторов, дату публикации и другие метаданные.
- Структура текста — разделением текста на главы, подглавы и абзацы.
- Ссылочная масса — список ссылок на другие статьи и книги.
Индексация данных
После парсинга данные передаются в сервис Indexer, который ответственен за индексацию данных в Elasticsearch. Elasticsearch — это поисковая платформа, основанная на Lucene, которая позволяет выполнять поиск в реальном времени и масштабировать наши систем
Поиск данных
После индексации данных, пользователи могут выполнять поиск через сервис Search. Search отвечает за прием запросов от пользователей, их обработку, получение результатов от Elasticsearch и выдачу их пользователям.
Результат
На данный момент FedLab Parser обрабатывает более 10 миллионов страниц и обеспечивает быстрый поиск и высокое качество результатов. В среднем, время отклика на запрос составляет менее одной секунды, а точность поиска превышает 95%.
Выводы
В ходе работы над проектом мы выяснили, что даже без машинного обучения можно создать умную систему поиска. Для этого нужна правильная архитектура, грамотная предобработка данных и использование правильных алгоритмов. Мы столкнулись со многими трудностями, но каждая из них помогла нам сделать нашу систему лучше. И мы продолжаем работать над проектом, чтобы сделать его еще лучше и удобнее для наших пользователей.
Надеемся, что наша история вдохновит вас на создание своих проектов и поможет вам избежать некоторых ошибок, которые мы совершили. Удачи!