При поддержке Фонда содействия инновациям разработали платформу, которая объединяет в себе системы интеллектуального поиска, автоматического аннотирования и классификации документов.
Проведя исследование, аналитики нашей компании пришли к следующим выводам:
Поиск документов должен быть быстрым, интуитивно понятным и удобным для пользователя. Также было бы предпочтительно использовать механизмы, которые самостоятельно обучаются, находят связи между данными, классифицируют их и формируют семантические поля.
В итоге в Sibedge родилась идея создания платформы, которая автоматически анализирует хранилище с корпоративной документацией, классифицирует документы и формирует аннотации к ним. Пользователь может на привычном ему разговорном языке взаимодействовать с системой, которая быстро находит нужные ему данные.
После этого специалисты проверяли работу нейросети — сравнивали получившуюся аннотацию с той, которую сформулировали авторы оригинального документа. Со временем удалось добиться точности совпадения на уровне более 80%. Модуль способен анализировать текст без участия человека и выделять из него ключевые слова и формулировки, формируя аннотацию длинной до 600 символов.
В процессе поиска пользователь видит документы, в чьих аннотациях содержатся интересующие его ключевые слова или словосочетания. Это значительно повышает скорость и релевантность поиска. В основу модуля аннотирования легли технологии Python 3.10, FastAPI, NLTK, Gensim и spaCy.
Нейросеть быстро научилась определять тип документа с точностью 89%. Она с лёгкостью отличает регламенты компании от приказов на увольнение или заявлений на отпуск и других документов. При этом нейронную сеть можно легко обучить классифицировать другие категории текстов. Например, она может сортировать научные статьи по темам: истории, философии, политике, социологии и другим наукам.
При создании модуля классификации мы использовали Python 3.10, FastAPI, PyTorch и модели Transformers.
Дополнительно были разработаны две утилиты, которые расширяют функциональность ElasticSearch в плане контроля за версиями индексов и устранения ошибок при переносе данных. Ещё одно преимущество созданного решения в том, что в процессе индексации/реиндексации данных поисковая система остаётся доступной пользователям в режиме 24/7. Для этого на время индексации мы задействуем резервный индекс.
Нам также удалось добиться высокой скорости индексирования, аннотирования и классификации документов. В таблице приведены скорость работы платформы с разными типами документов. Количество документов — 1000, средний размер файла — 460 КБ.
Пользователь теперь взаимодействует с единым веб-интерфейсом и окном доступа для поиска по всем подключенным к платформе хранилищам документов. Ему больше не нужно бегать по разным поисковым сервисам, переключаться между внешними хранилищами и тратить дополнительное время. Поиск осуществляется сразу везде, по всем хранилищам.
Веб-интерфейс в части дизайна легко настраивается под любой корпоративный стиль, включая цвета, изображения и текстовые надписи. После настройки дизайна интерфейс легко встраивается в любую корпоративную систему управления контентом.
Нам удалось добиться качественного анализа данных при минимальном предварительном обучении. Моделям, которые работают на базе нейронных сетей, требуется порядка 1500 документов и полтора-два часа на их изучение, после чего они демонстрируют точность классификации и аннотации на уровне 80–89%.
Проблема
Рано или поздно многие компании сталкиваются с проблемой организации эффективного поиска документов и быстрого доступа к нужной информации. Когда в корпоративном хранилище накапливаются сотни тысяч неструктурированных файлов и документов, может оказаться, что на поиск нужной информации уходит слишком много времени и сил.Проведя исследование, аналитики нашей компании пришли к следующим выводам:
- Почти в каждой компании более 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 КБ.
Пользовательский интерфейс
Frontend-составляющая была написана с помощью фреймворка Vue.js. Администратор с помощью интерфейса может подключить к платформе любое стороннее хранилище документов, включая Google Диск, Dropbox, Bitrix и другие. Также он указывает, что сделать с информацией в хранилище: просто проиндексировать, или же в процессе индексации аннотировать и классифицировать тексты.Пользователь теперь взаимодействует с единым веб-интерфейсом и окном доступа для поиска по всем подключенным к платформе хранилищам документов. Ему больше не нужно бегать по разным поисковым сервисам, переключаться между внешними хранилищами и тратить дополнительное время. Поиск осуществляется сразу везде, по всем хранилищам.
Веб-интерфейс в части дизайна легко настраивается под любой корпоративный стиль, включая цвета, изображения и текстовые надписи. После настройки дизайна интерфейс легко встраивается в любую корпоративную систему управления контентом.
Результат
Разработка платформы была разбита на два этапа и продлилась год. Над системой работала команда из 14 специалистов, включая Backend- и Frontend-разработчиков, QA-специалистов, DevOps-инженера, ML-инженеров и ML-аналитика. В результате нам удалось создать понятный и эффективный инструмент, который позволяет значительно упростить процесс поиска документов и нужной информации в корпоративных хранилищах документов.Преимущества платформы
- Точный поиск по смыслу и содержанию текста, а не только по названиям файлов.
- Единый интерфейс поиска документов по всем хранилищам.
- Быстрая интеграция в существующую инфраструктуру компании.
- Удобная система фильтров по типам и темам документов.
Нам удалось добиться качественного анализа данных при минимальном предварительном обучении. Моделям, которые работают на базе нейронных сетей, требуется порядка 1500 документов и полтора-два часа на их изучение, после чего они демонстрируют точность классификации и аннотации на уровне 80–89%.