yadi.sk/i/O8T-ZRN6mfbjA набор данных на котором я играл с классификаторами. Там всего 50 тыс записей, но для экспериментов вполне достаточно. Развлекайтесь))
параметр WN — специально включенный мусорный столбец чтобы посмотреть насколько хорошо алгоритм справляется со случайным шумом.
Могу предположить что в обеих случаях будет 0.
Случаев когда ФИО пишут в странном порядке гораздо больше, чем можно предположить. Я проверял на имени «Ольга» (она в любой позиции давала стабильно -1) и отчестве «Олегович» (стабильный +1). В данном случае такие же роли у «Оксаны» и «Владимирович». Думаю, что они будут взаимно уничтожать друг друга и тянуть итоговую оценку к 0. Но тоже завтра протестирую.
В тот момент, когда я писал этот алгоритм, я уже знал что означает термин машинное обучение, но еще не знал как оно работает)
А когда предложенный в статье метод начал работать оказалось, что результат меня удовлетворяет в достаточной степени, и в дальнейшем развитии нет особой необходимости. Основная задача которая передо мной стояла — контролировать корректность присвоения текущего пола, а не определять его на 100% выборки (что в наиболее распространенных алгоритмах машинного обучения требуется, на мой взгляд, гораздо чаще, поскольку обычно отказ от классификации рассматривается как принципиальный недостаток).
Если очень вольно относится к формулировкам, можно сказать, что то что я сделал похож на ансамбль из моделей сделанных методом «ближайших соседей».
В качестве развлечения я строил дерево решений на основе выборки в 50к (и потом усекал его). Получалось что-то вроде
--pl/sql code
result:='N';--count=50000;
if sthirdname3='ВИЧ' then
result:='Y';--count=22831;
end if;
if sthirdname3='ГЛЫ' then
result:='Y';--count=14;
end if;
if sthirdname3='МИЧ' then
result:='Y';--count=19;
end if;
if sthirdname3='ЬИЧ' then
result:='Y';--count=60;
end if;
if sthirdname3 is null then
result:='Y';--count=229;
if sname2='НА' then
result:='N';--count=20;
end if;
end if;
где sthirdname3 — последние 3 буквы отчетсва, sname2 — 2 буквы имени
result:='Y'; — мужской пол
result:='N'; — женский пол
Строил с помощью сервиса который сам писал как развлечение (загружаешь файлик с данными — на выходе получаешь код классификатора с деревом решений на удобном тебея языке программирования), но сейчас этот сервис неработает из-за моих достаточно кривых рук.
То вернет 1. Близко к опасной границе, да. Но статистика по второй части слова, как правило, либо усилит уверенность в правильности определения пола либо обнулит ее.
Если разные части ФИО имеют разный пол, то автоматически итоговый результат не будет выходить за пределы [-1;+1], так что конфликтные ситуации автоматически попадают в зону «не удалось определить пол». Но существенная часть иностранцев имеет первые две части ФИО достаточные для распознания.
Завтра собирался на работу сходить — проверю)
А пока могу предположить, что для первого выдаст +1 (+1 по первым двум частям («Габриэль Хосе») и 0 по всему остальному), а для второго 0 (единственный +1 в части «Луис» (да и то не факт), по остальным частям — 0)
оглы\кызы, но это довольно стандартный случай, его можно учесть алгоритмически.
Чуть выше я упомянул, что под названием «отчество» я имел ввиду все что после второго пробела. Довольно часто встречаются варианты вроде «Ангела Доротея Меркель», где искомого окончания в женских ФИО в конце третьей части найти не удастся.
Именно из-за иностранцев я и отошел от алгоритма определения по отчеству.
Вероятней всего имеется ввиду эта статья.
Нет, я не пробовал брать буквы, только целые слова.Но думаю, что стоит попробовать этот метод для определения пола тех людей, для которых не удалось определить пол моей текущей функцией. Сейчас для этих целей я использую окончания отчеств, но я допускаю что из первой и второй буквы (в т.ч. других частей ФИО) можно извлечь какую-то доп информацию. И да, вероятно этот метод будет более устойчив к опечаткам, чем описанный в статье.
Боюсь, что нет)
Несмотря на то, что фамилия имя и отчество по отдельности не являются персональными данными, я уверен, что начальство будет против такого моего шага, а в обход их это было бы делать очень недальновидно.
Но да, я хотел бы выложить подобную базу если бы появилась возможность ее собрать на основе данных уже находящихся в открытом доступе (и если бы у меня хватало бы технических навыков для этого, что тоже важно).
Для того, чтобы пол определился, нужно чтобы один пол превысил другой хотя бы в 2 раза.
параметр WN — специально включенный мусорный столбец чтобы посмотреть насколько хорошо алгоритм справляется со случайным шумом.
Случаев когда ФИО пишут в странном порядке гораздо больше, чем можно предположить. Я проверял на имени «Ольга» (она в любой позиции давала стабильно -1) и отчестве «Олегович» (стабильный +1). В данном случае такие же роли у «Оксаны» и «Владимирович». Думаю, что они будут взаимно уничтожать друг друга и тянуть итоговую оценку к 0. Но тоже завтра протестирую.
А когда предложенный в статье метод начал работать оказалось, что результат меня удовлетворяет в достаточной степени, и в дальнейшем развитии нет особой необходимости. Основная задача которая передо мной стояла — контролировать корректность присвоения текущего пола, а не определять его на 100% выборки (что в наиболее распространенных алгоритмах машинного обучения требуется, на мой взгляд, гораздо чаще, поскольку обычно отказ от классификации рассматривается как принципиальный недостаток).
Если очень вольно относится к формулировкам, можно сказать, что то что я сделал похож на ансамбль из моделей сделанных методом «ближайших соседей».
В качестве развлечения я строил дерево решений на основе выборки в 50к (и потом усекал его). Получалось что-то вроде
где sthirdname3 — последние 3 буквы отчетсва, sname2 — 2 буквы имени
result:='Y'; — мужской пол
result:='N'; — женский пол
Строил с помощью сервиса который сам писал как развлечение (загружаешь файлик с данными — на выходе получаешь код классификатора с деревом решений на удобном тебея языке программирования), но сейчас этот сервис неработает из-за моих достаточно кривых рук.
А пока могу предположить, что для первого выдаст +1 (+1 по первым двум частям («Габриэль Хосе») и 0 по всему остальному), а для второго 0 (единственный +1 в части «Луис» (да и то не факт), по остальным частям — 0)
Чуть выше я упомянул, что под названием «отчество» я имел ввиду все что после второго пробела. Довольно часто встречаются варианты вроде «Ангела Доротея Меркель», где искомого окончания в женских ФИО в конце третьей части найти не удастся.
Именно из-за иностранцев я и отошел от алгоритма определения по отчеству.
Нет, я не пробовал брать буквы, только целые слова.Но думаю, что стоит попробовать этот метод для определения пола тех людей, для которых не удалось определить пол моей текущей функцией. Сейчас для этих целей я использую окончания отчеств, но я допускаю что из первой и второй буквы (в т.ч. других частей ФИО) можно извлечь какую-то доп информацию. И да, вероятно этот метод будет более устойчив к опечаткам, чем описанный в статье.
Несмотря на то, что фамилия имя и отчество по отдельности не являются персональными данными, я уверен, что начальство будет против такого моего шага, а в обход их это было бы делать очень недальновидно.
Но да, я хотел бы выложить подобную базу если бы появилась возможность ее собрать на основе данных уже находящихся в открытом доступе (и если бы у меня хватало бы технических навыков для этого, что тоже важно).