Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Идентификация по ФИО с учетом возможных опечаток  [new]
uaggster
Member

Откуда:
Сообщений: 1058
Коллеги, прошу прощения, возможно спрашиваю не в том форуме (возможно в программирование, но вопрос смежный).

Имеется БД, содержащая ФИО + ДР, в количестве около 1,5 млн. записей.
Необходимо провести дедубликацию информации в базе (по оценкам - 20% всяких дублей), и в дальнейшем - производить поиск по этой базе с учетом возможных опечаток оператора.
База была сформирована по результатам ручного ввода с заявлений, написанных от руки (разной степени тяжести), поэтому там содержится масса очепяток.

Кто нибудь уже решал подобную задачу?

Я пока пытаюсь изобрести велосипед таким, примерно образом:
Строку ФИО + ДР (в ДР, кстати, тоже могут быть опечатки) сравниваю с помощью IndistinctMatching, которую когда то даже (переводил на TSQL). Сейчас, правда, в таких изысках необходимости нету, эта же функция, оформленная как CLR процедура считает раз в 30 быстрее.
НО(!) использовать ее на больших выборках (>1000-10000 записей) - по прежнему малореально.

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

Хеш хочу формировать так: Выкинуть из ФИО все гласные, все согласные буквы посчитать по 1-му разу и выстроить их по алфавиту.
Например для "Иванов Иван Иванович" хеш будет "ВНЧ".
Дальше, как я сказал - join по хешу, и Where IndistinctMatching >=60 для определения кандидатов на дедубликацию, которая будет проводится вручную (видимо).

Подобный хеш хорошо отсекает ошибки в гласных, удвоение согласных, изменение порядка букв, пропуск букв (но сильно не во всех случаях).
Дыр у него - тоже масса. Да и селективность - не очень...
Хотелось бы допилить идею!

Но всё это жутко, честно говоря, тормозит и не достаточно хорошо определяет.

Посоветуйте что нибудь в этом направлении? Может всё уже давным давно того...
Я давненько не брал в руки шашки. Еще с гражданской! ... :-)
7 июл 11, 13:22    [10938431]     Ответить | Цитировать Сообщить модератору
 Re: Идентификация по ФИО с учетом возможных опечаток  [new]
идея
Guest
uaggster,

можно это попробовать

http://www.techdays.ru/videos/1378.html
7 июл 11, 13:30    [10938525]     Ответить | Цитировать Сообщить модератору
 Re: Идентификация по ФИО с учетом возможных опечаток  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35381
Блог
uaggster
Хеш хочу формировать так: Выкинуть из ФИО все гласные, все согласные буквы посчитать по 1-му разу и выстроить их по алфавиту.
Например для "Иванов Иван Иванович" хеш будет "ВНЧ".


Имхо, для "Иванов Иван Иванович":
->ИаоИаИаои (хеш1)
и
->внввнвнвч (хеш2)

будет понадежнее. Еще надежнее будет хэшировать отдельно имя, отдельно отчество, отдельно фамилию.
7 июл 11, 13:36    [10938587]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить