Введение в проблематику 3
Постановка задачи 5
Глава 1. Обзор литературы и существующих решений 6
1.1. Литература 6
1.2. Существующие решения 9
Глава 2. Данные 12
2.1. Данные, предоставленные МИАЦ 12
2.2. Тестовые данные 12
Глава 3. Предварительная обработка данных 14
3.1. Виды ошибок 14
3.2. Способы устранения ошибок 15
3.3. Результаты предобработки 16
Глава 4. Алгоритм поиска дубликатов 17
4.1. Индексирование 17
4.2. Вычисление матрицы расстояний 18
4.3. Поиск дубликатов 19
4.4. Мера качества 20
4.5. Полученные результаты 21
4.6. Устранение дубликатов 23
Глава 5. Структура библиотеки 24
5.1. Принципы построения 24
5.2. Описание модулей 25
Заключение 28
Список источников и литературы 29
Во время работы с информационной системой почти всегда возникает ситуация, в которой пользователю нужно ввести какие-либо данные вручную. Опечатки, изначально некорректные данные, невнимательное заполнение полей в форме — все это приводит к тому, что в данных возникают так называемые дубликаты — две или более записи, которые описывают одну сущность. Наиболее наглядно проблема наличия дубликатов выражена в работе с персональными данными.
Специфика процесса накопления персональных данных подробно описана в статье [1]. В течение жизни у человека появляются и исчезают такие идентификаторов личности, как номер бирки новорождённого, номер свидетельства о рождении, номера паспортов (российских и заграничных), номера страховых полисов и т.д. В различных учреждениях идентификация пациента происходит на основе своих собственных политик, следовательно при агрегации данных из различных источников возникает задача сопоставления данных, которые описывают одну и ту же сущность. Помимо того что данные представлены в различных форматах, не стоит забывать о человеческом факторе: записи могут содержать ошибки и опечатки. Кроме вышеописанных сложностей также существует проблема подмена идентичности. Ее причиной может стать как пациент (воспользовался чужим удостоверением личности), так и врач (взял биоматериал одного человека, а в документах указал другого). В качестве решения этой проблемы автор статьи предлагает предоставление доступа пациентам к информации о том, какие медицинские услуги им были оказаны. Данная статья дает весьма полное представление о том, какие проблемы возникают при идентификации личности, в чем их причины и что стоит обязательно учесть при создании таких информационных систем, как медицинские.
Помимо сложностей, возникающих из-за особенностей приобретения идентификаторов, авторы статьи [2] обозначают еще одну немаловажную проблему, с которой сталкиваются специалисты по работе с данными — приватность персональных данных. Из-за юридических ограничений далеко не всегда есть возможность идентифицировать человека по его уникальному номеру (аналогом в РФ могут служить серия и номер паспорта). В таких ситуациях идентификация происходит на основе комбинации таких признаков, как имя, фамилия, пол, дата рождения и т.д. Однако, если даже у одного исследовательского центра есть доступ к уникальному идентификатору пациента, то они могут быть использованы только в рамках собственных исследований. Иными словами, при агрегации данных с другими источниками уникальные идентификаторы не могут быть переданы другим организациям, что существенно снижает полезность таких идентификаторов.
В рамках решения задачи поиска и устранения дубликатов в персональных данных был проведен анализ данных, предоставленных МИАЦ, а также существующих решений на рынке программного обеспечения. На основе результатов анализа было принято решение реализовать собственный подход, так как недостатки рассмотренных решений, описание которых представлено в главе 1.2, не позволяли эффективно решить задачу для МИАЦ.
В ходе работы был разработан прототип библиотеки, включающий в себя как и инструменты для предобработки данных, так и методы поиска дубликатов. Алгоритм был протестирован на тестовой выборке, показал приемлемые результаты, тем самым доказав, что идеи, на которых он основан, являются перспективными. Дальнейшую разработку прототипа библиотеки планируется направить на устранение недостатков текущей версии алгоритма, среди которых главным является необходимость подбора пороговых значений вручную.
1. И. В. Емелин. Идентификация пациентов // Врач и информационные технологии, 2010. № 2. С.24-29.
2. Bakker, B., Groot, M.D., Grootheest, G.V., & Laan, J.V. Record Linkage in Health Data: a Simulation Study // The Hague: Statistics Netherlands, 2014 P. 60.
3. Медицинский информационно-аналитический центр. http://spbmiac.ru/o-miats/istoriya-miats/
4. Pullen D., Wang P., Talburt J., Wu N. Mitigating Data Quality Impairment on Entity Resolution Errors in Student Enrollment Data // Information and Knowledge Engineering Conference, 2013. P. 96-100.
5. Pullen D., Wang P., Talburt J., Wu N. Applying Phonetic Hash Functions to Improve Record Linking in Student Enrollment Data // Information and Knowledge Engineering Conference, 2015. P. 187-191.
6. Brizan D. G., Tansel A. Uz. Survey of Entity Resolution and Record Linkage Methodologies // Communications of the IIMA, 2006. Vol. 3, No 3. P. 41 - 50.
7. Gemmell J., Rubinstein B. I. P., Chandra A. K. Improving Entity Resolution with Global Constraints // Microsoft Research Technical Report MSR-TR- 2011-100, 2011. P. 10.
8. Sauleau E., Paumier J. P., Buemi A. Medical record linkage in health information systems by approximate string matching and clustering // BMC Medical Informatics and Decision Making, 2005. Vol. 5. Art. No 32.
9. Dedupe. Python library for accurate and scalable fuzzy matching, record deduplication and entity resolution. https://github.com/dedupeio/dedupe
10. Сервис «Dedupe.io». https://dedupe.io
11. Сервис «Dadata». https://dadata.ru/clean/
12. Сервис «Мастер адресов». http://www.addressmaster.ru/index.html
13. Нетрика. Компания по разработке ИТ-решений для государственных ведомств. http://netrika.ru
14. N3. Индекс пациентов. ИТ-решение компании «Нетрика». http://netrika.rU/solution/health#solutions
15. Разработанная библиотека. https://github.com/KirovVerst/record linkage
...