Как стать автором
Обновить

Определение пола по истории навигации, шаг 2й

Время на прочтение 2 мин
Количество просмотров 4.5K
Добрый день.
Сперва ссылка: угадываем пол посетителя.

По истории навигации с помощью js можно определить пол посетитеся, об этом уже писали. Вкратце — создаем с помощью js ссылки и смотрим, какого они цвета, а по этому определяем, посещенные они или нет. Затем объединяем полученную информацию с демографическими данными о посещенных сайтах.

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

Если кто-то захочет сделать у себя, то выкладываю наработки: там серверное приложение django, js-файл, дамп собранной базы данных. Лицензия, если где-то не указано, — MIT. Без джанги все тоже легко можно использовать.


Если вы используете django, то для серверной части можете подключить приложение demography
(все как обычно, добавляем в INSTALLED_APPS, при желании используем подготовленные urls). Для тестирования может понадобиться шаблон gender_test.html где-нибудь, ну там в urls.py все понятно.
Данные по демографии можно установить с помощью команды
manage.py loaddata <путь-к-файлу>/demography.json
Их также можно импортировать из дампа базы данных (demography.sql) — если django не используется.

Если вы не используете django, то серверную часть надо будет написать самим. Там все несложно: по какому-либо пути должна быть доступна страничка, которая через POST принимает параметр «links», в котором лежит сериализованный в json массив с номерами посещенных страниц, и возвращает json-словарь данных (как минимум, думаю, вероятность того, что посетитель — мужчина).

Вероятность считается по формуле x/(1+x), где x = r1*r2*...*rn, где r1,r2 и т.д. — male_ratio посещенных сайтов.

В принципе, легко можно перенести логику и на клиента, устранив серверную часть вообще.

Клиентская часть состоит из 2х частей (все в одном файле demography.js).
1. немного упрощенная функция SocialHistory от Aza Raskin (повышена скорость работы, все переименовано в VisitHistory).
2. mootools-класс Demography для работы с джанговской серверной частью.
Думаю, там все просто, и кто захочет — легко перепишет Demography на jQuery и тд, или сделает так, чтобы все работало с другой серверной частью, или перенесет всю логику на клиента.

Пример использования Demography:

//обработчик полученных данных
var callback = function(response){
alert(response.male); //выведет вероятность того, что посетитель - мужчина, в процентах
}
//создаем класс. В параметрах - адрес, куда слать запрос.
var stats = new Demography('/gender/gender');

//получаем информацию
stats.get_gender_info(callback);


P.S. есть подозрение, что в ие что-то не работает. Но ничего, вечером, наверное, починю.
UPD. Похоже, тревога ложная, и все работает.

UPD2. Уважаемые девушки! Приношу официальное извинение, если ваш пол определился неправильно. Дело в том, что по статистике перекос в мужскую сторону на околокомпьютерных сайтах сильнее, чем на порнографических, отсюда и нестыковки получаем. Например, зашли вы на хабр — вероятность того, что вы мужик, уже 88%. Не сердитесь)
Теги:
Хабы:
+45
Комментарии 51
Комментарии Комментарии 51

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн