определение пола по фио
Определение пола по имени
Классическая задача, с которой периодически сталкивается почти любой пользователь Microsoft Excel: нужно определить пол для каждого человека в списке. Давайте рассмотрим несколько решений для такой задачи.
Вариант 1. Полные ФИО, только «наши»
Функция ПРАВСИМВ (RIGHT) извлекает из ФИО один символ справа (последнюю букву отчества), а функция ЕСЛИ (IF) проверяет извлеченный символ и выводит «ж» или «м», в зависимости от результата проверки.
Вариант 2. Полные ФИО, есть «экспаты»
Если в списке есть имена не только русского типа (назовем их «экспаты»), то к приведенной ранее формуле можно добавить еще одну проверку, чтобы отлавливать их тоже:
Вариант 3. Неполные или переставленные ФИО, только «наши»
Если в нашем списке отчества есть не у всех (или их нет совсем) или ФИО идет в другом порядке (ИФО, ИФ, ФИ), то придется использовать принципиально другой подход. Создадим таблицу-справочника со всеми женскими именами (я использовал для этого википедию):
Созданную таблицу я преобразовал в «умную» (выделить ее и нажать Ctrl+T), чтобы потом не думать про ее размеры и дополнять справочник новыми именами в любое время. На появившейся вкладке Конструктор (Design) умной таблице лучше дать отдельное имя (например жен), чтобы потом использовать его в формулах:
Нужная нам формула для определения пола будет выглядеть так:
Давайте разберем ее по шагам на примере первого человека:
Функция ПОИСК (SEARCH) ищет вхождения по очереди каждого женского имени из умной таблицы жен в строку «Храброва Алла Сергеевна» и выдает на выходе либо ошибку #ЗНАЧ (если не нашла), либо порядковый номер символа, начиная с которого имя входит в ФИО. На выходе мы получаем массив:
<#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: 10 :#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!>
Число 10 на седьмой позиции в этом массиве фактически означает, что седьмое женское имя Алла из умной таблицы-справочника входит в первое ФИО Храброва Алла Сергеевна начиная с 10 символа.
Затем функция ЕСЛИОШИБКА (IFERROR) заменяет ошибки #ЗНАЧ! на нули. В результате получаем:
Функция СУММ (SUM) суммирует все числа в получившемся массиве и если получается число больше нуля, то функция ЕСЛИ (IF) выводит «ж», в противном случае «м».
Не забудьте после ввода формулы нажать сочетание клавиш Ctrl+Shift+Enter, т.к. ее нужно ввести как формулу массива.
Вариант 4. Неполные ФИО, есть «экспаты»
Если в списке могут встречаться экспаты или нестандартные имена, которых нет в справочнике, то предыдущая формула будет автоматом относить человека к мужчинам, что не есть хорошо. Поэтому для полной универсальности можно добавить справочник мужских имен и еще одну проверку, как мы уже делали в варианте-2:
Как определить пол по отчеству (ПРАВСИМВ)
Этот пример я решил разобрать, чтобы разобрать комбинацию из формул ЕСЛИ и ПРАВСИМВ.
Разберём тот случай, когда после применения не самой замудрённой формулы в Microsoft Excel, у обычного зрителя возникает ощущение «ВАУ».
Перед нами таблица с ФИО, и наша задача — определить с помощью формулы пол по отчеству.
По традиции можете посмотреть видео, пример для скачивания доступен выше.
Для начала немного теории…
Все мужские отчества заканчиваются на букву «-ч», женские — на «-на».
Нам остаётся просто воспользоваться логической функцией: если отчество заканчивается на букву «-ч», значит пол мужской.
В противном случае, пол — женский.
В ячейку C2 запишем формулу:
«=ЕСЛИ(ПРАВСИМВ(B2;1)=»ч»;»м»;»ж»)»
Растянем нашу формулу на всю таблицу, чтобы определить пол во всех ячейках.
Согласитесь, красивое решение.
Просто, одной формулой, которая состоит из функций ЕСЛИ и ПРАВСИМВ, мы так красиво решили задачу.
В этом смысле, в Excel есть креативная составляющая.
Если решать эту задачу в лоб, то такого элегантного решения мы бы не добились.
В то же время понаблюдав, что общего у отчества всех мужчин или женщин, мы нашли решение, по какому признаку программа могла бы тоже понимать это.
Вам так же доступно видео, возможно кому-то будет так удобнее.
Больше полезных видеоуроков на нашем YouTube канале.
Если у Вас возникли вопросы или просто хотите поделиться мнением, напишите в комментариях к записи.
Marina_MA’s блог
Нумерология: Как узнать пол будущего ребенка!
Запись опубликована Fia Lo4ka · 4 апреля 2013
Нумерология: Как узнать пол будущего ребенка
(НЕ СЛЕДУЕТ ВОСПРИНИ МАТЬ СЛИШКОМ СЕРЬЕЗНО,
1 способ: По имени и фамилии родителей
Существует весьма распространенный способ определения пола будущего ребенка. Это нумерологическая система Пифагора. Воспользуйтесь приведенной таблицей для того, чтобы определить числовое значение любой буквы алфавита.
начертить табличку 5 строк и 9 столбцов, в них вписать:
в первую строку: 1 2 3 4 5 6 7 8 9
Напишите полное имя матери будущего ребенка, которое указано в вашем свидетельстве о рождении (т.е. девичье имя), а затем также напишите полное имя отца будущего ребенка. Далее запишите месяц зачатия вашего еще не рожденного, ребенка. Запишите числа и сосчитайте общую сумму. Затем разделите полученное число на семь. Если полученное число окажется четным, то родится девочка, а если число будет нечетным, то родится мальчик. Этот способ предсказания годится только для тех случаев, когда речь идет о рождении одного ребенка, (а не двойняшек) или однополых близнецов.
потом подсчитывем, например:
1+6+ 6+ 1+ 4+ 7+ 5+ 1+ 3+ 1+ 6+ 1=43
3+1+ 3+ 2+ 7+ 9+ 3+ 7+ 4+ 8+ 1+ 6=60
Таким образом, если Анна Ломакина и Виктор Волжин зачали ребенка в мае, то подсчет будет выглядеть таким образом:
Теперь делим: 111: 7 = 15 с остатком.
Остаток не берем в расчет. Согласно нумерологическому расчету, получается, что у этой супружеской пары родится мальчик.
2 способ: Нумерологический метод расчета остатков основан на том, что все на свете подчиняется неким числовым закономерностям. Зная их, вполне можно предсказать события, которые произойдут в будущем.
Если разделить возраст матери на три, а возраст отца на четыре, а затем сравнить остатки, то можно вычислить пол планируемого ребенка.
Концепт метода в следующем: через определенные промежутки времени происходит генетически обусловленная перестройка организма. Обновляются слизистые оболочки и ткани, формируется кровь.
У женщин интервал равен трем годам, у мужчин – четырем.
Проще говоря, в итоге побеждает пол того родителя, чей возрастной остаток меньше и чей организм обновился последним.
Кстати, если остатки у родителей примерно равны, может родиться двойня. Вот почему даже если вы игнорируете данный метод, не поленитесь подсчитать остатки, и если они равны – не рискуйте. Не для каждой пары рождение двух деток вместо одного является приятным сюрпризом.
3 способ: если прибавить к вашему возрасту порядковый номер месяца зачатия и получится четное число, то значит родится мальчик…
4 способ: И еще способ давайте проверим
Считалка (у кого совпала отпишитесь) можно и на будущих детей прикинуть, а если у беременюшек совпадет тогда просто супер. Счилку разрабатывала в Москве одна тетенька она кандидат наук
просто число 3 + месяц зачатия + месяц рождения мамы + полных лет маме в момент зачатая, если четное то девочки, а нечетное то мальчик. У немя совпало по первому ребенку, хочу второго, но девочку вот и хотся процент посчитать по этой считалочке
5 способ: ФОРМУЛА.
В народе ходит несколько формул, помогающих спрогнозировать и определить пол будущего ребенка. Одна из формул выглядит так: 49 – X + 1 + Y + 3, где X – возраст отца, а Y – месяц зачатия. Если результатом решения будет четное число – ждите мальчика, нечетное – девочку.
Еще хочу добавить народные приметы и мои личные наблюдения)))
Некоторые народные приметы определения пола ребенка:
Определение пола по ФИО – когда точность действительно важна
Некоторое время назад меня заинтересовала задача определения пола человека по его ФИО. В тот момент я работал в области медицинского страхования, где эта проблема была действительно актуальна – расходы на одного застрахованного, а значит и тарифы, по которым людей принимали на страхование, в зависимости от пола клиента, могли отличаться в несколько раз. Большая часть договоров – корпоративные, застрахованные являются сотрудниками работодателя.
Мы никогда не видели большинство из них в глаза, все, что мы имели – списки застрахованных, где пол иногда был указан (с большим количеством ошибок), но чаще – не указан вообще. Большинство компаний имеют свою специфику работы и профессиональные традиции, в силу чего, в их коллективах преобладают люди одного пола. Даже небольшая ошибка могла сделать потенциально прибыльный договор убыточным (или наоборот, но на такое, по странному стечению обстоятельств, случалось с нашими клиентами гораздо реже). В целом, при объеме портфеля договоров в несколько миллиардов, и характерном количестве ошибок около процента, цена корректного определения пола по ФИО была в районе нескольких десятков миллионов.
В рунете тема определения пола по ФИО поднималась уже неоднократно, но, в большинстве случаев, все сводилось к рекомендации внимательно смотреть на окончание отчества («вич»/«вна») или использовать какие-то подобные найденные вручную закономерности. К сожалению, в моей ситуации этот метод не подходил – среди застрахованных было много, действительно много, иностранцев. Правильное написание их отчества не содержало никаких признаков искомого окончания (а в некоторых случаях отсутствовало и само отчество).
Как ни странно, подобный, очень простой алгоритм, позволил добиться потрясающей точности – на выборке в несколько сотен тысяч человек (при базе для обучения в полтора миллиона) было допущено всего 6 ошибок (которые будут описаны ниже и каждую из которых, вполне вероятно, живой человек тоже совершил бы).
Некоторые подробности предварительной подготовки обучающей выборки:
Поскольку каждый раз, когда требуется определить пол человека, пробегаться по таблице контрагентов со всеми записями долго, то агрегированную информацию о частотах появления определенной части ФИО в хранимых данных я разместил во вспомогательной таблице. Выглядит это как четверка параметров – [часть ФИО – тип (Ф, И или О)– пол – число записей в базе]. Статистика обновляется еженедельно, автоматически.
Для определения того, какое соотношение мужчин и женщин для одной части ФИО считать достаточным основанием для причисления его к тому или иному полу, я использовал следующую функцию:
Ошибки алгоритма. Я обнаружил три ситуаций, когда алгоритм может выдать некорректный результат:
К сожалению, данный метод не является серебряной пулей, он просто лучше всех других, которые я встречал. Я тестировал метод на нескольких базах данных в разных компаниях. К минусам можно отнести то, что для части людей из-за недостаточной статистики определить пол по ФИО нельзя: на базе в 1,5 млн человек таких людей чуть больше 1%, на базе в 300 тыс человек таких около 3%, на базе в 6 млн человек не удалось определить пол для 0,8%. У меня есть предположение, что процент людей, для которых пол не может быть определен, обратно пропорционален корню из размера обучающей выборки, но никакого объяснения — почему именно так происходит, у меня нет. Конечно, процент людей, для которых пол может быть определен можно увеличить (и даже довести почти до 100%) установив более мягкие условия на то, когда человеку можно присвоить какой-либо пол, но для задач, с которыми я работал, была важнее точность, чем 100%-ное отнесение к одному из двух классов.
Другой недостаток, которому подвержен данный метод – плохая работа с опечатками. Несмотря на то, что некоторые из них довольно стандартны (имя «Олга» встречается чаще, чем, например, вполне правильное «Октябрина»), для большинства опечаток статистика будет отсутствовать => определить пол по такому имени будет не всегда возможно. К сожалению, обратное утверждение (если искомое имя еще ни разу не встречалось в базе, значит оно написано не правильно) не верно – людей с уникальными именами не меньше, чем опечаток в именах обычных людей.
Как и у любого инструмента, у этого есть особенности, о которых не задумываешься при создании.
Автоматическое определение пола по имени
Но мы не лингвисты, поэтому реализовать такой модуль было бы слишком сложно для нас, да и функция “не первой необходимости”. Но недавно, работая над склонениями текстов бесконечных актов, договоров и прочих юридических документов, мы вспомнили об используемом нами уже 2 года сервисе Морфер. Это прекрасный лингвистический сервис, специализирующийся на русском языке и позволяющий склонять по падежам слова, целые предложения, числительные, а также получать текст из цифр. В общем, потрясающая разработка всего одного человека — Сергея Слепова.
Итак, открываем спустя некоторое время его сайт и обнаруживаем — есть удобный и простой модуль для PHP, который позволяет определять род существительного. Т.е. подставляя сочетания ФИО можно получить достаточно точное определение пола (мужской, женский). Супер! Реализация функции не заставила себя долго ждать. Все сделано в виде шаблонов в тексте рассылки.
С помощью хитрой конструкции склонения:
В результате на выходе получится или “Уважаемый” или “Уважаемая”.
Вот еще пример конструкции:
=> в результате будет “Дорогой Иван” или “Дорогая Маргарита” или «Дорогой клиент» (если имя не задано)
Для тех, кто пользуется нашим онлайн-редактором, все еще проще:
Удобные ссылки в панели управления по нажатию на кнопку человечка справа вверху, которые вы видите на скриншоте выше.
Написать подобную обертку действительно не сложно. Производительность модуля поражает и позволяет использовать такое определение пола и автоподстановку шаблона “на лету” в процесс отправки рассылки без потери скорости.
Поэтому, если у вас стоит задача “живой” работы с текстами, склонением различных слов и словосочетаний, работы с числительными — то библиотека Сергея вам в помощь! Огромное ему за нее спасибо!