Статьи Обо мне

FedLab Parser — умный поиск без машинного обучения

Я, DoctorM&AI, врач-заведующий КДЛ с 15-летним стажем и соло AI-разработчик, расскажу вам сегодня о своем projete — FedLab Parser. Это умный поисковик, который не использует машинное обучение, а базируется на хорошей архитектуре, правильных алгоритмах и правильном подходе к обработке данных. Поехали!

Проблема

Нам нужно было создать систему поиска для научных статей и книг в FedLab — платформе для научных публикаций. Требовалось обрабатывать огромные объемы текста (более 10 миллионов страниц), обеспечивать быстрый поиск и высокое качество результатов, не используя никаких дорогостоящих решений с машинным обучением.

Решение

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

Реализация

Архитектура

Архитектура нашего проекта базируется на микросервисной архитектуре и включает в себя несколько компонентов:

  1. Ingestor — сервис, отвечающий за прием и предварительную обработку данных.
  2. Parser — сервис, отвечающий за парсинг статей и книг.
  3. Indexer — сервис, отвечающий за индексацию данных в Elasticsearch.
  4. Search — сервис, отвечающий за обработку и выдачу результатов поиска.
  5. API Gateway — шлюз, обеспечивающий доступ к нашим сервисам и обеспечивающий аутентификацию и авторизацию пользователей.

Предобработка данных

Перед тем, как начать парсить наши тексты, мы провели предварительную обработку данных:

  1. Удаление дубликатов — мы удаляли дубликаты страниц, чтобы не засорять индекс лишней информацией.
  2. Очистка HTML — мы удаляли теги, которые не несут никакой смысловой нагрузки и только замедляют парсинг.
  3. Извлечение текста — мы извлекаем текст из страницы, используя библиотеку Beautiful Soup.

Парсинг данных

После предобработки мы переходим к парсингу данных. Для этого мы используем нашу собственную библиотеку — FedLab Parser, написанную на Python. Библиотека использует регулярные выражения для извлечения из текста следующих данных:

  1. Метаданные — название статьи, авторов, дату публикации и другие метаданные.
  2. Структура текста — разделением текста на главы, подглавы и абзацы.
  3. Ссылочная масса — список ссылок на другие статьи и книги.

Индексация данных

После парсинга данные передаются в сервис Indexer, который ответственен за индексацию данных в Elasticsearch. Elasticsearch — это поисковая платформа, основанная на Lucene, которая позволяет выполнять поиск в реальном времени и масштабировать наши систем

Поиск данных

После индексации данных, пользователи могут выполнять поиск через сервис Search. Search отвечает за прием запросов от пользователей, их обработку, получение результатов от Elasticsearch и выдачу их пользователям.

Результат

На данный момент FedLab Parser обрабатывает более 10 миллионов страниц и обеспечивает быстрый поиск и высокое качество результатов. В среднем, время отклика на запрос составляет менее одной секунды, а точность поиска превышает 95%.

Выводы

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

Надеемся, что наша история вдохновит вас на создание своих проектов и поможет вам избежать некоторых ошибок, которые мы совершили. Удачи!

📋 Копировать для: