Клиент
Наш клиент оказывает комплексные услуги по проведению клинических исследований (КИ) для фармацевтической и биотехнологической промышленности. В штате компании работает более 70 тысяч сотрудников из 60 стран мира. Аркадия сотрудничает с клиентом с 2014 года.
Задачи
Одним из ключевых документов клинического исследования является протокол. В нём описаны цели, дизайн и все аспекты организации исследования. В базах данных заказчика хранятся тысячи протоколов КИ (как правило, это документы в формате PDF или DOCX). Заказчик попросил нас разработать приложение, которое структурирует информацию, представленную в текстовом виде, и выполняет сложный поиск по произвольным критериям.
Решение
Перед добавлением в поисковый индекс документы требуют дополнительной обработки, поскольку они создаются и хранятся в неструктурированном виде. При поиске нужно использовать параметры исследований и другую структурированную информацию.
Поэтому разработанное решение включает две основных функциональности: извлечение структурированной информации из документов и собственно поиск.
Добавление документов в поисковый индекс
Основной информационной единицей (объектом) в базе данных является клиническое исследование. Его можно добавить вручную либо загрузить из другой базы данных. К объекту-исследованию добавляются протокол исследования и другие документы в формате DOCX/PDF. Из них автоматически извлекается всё содержимое, кроме колонтитулов, непечатаемых символов и картинок.
Далее, система анализирует полученный текст и находит в нём секции (главы). Если в тексте есть секция «Критерии включения / исключения» (характеристики, которыми должны обладать потенциальные участники для рассмотрения возможности их включения в КИ), то производится семантическая разметка текста в ней. Находимой в тексте информации о параметрах исследования (пол, возраст, вес участников, лекарство и др.) присваиваются специальные метки — т.н. аннотации. Полученную разметку можно проверить и при необходимости откорректировать вручную посредством веб-инструмента brat rapid annotation tool. Эта разметка позволяет в дальнейшем находить протоколы по заданным параметрам.
Режим поиска
Полнотекстовый поиск реализован при помощи поисковой системы Elasticsearch. Она обеспечивает поиск в режиме, близком к реальному времени — новые документы индексируются и становятся доступны для выдачи по запросу в течение нескольких минут после добавления в базу данных. В настоящее время Elasticsearch — одна из самых популярных поисковых систем; в частности, её используют в своих технологических стеках Uber, Slack и Microsoft.
Разработанное решение позволяет искать по:
- базовым параметрам — наименование КИ, дата создания, страна и т.д;
- тексту — учитывая синонимы, гиперонимы, гипонимы, связанные термины и т. д. Пользователь может выбрать, какой справочник синонимов использовать при поиске — это влияет на результаты поиска. При этом синхронизировать Elasticsearch после смены справочника не требуется;
- различным дополнительным критериям. Например, если указать длительность клинического исследования (clinical trial period) < 8 недель, то будут найдены все протоколы КИ длительностью от 1 до 7 недель включительно.
Пользовательский интерфейс приложения
Полученный список сортируется по релевантности; тут же можно открыть исследование и посмотреть прикреплённые файлы, секции и ассоциации.
Если пользователь обнаружил ошибки в сведениях о найденных КИ и обладает правами на их изменение, то он может сделать это прямо из поисковой выдачи. В этом случае обновление индексов в Elasticsearch наступит в течение 1 минуты (интервал времени между обновлениями может настраиваться).
Отзыв менеджера проекта со стороны клиента:
Результат
Работа над проектом продолжалась почти 1 год. За это время мы создали инструмент, который позволяет осуществлять поиск клинических исследований по различным критериям — фрагменты текста с учётом синонимов, основные параметры исследований и различные дополнительные показатели — на основе информации, хранящейся в виде текстовых документов PDF/DOCX. Для этого мы создали также инструмент для автоматического анализа и семантической разметки текстов при добавлении в базу данных клиента.