- Регистрация
- 23.12.2014
- Сообщения
- 14 419
- Благодарностей
- 5 454
- Баллы
- 113
Всем привет. Я решил поделится интересным решением по определению пола.
При парсинге данных с сайта Авито возникла задача определить пол. Сам сайт не давал подобных данных, по этому я приступил к поиску решений данной задачи. Сразу же подумал проверять имя на наличие в списке, но мне это показалось затратным по ресурсам. Спустя время я пришел к выводу, что поиск имени является самым доступным и эффективным вариантом.
По скольку предыдущее обновление парсера включало в себя блэклист, то за основу я взял сниппет @Adigen который отлично выполнял функции блэклиста.
C#:
IZennoList Names = project.Lists["names"]; //привязываемся к списку
string Element = "Vasya";
return Names.Contains(Element); // True/False
В переменной Element, было значение Андреева.
Contains нашел Андре. Как так произошло мы так и не поняли.
Мистика!
В общем было решено все это дело переносить в Regex и парсить регуляркой ^Андреева$
Это немного повысило нагрузку, зато определение было более точным.
Вот так выглядит итоговый сниппеет.
C#:
string nameRegexp = project.Variables["NAME"].Value; // NAME - название зенно переменной
IZennoList Names = project.Lists["FEMALE"];
Regex re = new Regex(nameRegexp, RegexOptions.IgnoreCase);
return Names.Any(item => re.IsMatch(item));
FEMALE - это список с женскими именами
return - Ответ будет True (Имя найдено) и False (Имя не найдено)
Если не найдено, чекаем на мужской пол. И тут я решил что все, работа сделана, можно курить бамбук. Запустил чек на 100к имен и офигел. 20к имен он просто не распознал.
Списки с именами для идентификации пола я нашел на форуме, внушительный список около 30к имен. Они были полностью на кириллице, но это же не паспортный стол, "Дашечки", "Юрки" - такие имена улетали в список "Не определен", по мимо этого был всякий треш из смеси англ. и русских букв. Я начал просматривать этот список и собирать имена вручную! Вручную КАРЛ! Это был адовый труд, ох я и ошибок насмотрелся, за пару часов все было готово, основной приоритет отдавал русским именам. Итог по 1к строк я добавил в списки.
Пример имен из списка "Не определен"
По скольку проверка идет только по одному слову, то такие имена "Эльмирочка Николаева" приходилось разделять на две переменных и чекать по очереди. т.е. Если "Эльмирочка"(Имя 1) не определилась, то проверяем "Николаева"(Имя 2) если она есть.Камуфляжный Ниндзя
Красивая Независимая
Лавка тёти Сары
Озорная Семейка
НЕВСКИЙ БЛЯДИНА
разгружаю гардероб
тихорецкие_лизуны
kati
Kati
Katia
Katie
Katina
Katjuscha
Katrin
Katrin&Vilyam
katrin.s
Katrina
Katrine
katrinka.mо
Katrins
Katrish
Katsunari
Katterina
katty
Katush_k_a
KATVR-SHOP
katyaprosto
Katyasha
Katycha
katyusha
Kaтерина
Kaтя
Kristen
Kristine
Kristinka
Kristinochka
Kristusha
Kristy
Ksela
Ksena
Kseniaaa
Ksenialucky
Kseniia
Ksenija
Kseny
Ksenya
Ksu
ksucha
Ksucha-1977
ksuha
ksush.81
Ksusha
Ksuyshka
Ksyou1992
Ksyunechka
Kарина
Kатерина
Kатя
Kира
Kристина
Плюс ко всему не экранированные символы приводили к ошибке, по этому я сделал замену этих символов на пробел (Дополнять по мере необходимости, если не знаете как дополнить - пишите в теме).
Код:
(\(|\)|\+|\\|\*|-)
На момент публикации статьи я получил такой результат
Мужских имен: 54506.
Женских имен: 46593.
Не определено: 25665.
Кажется, что много не определил, но в основном там не имена.
Тем не менее, уже есть несколько идей как повысить процент распознаваемости.
По мере конкурса я буду развивать шаблон и тему
Примеры полученных данных.
Надеюсь мой шаблон пригодится в решении задач парсинга данных с сайтов которые не предоставляют данных по половому признаку.
Ну и в дополнение ответ на вопрос. А зачем определять пол? Например для формирования баз, по определенным критериям. Допустим женщины продающие автомобиль. Это сэкономит время и позволит более точно определить свою ЦА. Всем спасибо, Удачи!
- Тема статьи
- Парсинг
- Номер конкурса статей
- Девятый конкурс статей
Вложения
-
1,2 МБ Просмотры: 433
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: