Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.09.10;
Скачать: [xml.tar.bz2];

Вниз

алгоритмы выборки похожих фио   Найти похожие ветки 

 
Дмитрий   (2015-04-17 18:43) [0]

Имеется таблица Персонал связанная с таблицей Предприятия.
Появилась потребность сохранять личные координаты контактов и бонусы при смене места работы
Добавили таблицу Персоналии с личными телефонами и бонусами.
Тут же возникла проблема- при добавлении новой записи в персонал требуется определить не существует ли такая личность в Персоналиях.
Во избежание многократного дублирования.

Какие существуют алгоритмы выборки похожих лиц, включая возможные ошибки в написании имен и перестановки типа "Иван Иванов" и "Иванов Иван"?


 
Rouse_ ©   (2015-04-17 19:09) [1]

Простейший перцептивный хэш используй - для твоей задачи, подойдет.


 
Германн ©   (2015-04-17 22:59) [2]

Удалено модератором


 
Труп Васи Доброго ©   (2015-04-23 14:42) [3]


> "Иван Иванов" и "Иванов Иван"

Архитектору БД сделать татуировку на лбу - "нормальная форма №1".
Имена, фамилии и отчества должны храниться каждое в отдельном поле, тогда указанная ситуация будет невозможной.


 
junglecat ©   (2015-04-23 14:55) [4]

> каждое в отдельном поле

и в отдельных справочниках.
Только при желании помойку можно развести где угодно, будь там хоть трижды 1 НФ


 
Труп Васи Доброго ©   (2015-04-23 15:04) [5]


> и в отдельных справочниках.

Ничего смешного.
Я делал базу с отдельными таблицами имён и фамилий. То есть таблица ФИО  была примерно такая: ID ID_Surname ID_Name ID_Name2 Отчества образовывались автоматически от имени, поэтому отдельная таблица для них не требовалась.


> при желании помойку можно развести где угодно

Это естественно, но предоставлять возможность для этого юзеру - мерзость.


 
Rouse_ ©   (2015-04-23 18:28) [6]

Пожалуй вы не в ту степь ребят залезли.
Повторю еще раз ответ на данный вопрос:

> Какие существуют алгоритмы выборки похожих лиц

Ответ: любой перцептивный хэш.

А ошибка в написании имен - это уже совершенно другая задача, включающая в себя парсинг ввода как на наличие явных очепяток, так и не преднамеренно сделанных: к примеру: "Oлег" и "Олег" - не равнозначны, т.к. первая буква набрана в разных раскладках.


 
кгшзх ©   (2015-04-23 20:02) [7]

Имена, фамилии и отчества должны храниться каждое в отдельном поле, тогда указанная ситуация будет невозможной.


какой наивный погромист.


 
Ega23 ©   (2015-04-23 22:30) [8]


> Какие существуют алгоритмы выборки похожих лиц, включая
> возможные ошибки в написании имен и перестановки типа "Иван
> Иванов" и "Иванов Иван"?


Как человек, в прошлом сидевший на базах с десятками тысяч персоналий в каждой, могу сообщить следующее:

1. Данные могут быть введены с ошибкой. Михиалович например.
2. Данные могут быть введены в разной раскладке. Пример Розыч уже привёл.
3. "Ё-е" и "Й-и". Фёдорович-Федорович и Михаилович-Михайлович
4. У человека может не быть фамилии. У монголов нопремер.
5. У человека может не быть отчества.
6. У человека могут быть всякие составные имена, фамилии и отчества. Пример: Пескоструев-Захреначинский Магомед-Гаджи Махмуд-Оглы
7. Знаменитый адмирал Максимилиан Иоханнес Мария Губертус рейхсграф фон Шпее (набирал по-памяти, мамойклянус!)
8. Вероятность полного совпадения ФИО не очень высокая, но она есть. Лично как минимум две пары знаю.

А вот теперь попробуй всё это дело формализовать.
И таки да, когда будете базу под персоналии проектировать, не думайте, что трёх полей varchar(32) с лихвой хватит на ФИО. Я тоже так когда-то думал, ага.


 
Ega23 ©   (2015-04-23 22:32) [9]

А, ещё забыл.
9. Составные ФИО могут быть введены с разными видами тире-дефиса (ещё длинное тире).
10. Унутре ФИО могут встречаться непечатные служебные символы, это при копипасте было такое.


 
Ega23 ©   (2015-04-23 22:36) [10]


> Во избежание многократного дублирования.


И самое главное: хоть кол на башке пользователям теши, но дублирование БУДЕТ. Хоть стопицот способов этого избежать придумывай - всё равно оно будет, т.к. народ у нас пытлив и любознателен.


 
Ega23 ©   (2015-04-23 23:48) [11]

Подумал тут. По ИНН ориентируйся вопщем.


 
Inovet ©   (2015-04-24 08:32) [12]

> [11] Ega23 ©   (23.04.15 23:48)
> По ИНН

По СНИЛС, можно паспорт ещё. Но! Сообщения "СНИЛС повторяется", "ИНН повторяется" и т.п. будут игнорировать и тупо не вводить совсем, раз тупая программа не даёт ввести и пишёт чё-то там, а вот человека всё равно задвоят.


 
Ega23 ©   (2015-04-24 08:36) [13]

Паспорт люди меняют.


 
Труп Васи Доброго ©   (2015-04-24 08:55) [14]


> Михиалович например.

Конечно можно ошибиться, но наличие справочника имён эту возможность зело уменьшает.
Когда оператор начинает вводить в поле "Имя" Мих, то ей уже предлагается автоввод "Михаил". Операторы к этому ОЧЕНЬ быстро привыкают и сильно настораживаются, когда на стандартное имя Сеергей система говорит что в списке не значится и спрашивает "Добавить в справочник?". В 99,99% случаев оператор тут же замечает ошибку и исправляет её. Да и потом при (как это навзывают в нашей конторе) "достоверизации", если в справочние имён обнаруживаются похожие дубли типа Михаилович-Михайлович или Сергей-Сиргей, то сделав одно исправление в справочнике исправляются все Сиргеи на правильного Сергея. Это не так сложно, выявить в, (не очень то большом) справочнике имена, отличающиеся одной-двумя буквами. Людей может быть и десять миллионов, а различных имён всего тысячи полторы. Фамилии так же не отличаются разнообразием, а уж отчества вообще образуются от имени, поэтому отдельного справочника не требуют.

> У человека могут быть всякие составные имена, фамилии и
> отчества.

Не вижу как это мешает? Да хоть восьмиэтажные, но это будет всего три поля: длинное имя, большая фамилия и заковыристое отчество. Как это "ломает систему"? К тому-же таких людей по стране с гулькин хрен. И уж если такой попадётся, то 99.999% операторов будут заносить такое ФИО особо внимательно.

> У человека может не быть фамилии. У монголов нопремер.

Я пишу про РФ, здесь по закону фамилия есть у всех, вон у отца Шойгу тоже отчества не было, так присвоили. Сможешь найти паспорт РФ без фамилии - пришли скан. Да и какая проблема в пустом поле? В моей системе будет однозначно ясно чего не фватает Ф, И, или О, а вот если вводить всё в одно поле, то хрен догадаешься чего именно не хватает.

> Унутре ФИО могут встречаться непечатные служебные символы



> "Oлег" и "Олег" - не равнозначны



> Составные ФИО могут быть введены с разными видами тире-дефиса

Да-да-да, а про запрет ввода неположенных символов вы, конечно, никогда не слышали?
Проблема высосана из пальца.
З.Ы. Я то думал что я так себе программист, а большинство местных - высоколобые мастера, а оказывается люди бьются над проблемами, которые решаются после прочтения первых ста страниц любого учебника "Delphi для чайников" и пары минут размышлений. Прав был мой учитель - программист, он должен головой уметь думать, а кто только язык хорошо знает это просто кодер.


 
Труп Васи Доброго ©   (2015-04-24 09:02) [15]


> будут игнорировать и тупо не вводить совсем

Конечно же запретить ввод записи без заполнения обязательного поля это такая большая программная проблема... (сарказм)


 
Ega23 ©   (2015-04-24 09:16) [16]


> Я пишу про РФ, здесь по закону фамилия есть у всех, вон
> у отца Шойгу тоже отчества не было, так присвоили. Сможешь
> найти паспорт РФ без фамилии - пришли скан.


Я тоже писал систему для режимных объектов. АЭС, например. Но потом выяснилось, что туда может и монгол придти, по своему паспорту, в составе дружественной делегации таких же монголов. И паспортами РФ там ваще не пахнет. Но с монголами проще, у них кириллица. А вот у немцев - латиница, причём с умляутами.


>  а вот если вводить всё в одно поле, то хрен догадаешься чего именно не хватает

А зачем всё в одно поле вводить? На три надо разбивать, это и ежу понятно. Просто нельзя требовать однозначного ввода во все три, нюансов очень много.


 
Ega23 ©   (2015-04-24 09:25) [17]


> Отчества образовывались автоматически от имени, поэтому
> отдельная таблица для них не требовалась.


Шедеврально. Это до первого этнического азербайджанца, у которого отчество через "оглы" идёт, или до первого мусульманина, отец которого совершил хадж.


 
Труп Васи Доброго ©   (2015-04-24 09:33) [18]


> у которого отчество через "оглы"

Ну да, а у женщины через "кызы" и что? Вместо Ахмет-оглы и Авган-кызы записывается по правилам русского языка Ахметович и Авгановна, никаких претензий никогда не возникало.


 
Труп Васи Доброго ©   (2015-04-24 09:37) [19]


> отец которого совершил хадж.

ЕМНИП Кадырова в официальных сообщениях пишут так же Рамзат Ахматович и не более. Это когда его отца вспоминают, то говорят Ахмат-хаджи. Но это чисто религиозный обычай. В паспорте ничего не меняют.


 
Ega23 ©   (2015-04-24 10:33) [20]


> Ну да, а у женщины через "кызы" и что? Вместо Ахмет-оглы
> и Авган-кызы записывается по правилам русского языка Ахметович
> и Авгановна, никаких претензий никогда не возникало.


Во-первых, такого правила в русском языке нет. Это во всяких прибалтиках имена коверкают "по правилам".
Во-вторых, претензий не возникало просто потому, что никто в суд не подал за то, что его родное имя (фамилия, отчество) были исковерканы из-за того, что какой-то студент решил БД до 4 нф довести.


 
кгшзх ©   (2015-04-24 10:39) [21]

которые решаются после прочтения первых ста страниц

Что и требовалось доказать.
Непуганный, наивный пОгромист


 
Inovet ©   (2015-04-24 10:41) [22]

> [13] Ega23 ©   (24.04.15 08:36)
> Паспорт люди меняют.

Да, и при этом одинаковых паспортов не выдают, а при получении нового - менять надо и в базе. Но паспорт плохой идентификатор, СНИЛС в этом смысле больше годится, к тому же его собираются узаконить, как основной идентификатор личности. Но вот проблема - надо обязательно ввести человека, а СНИЛС и/или ИНН у него нет/забыл дома/ещё что-то, заносят без них, потом забывают внести, но это до первой отчётности.


 
Inovet ©   (2015-04-24 10:45) [23]

> [15] Труп Васи Доброго ©   (24.04.15 09:02)
> Конечно же запретить ввод записи без заполнения обязательного
> поля это такая большая программная проблема... (сарказм)

Читай предыдущий ответ. Запретить не проблема, а надо бывает.


 
Труп Васи Доброго ©   (2015-04-24 11:30) [24]


> Что и требовалось доказать.

Да, да ,да. Всё гамно, ничего сделать нельзя. Ты попытался и не смог, значит ни у кого тем более не получится. Я тебя услышал.

> Запретить не проблема, а надо бывает.

Знаю что бывает. Для этого используются стандартные значения-"заглушки", которые программа принимает. Потом отдел контроля периодически выгружает все записи с заглушками и с помощью умножения премии оператора на отрицательное число решает проблему "забытых" данных.
Всё решаемо, если решать. А потрындеть, что всё жутко сложно, это всегда можно, но не конструктивно.

> Во-вторых, претензий не возникало просто потому, что никто
> в суд не подал за то, что его родное имя (фамилия, отчество)
> были исковерканы

Претензий нет, потому что их нет. Это же не паспортный стол. И даю бесплатную справку - никакой суд, по указанным тобой основаниям жалобу даже рассматривать не станет.


 
Ega23 ©   (2015-04-24 11:41) [25]


> никакой суд, по указанным тобой основаниям жалобу даже рассматривать не станет.


Ха три раза.
Впрочем, можешь продолжать упорствовать, дело твоё.


>  Ты попытался и не смог, значит ни у кого тем более не получится


Все когда-то это делали. Просто с опытом приходит понимание того, что это - мартышкин труд. Не формализуется ФИО. Никак.


 
Труп Васи Доброго ©   (2015-04-24 13:17) [26]


> Ха три раза.

Это уже уход от темы, но кроме смеха можешь привести статью закона, который нарушается при замене Умар-оглы на Умарович?


 
junglecat ©   (2015-04-24 13:22) [27]

Удалено модератором


 
кгшзх ©   (2015-04-24 13:43) [28]

да не разрушайте вы челу иллюзию.


 
Ega23 ©   (2015-04-24 15:08) [29]


> Это уже уход от темы, но кроме смеха можешь привести статью
> закона, который нарушается при замене Умар-оглы на Умарович?


В ГК есть статья по защите имени гражданина, далее - к юристам.
Исходя из личного общения со многими кадровыми службами многих объектов, прецеденты были. Чем закончилось - не в курсе, но знаю точно, что делопроизводитель бюро пропусков несёт персональную ответственность за то, что он пишет в пропуске поциэнта. И за то, что набивает на клаве - тоже.

А ещё я тебе приведу пример, когда мой бывший коллега Алексей, родившийся и до 21 года проживший в Тбилиси, когда уже в нэзалэжной Грузии пришёл получать паспорт, был в паспортном столе наречён Александром. Мотивировали это тем, что "такого имени у нас нет". Хорошо, что он вскоре из того дурдома свалил. Но проблем потом он поимел массу, когда свидетельство о рождении советского образца выписано на имя Алексей, а аттестат об окончании тбилисского универа - на имя Александр.
А всё потому, что тоже кто-то ID жестко забил. Ну либо ФМГ.
Повторюсь:
Впрочем, можешь продолжать упорствовать, дело твоё.


 
Kilkennycat ©   (2015-04-24 22:38) [30]

[Конституция] [Глава 2] [Статья 23]
1. Каждый имеет право на неприкосновенность частной жизни, личную и семейную тайну, защиту своей чести и доброго имени.

Семейный кодекс РФ
Глава 11. ПРАВА НЕСОВЕРШЕННОЛЕТНИХ ДЕТЕЙ
Статья 58. Право ребенка на имя, отчество и фамилию
1. Ребенок имеет право на имя, отчество и фамилию.
2. Имя ребенку дается по соглашению родителей, отчество присваивается по имени отца, если иное не предусмотрено законами субъектов Российской Федерации или не основано на национальном обычае.
3. Фамилия ребенка определяется фамилией родителей. При разных фамилиях родителей ребенку присваивается фамилия отца или фамилия матери по соглашению родителей, если иное не предусмотрено законами субъектов Российской Федерации.
4. При отсутствии соглашения между родителями относительно имени и (или) фамилии ребенка возникшие разногласия разрешаются органом опеки и попечительства.
5. Если отцовство не установлено, имя ребенку дается по указанию матери, отчество присваивается по имени лица, записанного в качестве отца ребенка (пункт 3 статьи 51 настоящего Кодекса), фамилия - по фамилии матери.

Википедия:
Право на имя — неотчуждаемое субъективное право, является личным неимущественным правом, возникает в основном у субъектов гражданского, авторского, семейного права.
Вред, причиненный гражданину в результате неправомерного использования его имени, подлежит возмещению в соответствии с Гражданским Кодексом РФ.
При искажении либо использовании имени гражданина способами или в форме, которые затрагивают его честь, достоинство или деловую репутацию, применяются правила, предусмотренные статьей 152 ГК РФ.


 
Ega23 ©   (2015-04-24 22:42) [31]

Угу. А потом рано или поздно встретится склочный гражданин, обожающий судиться со всеми подряд. Это, конечно, если вреда не будет.


 
Дмитрий   (2015-04-27 17:26) [32]


> Подумал тут. По ИНН ориентируйся вопщем.

Начальство восприняло предложение положительно.


> По СНИЛС, можно паспорт ещё. Но! Сообщения "СНИЛС повторяется",
>  "ИНН повторяется" и т.п. будут игнорировать и тупо не вводить
> совсем, раз тупая программа не даёт ввести и пишёт чё-то
> там, а вот человека всё равно задвоят.


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


 
Rouse_ ©   (2015-04-27 19:11) [33]


