удк 3304 в.Н. Гусятников,
Е.А. Палькин
ИНСТРУМЕНТЫ СОПРОВОЖДЕНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ С ПОДДЕРЖКОЙ ЦЕЛОСТНОСТИ ДАННЫХ О ФИЗИЧЕСКИХ ЛИЦАХ
В статье описывается алгоритм для сравнения данных о физических лицах в разнородных системах и рассматривается его эффективность в отношении других методов поиска сходств.
Ключевые слова: алгоритмы анализа строк, распознавание персональных данных, идентификация физического лица, фонетический алгоритм, релевантность алгоритма, алгоритмы сравнения.
V.N. Gusyatnikov, E.A. Palkin
INFORMATION SYSTEMS MAINTENANCE TOOLS WITH THE SUPPORT OF THE PERSONAL DATA INTEGRITY
The paper describes an algorithm for comparing personal data in heterogeneous systems, and considers its effectiveness in comparison with other methods of finding similarities.
The key words: string algorithms, personal data recognition, personal identification, phonetic algorithm, relevance of algorithm, comparison algorithm.
Современный этап развития информационных технологий в сфере экономики связан с усилением интеграции информационных систем (ИС). Экономические ИС включают в свой состав разнородные базы данных (БД), применяют различные алгоритмы обработки информации и механизмы взаимодействия с внешней средой, работают на разных программных и аппаратных платформах и используют разные справочники, что значительно усложняет задачу сопровождения, совместного использования и поддержки целостности распределенных по разным системам данных.
Разнородность систем управления базами данных, используемых в ИС, и структур данных, содержащих информацию, подлежащую слиянию, влечет за собой необходимость применения специальных алгоритмов сравнения при сопоставлении объектов.
Целью настоящей работы является реализация инструментального средства, с высокой достоверностью решающего задачу сопоставления текстовых персональных данных (фамилии, имени и отчества) о физических лицах, информация о которых внесена в разнородные базы данных.
Существует множество алгоритмов, производящих сравнение текстовых объектов между собой или с образцом. Среди них можно выделить алгоритмы, осуще-ствлюящие сравнение на основе построения суффикс-ного дерева или на основе подсчета количества одинаковых последовательно идущих символов. Известны алгоритмы, производящие над сравниваемыми объектами операции вставки, удаления, перемещения символов с присвоением каждому действию некоторых весов и осуществляющие сравнение на основе вычисления дистанции редактирования. Наибольшую известность среди них получили алгоритмы Хемминга, Вагнера - Фишера [4], Смита - Ватермана [3].
Следует отметить, что ни один из вышеперечисленных алгоритмов изначально не разрабатывался для
сравнения строковых данных о физических лицах. Специфика обработки данных объектов учтена при создании алгоритмов Soundex [2] и MetaPhone [1], использующих хеширование для индексированного сравнения на основе звучания слов. Эти два алгоритма легли в основу алгоритма «Фонетик», реализованного в данной работе в среде Delphi 7.
«Фонетик» получает на вход исходную строку и на основе правил, учитывающих произношение звуков и слогов в русском языке, вырабатывает на выходе новую строку называемую ключом для исходной строки. Ключ имеет переменную длину; из одной строки можно получить только один ключ.
Блок-схема алгоритма приведена на рис. 1.
Процесс получения ключа состоит из следующих этапов:
1. Подготовка данных для подачи на вход «Фонетика» сводится к преобразованию строки в верхний регистр, что позволяет уменьшить алфавит в 2 раза, одновременно отсекая ошибки, связанные со случайными заглавными буквами в середине слова.
2. Первоначальная обработка входной строки заключается в замене гласных, в отличие от англоязычной версии, которая сокращает слово до одних согласных. Несмотря на то что в русском языке звук часто не соответствует букве, что усложняет алгоритм построения ключа, нежелательно пренебрегать ими, поскольку разница между Земцова и Земцева, например, или Зенин и Занин существенна. Поэтому было принято решение заменять гласные на те, которые слышатся на их месте в безударном слоге. Буквы о, ы, а, я заменяются на а; ю, у - на у; е, ё, э, и - на и. С точки зрения фонетики русского языка такой подход не является абсолютно верным, но показывает хорошие результаты на практике.
3. Согласно правилам русского языка в слабой позиции по звонкости/глухости может происходить оглушение, при котором все звонкие согласные (кроме со-
Объединение ключа фамилии с ключом имени и отчества
Рис.1. Блок-схема алгоритма «Фонетик»
норных) на конце слова произносятся как парные им глухие, например: Грег [г'р'эк], Голубь [го^луп’], Жердь [жэрт']. Два конечных звонких также переходят в соответствующие глухие, например: Колезд [кол’э^ст], Дрозд [дрост], Изб [исп]. Алгоритм не оглушает согласные, стоящие перед сонорными (м, н, л): ключи для фамилий Куплин и Кублин будут отличаться.
4. Частой ошибкой является некорректное написание парных согласных. Например, Филиппов может по ошибке быть написан с одной п, а Телицин, Пантелин многие напишут с двумя л. Для этих фамилий будут соз-
даны одинаковые ключи с одной повторяющейся буквой, и они будут найдены вне зависимости от написания. Если же выполнять оглушение согласных до исключения повторов, для тт и дт будет сгенерирована одинаковая часть ключа тт.
5. С использованием словаря слогов производится замена последовательностей букв, которые не встречаются в русском языке. Например, Дядщюенко будет заменен на Дядющенко.
6. Алгоритм также производит замену типовых для русского языка окончаний фамилий на специальные
символы, сокращая тем самым время обработки и экономя место для хранения ключей. Грачевская превратится в ГРАЧ%. Схожие окончания преобразуются в один спецсимвол. Данные преобразования имеют смысл только для фамилий.
7. Для повышения точности поиска, из исходного слова удаляются непроизносимые буквы ь, ъ, а также дефис, разделяющий двойную фамилию. Твердый знак редко встречается в фамилиях, а мягкий часто ставят по ошибке, например на конце фамилии. Дефис иногда также может быть поставлен неверно. Проще всего убрать эти знаки вообще, и они будут игнорироваться при сравнении ключей.
Пункты 2 - 4, 6, 7 с некоторыми изменениями заимствованы из реализации алгоритма MetaPhone. Для повышения качества сравнения алгоритм доработан следующими этапами.
8. В большинстве случаев в информационной системе в дополнение к фамилии присутствуют имя и отчество. Тогда имеет смысл привязать к ключу эти данные. Имя и отчество обрабатываются отдельно от фамилии согласно пунктам 1 - 5 и 7; затем полученная строка дополняет ключ, полученный на основе фамилии. Если в одной системе в данных присутствуют лишь инициалы, то у обеих строк данные для обработки сокращаются до фамилии и первых буквы имени и фамилии, преобразованных к верхнему регистру
9. Наличие инициалов вместо полноценных имени и отчества свидетельствует о наличии информации из источника данных невысокого качества. В связи с этим имеет смысл дописывать к ключу символы, сходные визуально-графически с указанными в качестве инициалов. Например, в таблице БД 1 имеется запись Белов Иван Иванович, а в таблице БД2, соответствующая ей Белов И.Н. Простая обработка дала бы ключ БИЛ4ИИ и БИЛ4ИН соответственно. Если же рассмотреть графическое начертание букв, то и имеет сходство с н, следовательно, в инициалах они могут быть заменены друг на друга. Замены производятся согласно специальной таблице. Остальные буквы остаются без изменений.
10. В процессе тестирования «Фонетики» на одной из БД было выявлено некорректное формирование ключа по некоторым фамилиям. Анализ входных данных показал, что в русских словах использовались буквы латинского алфавита. Очевидное отсутствие проверки контроля вводимых значений привело к нарушению правильности написания слов и алфавитного порядка их отображения. В алгоритм был добавлен код, производящий приведение букв латинского алфавита к русским, сходным по написанию.
В табл. 1 дан пример списка, подаваемого на вход алгоритма, и соответствующих выходных значений.
Таким образом, получается список ключей, на основе которого можно строить таблицу соответствия идентификационных данных физических лиц из разных баз данных.
Для иллюстрации работы «Фонетика» на практике проведено его сравнение с тремя другими алгоритмами: алгоритмом прямого сравнения, алгоритмом, рассчитывающим дистанцию Левенштейна, и алгоритмом «Soundex». Сравнение проводилось на данных, выгруженных из действующих банковских информационных систем. Были сформированы два списка на основе дан
Т а б л и ц а 1 Пример списка входных значений и ключей на выходе алгоритма «Фонетик»
Исходное слово Ключ
Годеева А.В. ГАД9АВ
Годиева И.А. ГАД9ИА
Иванюков П.В. ИВАНУК4ПВ
Иванников С.А. ИВАНИК4СА
Ковалёва С.А. КАВАЛИВА СА
Ковалева О.А. КАВАЛИВА ОА
Голушков О. В. ГАЛУШК4ОВ
Колушков С. П. КАЛУШК4СП
Куликов А.А. КУЛИК4АА
Куликова О. И. КУЛИК9ОИ
Белов А.А. БИЛ4АА
Соколова Т.В. САКАЛ9ТВ
Азовская А.С. АЗ$АС
Ильина И.П. ИЛ1ИП
Алиева А.Т. АЛ9АТ
ных двух банковских информационных систем - рабочий (25 907 записей) и тестовый (4 419 записей). Известно, что 98 записей из тестового списка встречаются в рабочем списке.
Оценка эффективности производилась на основе подсчета ошибок 1-го и 2-го рода. При сравнении строк к ошибкам 1-го рода были отнесены объекты, которые распознаются как разные несмотря на их фактическое сходство. Ошибочные срабатывания характерны для алгоритмов, смягчающих условия поиска. Ошибки 2-го рода возникают в случае распознавания объектов как схожих, в то время как они являются различными.
Рассмотрим значимость возникновения ошибок 1-го и 2-го рода в случае использования алгоритмов сравнения текстовых персональных данных физических лиц в составе модуля автоматизированной банковской системы. Модуль необходим в процессе идентификации клиента. В случае получения отрицательного результата при поиске дубликатов записей запускается процедура добавления нового физического лица в БД. Если же физическое лицо идентифицируется как клиент, то операционисту на экран выводится список с наиболее подходящими записями или с единственной записью в случае однозначной идентификации.
Ошибка второго рода предполагает увеличение выходного списка совпавших объектов. Излишне объемный список заставляет операционистов уточнять данные вручную, что увеличивает время обслуживания клиента. Здесь основным требованием к модулю сравнения является небольшое количество отобранных объектов, желательно, умещающееся в стандартное рабочее 25-строчное поле (с рабочим пространством в 16 -18 строк). На практике формируемый список желатель -но свести к минимуму
Гораздо более критичной является ошибка 1-го рода, когда клиент, данные о котором уже были внесены в БД, не может быть идентифицирован программой. В этом случае операционист заводит клиента повторно, в результате чего нарушаются правила ведения бухгалтерского учета и отчетность. Таким образом, основным критерием качества проводимого сравнения должно быть минимальное количество ошибок 1-го рода.
Для сравнения эффективности алгоритмов была написана программа, запускающая по очереди поиск каждой строки из тестового списка в рабочем списке. Время работы алгоритмов при оценке эффективности не учитывалось.
Схема подсчета ошибок на примере алгоритма «Фонетик» представлена на рис. 2.
Результаты подсчета количества ошибок для четырех сравниваемых алгоритмов сведены в табл. 2.
Т а б л и ц а 2 Результаты сравнения алгоритмов
Алгоритм Выявлено сходство Ошибка 1-го рода Ошибка 2-го рода Выявлено различие
«Фонетик» 92 б 1 25 SOS
Дистанция Левенштейна 15 S3 44 25 7бб
«Soundex» 13 S5 3 25 SO6
Прямое сравнение 13 S5 O 25 SO9
Проанализировав полученные данные, следует отметить высокую стойкость к ошибкам 2-го рода алгоритмов «Soundex» и «Фонетик». Незначительное количество различных объектов, классифицированных как сходные, объясняется изначально заложенной в них спецификой работы с именами. Алгоритм прямого сравнения не показал ни одной ошибки 2-го рода, что можно обосновать жесткой линейной структурой схемы об-
работки строк. При этом количество ошибок 1-го рода достаточно велико.
Эмпирическим путем порог сравнения для алгоритма на основе дистанции Левенштейна был установлен равным 1. Даже при таком низком показателе срабатывания он показал худшие результаты. Изменение данного порога в верхнюю сторону приводило к увеличению количества записей, неверно распознанных как сходные.
Оценивая релевантность работы алгоритма, следует отметить высокую результативность алгоритма «Фонетик», суммарная ошибка которого на реальных данных по сравнению с ближайшим конкурентом отличалась на порядок.
Система поддержки принятия решения «Фонетик», реализованная в виде модуля к ИС, на основе алгоритма сравнения строк, содержащих фамилию, имя и отчество физического лица, показывает высокую стабильность и эффективность в работе, отличается хорошей приспособленностью к нормам и правилам русского языка, высокой релевантностью, низкими показателями ошибок 1-го и 2-го рода. Использование технологии поиска сходных записей на основе данного алгоритма позволяет снизить избыточность баз данных, сократить ручной труд операционных работников, в реальном времени отслеживать историю обращений клиента, а также проводить интеллектуальную обработку, например резервирование или репликацию , и прочие операции с данными, требующие больших затрат времени. «Фонетик» хорошо подходит в качестве инструмента сопровождения автоматизированных банковских систем, систем денежных переводов, судебных систем типа ГАС «Правосудие», систем тестирования знаний учащихся, иных программных средств, требующих взаимодействия оператора системы с клиентами.
1. Каньковски П. «Как ваша фамилия», или Русский MetaPhone // Программист. 2002. № 8. С. 36 - 39.
2. Кнут Д.Э. Искусство программирования. М.: Вильямс, 2005.
3. Smith T.F., Waterman M.S. Identification of common molecular subsequences // Journal of molecular biology. 1981. Vol. 147. P. 195 - 197.
4. Wagner R.A., Fischer M.J. The string-to-string correction problem // Journal of the ACM. 1974. Vol. 21. №. 1. Р. 168 - 173.
Рис. 2. Схема подсчета количества ошибок при сравнении объектов