Наши проекты: поисковая платформа с автоматическим аннотированием и классификацией документов

search_platform_blog.jpg

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

Проблема

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

Проведя исследование, аналитики нашей компании пришли к следующим выводам:

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

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

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

Процесс разработки

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

Модуль обработки поисковых запросов

Для понимания и обработки естественного человеческого языка мы использовали технологии NLU (Natural Language Understanding) и NLP (Natural Language Processing). Пользователь может вводить поисковые запросы на естественном языке, а система предлагает подсказки в соответствии с его предыдущими запросами, наиболее популярными запросами внутри компании, а также выводит на экран подходящие названия общедоступных документов.

Модуль аннотирования

Для ускорения поиска нужных документов, мы разработали модуль автоматического аннотирования текстов. В его основе также лежит нейросеть, обученная на модели Latent Dirichlet Allocation (LDA). ML-инженеры загрузили в неё 1500 документов, а она самостоятельно разбивала их на темы и выделяла ключевые (значимые) слова.

После этого специалисты проверяли работу нейросети — сравнивали получившуюся аннотацию с той, которую сформулировали авторы оригинального документа. Со временем удалось добиться точности совпадения на уровне более 80%. Модуль способен анализировать текст без участия человека и выделять из него ключевые слова и формулировки, формируя аннотацию длинной до 600 символов.

В процессе поиска пользователь видит документы, в чьих аннотациях содержатся интересующие его ключевые слова или словосочетания. Это значительно повышает скорость и релевантность поиска. В основу модуля аннотирования легли технологии Python 3.10, FastAPI, NLTK, Gensim и spaCy.

Модуль классификации

Ещё один модуль отвечает за классификацию документов. В нём мы использовали нейронную сеть, обученную на модели BERT. Эта модель способна эффективно работать с формализованными запросами и ориентироваться в узких семантических областях. Обучение происходило на основе 1500 корпоративных документов.

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

При создании модуля классификации мы использовали Python 3.10, FastAPI, PyTorch и модели Transformers.

Модуль индексации и поиска

В качестве поискового движка мы выбрали ElasticSearch, который немного доработали под свои требования. Например, теперь поддерживается не только полнотекстовый поиск, но также поиск по фрагментам слов. Более того, в процессе индексации происходит аннотирование и классификация документов. При разработке модуля индексации и поиска были использованы Python 3.10, FastAPI, PostgreSQL и FS Crawler.

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

Нам также удалось добиться высокой скорости индексирования, аннотирования и классификации документов. В таблице приведены скорость работы платформы с разными типами документов. Количество документов — 1000, средний размер файла — 460 КБ.

table_jinnee.png

Пользовательский интерфейс

Frontend-составляющая была написана с помощью фреймворка Vue.js. Администратор с помощью интерфейса может подключить к платформе любое стороннее хранилище документов, включая Google Диск, Dropbox, Bitrix и другие. Также он указывает, что сделать с информацией в хранилище: просто проиндексировать, или же в процессе индексации аннотировать и классифицировать тексты.

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

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

Результат

Разработка платформы была разбита на два этапа и продлилась год. Над системой работала команда из 14 специалистов, включая Backend- и Frontend-разработчиков, QA-специалистов, DevOps-инженера, ML-инженеров и ML-аналитика. В результате нам удалось создать понятный и эффективный инструмент, который позволяет значительно упростить процесс поиска документов и нужной информации в корпоративных хранилищах документов.

Преимущества платформы

  • Точный поиск по смыслу и содержанию текста, а не только по названиям файлов.
  • Единый интерфейс поиска документов по всем хранилищам.
  • Быстрая интеграция в существующую инфраструктуру компании.
  • Удобная система фильтров по типам и темам документов.

Нам удалось добиться качественного анализа данных при минимальном предварительном обучении. Моделям, которые работают на базе нейронных сетей, требуется порядка 1500 документов и полтора-два часа на их изучение, после чего они демонстрируют точность классификации и аннотации на уровне 80–89%.

Целевая аудитория

Целевая аудитория, которую может заинтересовать наша платформа, это коммерческий сектор (B2B), где в подобных решениях заинтересованы телекоммуникационные компании, банки и крупные ритейлеры. Проявляет интерес к подобным системам и государственный сектор (B2G), в частности — министерства, органы власти и бюджетные учреждения, которые имеют дело с огромными объемами информации на ежедневной основе и нуждаются в гибких и удобных инструментах поиска документов по всем хранилищам.