> Труп Васи Доброго ©   (24.04.15 08:55) [14]
> Да-да-да, а про запрет ввода неположенных символов вы, конечно,
>  никогда не слышали?
> Проблема высосана из пальца.

Так и запишем - нет проблем :)
Но есть нюанс:

Если ты вот такое заявишь в любом паспортном столе, а тем более в посольстве (к примеру Киргизии):

> Труп Васи Доброго ©   (24.04.15 09:33) [18]
> Ну да, а у женщины через "кызы" и что? Вместо Ахмет-оглы
> и Авган-кызы записывается по правилам русского языка Ахметович
> и Авгановна, никаких претензий никогда не возникало.

Тебе укажут на дверь и забудут как тебя зовут.
Дело в том что "оглы" и "кызы" являются неотъемлемой частью имени которое пишется в паспорте (документ такой). Это я тебе как погранец говорю :)
И человека с твоими Ахметовичами -= никто через границу не пропустит, даже если морда в документе будет совпадать.
А ты вдруг предлагаешь все это поменять на по русски.
Впрочем, давай поменяем на вообще Литовский принцип написания. Вместо Андрея будет писать Андреус и т.п.


 
Rouse_ ©   (2015-04-27 19:53) [34]

Зы, до кучи, кызы - пишется именно вместо отчества.
Т.е. "Отынбекова Бегайым-кызы", это не значит что она Бегайимовна, она вполне изначально могла быть и "Отынбекова Бегайым Нурсултановна", но решила себе сделать именно "кызы" - кстати об этом отдельная повесть, зачем делается именно так.
Так вот: если писать так как ты предложил, то это не отчество, а какое-то матчество получится, наподобие "Найденовой Александры Натальевны" :)
Пруф: http://www.youtube.com/watch?v=Mpmay0dJcwo
:)


 
Rouse_ ©   (2015-04-27 20:01) [35]

ЗЗЫ: пардон с примером конечно напутал, более правильно будет "Бегайым Отынбек Кызы" :) Но сути не меняет :)


 
Inovet ©   (2015-04-27 20:09) [36]

Да ясно, что ерунда это - менять записанные в паспорте ФИО. И не в судах дело, а втом, что это несоответсвует документу. С иностранцами аналогично: написано латиницей в документе - латиницей и вводить.


 
Inovet ©   (2015-04-27 20:13) [37]

> [34] Rouse_ ©   (27.04.15 19:53)
> Пруф: http://www.youtube.com/watch?v=Mpmay0dJcwo

Да, в пасорт можно хоть чёрт лысович вписать, и хоть каждый месяц, причём без всяких взяток - только госпошлина.


 
Rouse_ ©   (2015-04-27 20:14) [38]

Для этого есть давным давно и не нами придуманная система записи ФИО в загран паспортах - где учтены все нюансы, вплоть до того что в некоторых странах нет отчества, а в некоторых имя может быть более тысячи символов.


 
Inovet ©   (2015-04-27 20:19) [39]

> [32] Дмитрий   (27.04.15 17:26)
> инн + фио прописывать код уже существующей записи без создания новой

А вот такую автоматизацию делать не стоит. Человеческие ошибки при вводе всегда есть: ФИО похожие, ИНН/СНИЛС другого человека взяли, у которого похожие, а программа взяла и поменяла на него. Разбираться в ошибках не забота программы, да и невозможно однозначно определить ошибка или нет, а вот выдать предупреждение и не позволить ввести одинаковые - дело программы, а оператор пусть ищет причину.


 
Ega23 ©   (2015-04-28 12:04) [40]

Если дублирование критично, то тогда обязательно вводи логгирование действий оператора. тогда всегда можно будет по логам понять, кто напилювал слюной и ввёл дубль данных, поставить виновного на горох и бить палками по пяткам нещадно.
Полностью автоматизировать процесс не получится, только жесткие административные меры.



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2017.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.003 c
2-1429285414
Дмитрий
2015-04-17 18:43
2017.09.10
алгоритмы выборки похожих фио


2-1443147790
dmk
2015-09-25 05:23
2017.09.10
TEdit не хочет перерисовываться





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский