Рейтинг районов на основе оценок от людей и почти никаких данных из открытых источников
Каждого из нас бесит свой двор! Возможно не во всем, но чтото точно найдется. Как минимум потому, что идеал не достижим. А еще человеку свойственно хотеть большего, чем есть. Но на самом деле большинство таких раздражающих проблем от того, что их не решают ответственные за проблему люди. Поэтому всегда будут вещи, которые так или иначе раздражают. И поэтому некоторые из нас берут инициативу в свои руки.
Сейчас осень, а я живу в Петербурге на Ваське и у меня есть собака. Поэтому больше всего меня раздражает, что на моем районе практически нет мест для прогулок с собакой. Моя собака супер активная, и ей не подходят простые пешеходные прогулки, она любит бегать за мячом. Поэтому летом и зимой мы ходим в сквер с хорошим газоном и бегаем там. Но когда идут дожди, газон превращается в болото из гниющих листьев и луж. Кароч, бегать нереально. Когда я жил в спальном районе на Юго-Западе, у нас был лайфхак — ходить на спортивные площадки с резиновым покрытием, которые никто не занимает в осеннюю погоду вечерами. Но здесь таких площадок нет.
И это не единственный минус места где я живу, есть еще, но больше конечно плюсов. И этой информацией я бы мог делиться с людьми, которые ищут свое уютное место. Но как и где непонятно.
Я встречал достаточно много проектов, которые помогают узнать больше про район города. В основном все эти проекты построены на данных об объектах на улицах, которые берутся из открытых источников, в частности из OSM. Эти данные часто неактуальны, неполноценны и медленно обновляются. На данный момент еще ни у кого не получилось собрать полноценный сервис оценки района с всевозможными параметрами. В 2017 году Яндекс выпустил материал с рейтингом районов. Оценку они построили на основе подсчета расстояний от дома до ближайших коммерческих заведений, поделенных на различные категории. Результат так и остался в формате статьи, но возможно используют в своих сервисах.
Я решил, что у меня есть хорошая возможность попробовать запустить рейтинг районов совсем с другой стороны. Во-первых у меня уже есть проект с аудиторией, в котором люди ищут квартиры в аренду от собственников, и эти люди заинтересованы знать о районе города как можно больше и готовы делиться своими знаниями. А, во-вторых, почему бы не сформировать рейтинг районов, в основе которого мнение и оценка от людей. То есть, определив список важнейших параметров. предлагать пользователю оценить каждый из них по своему району. Если коротко, то пользователь ставит оценку району, как товару на маркетплейсе.
В итоге получится уникальная история из множества индивидуальных субъективных ощущений от проживания в районах. Высокая оценка будет означать, что скорей всего место подходит для различных социальных групп людей. Средняя оценка скорей всего будет о том, что район подходит не для всех и тогда надо более глубоко изучать его с помощью других сервисов и источников. Ну и с низкой оценкой все понятно, скорей всего район не нравится большинству людей, которые проживали в нем.
Подобный проект я встречал, но посотрудничать не удалось, да и мне показалось, что развитие его остановилось.
Наброски прототипа
Начал делать свой.
Какое-то время я размышлял, о том какой из способов получения оценки от пользователя лучше. Был вариант показывать список названий районов. Вроде неплохо на первый взгляд, но достаточно большой список получается, не смотря на группировки по крупным округам или районам. Да к тому же в Петербурге большинство людей не знают наименований округов, в которых они живут, потому что в разговорах обычно используются или крупный район города или же ближайшая станция метро. Второй вариант — просить координаты и уже обратным геокодированием от OSM получать названия районов. Тут были сомнения в том, что человек не захочет делиться координатами своего места проживания.
Выбрал второй вариант, все-таки рейтинг не требует от пользователя конкретные координаты дома, это может быть любая точка в пешей доступности от дома в пределах оцениваемого квартала. Также плюсом является то что можно собирать оценки по конкретному радиусу и не привязываться к официальному району.
Дальше нужно было подумать о параметрах оценки. Одни из них были достаточно очевидные, и я сразу сделал по ним опрос среди различных людей, по которому стало понятно, какие из параметров более важные. А также получил в ответ все остальные параметры. Один из самых важных оказался «Транспортная доступность». Меня удивило, что «Чистота воздуха» не так уж и сильно интересует людей! Я думаю, что это зависит от региона, и люди, которые практически не сталкиваются с ощутимым для себя загрязнением воздуха, считают, что у них все хорошо с воздухом, поэтому параметр по сути не сильно важен. Но вот, например, параметр «Архитектура» я решил самостоятельно добавить, потому что многие люди как я обращают внимание на внешний вид, ведь он частично влияет на внутренние ощущения.
Получилось сформировать 2 группы параметров. 12 обязательных, их должен оценить каждый пользователь, и 7 дополнительных, только для тех кто имеет отношение к ним.
Один из важных моментов — это срок давности, который конечно же влияет на расчеты в оценке. И тут сложно, что-то придумать, чтобы проверить честность пользователей, так как пользователь сам определяет за какой год и на какой период он выставляет оценку. На данный момент это так, хотя можно убрать эту возможность и принимать дату по факту выставления оценки, что будет тоже не правдой для некоторых оценок.
Одну из полезных фич, я одолжил у других сервисов. Идея в том, чтобы отметить район тегами, которые его определяют. Главное тут было собрать максимально информативные теги и предлагать пользователю отметить подходящие по его мнению.
Кстати, сделал два необязательных шага в оценивании, где нужно писать, и там как раз можно и свой тег придумать и поделиться локальным названием района и дать какой-то развернутое мнение. Но пока это уходит в БД, я пока не придумал как емко показывать пользователю эту информацию.
Чтобы отображать рейтинг я решил, что в топ будут попадать только те районы, которые набрали хотя бы минимум 3 оценки. А минимальное количество районов начинается от 5. То есть для тех городов, которые только начнут получать свои первые оценки, рейтинг будет отображаться в том случае, когда как минимум 5 районов соберут по 3 оценки.
Я пока не сильно разобрался как лучше сделать с городскими поселениями, которые являются и городами и внутренними субъектами большого города и которые не имеют внутри себя районов. Сейчас это работает, так что такие поселения не попадают в рейтинг среди других районов. А чтобы увидеть оценки этого поселения, нужно менять город в настройках на наименование этого поселения.
И я также задумал некоторые алгоритмы, которые будут анализировать оценки и определять их как несостоятельные, при этом пользователь об этом не узнает. Конечно раскрывать подробности я тут не буду.
Результаты
Так как сервис с объявлениями был сделан на площадке Телеграм вместе с ботом, то и рейтинг районов сделал там же. Поэтому стек очень простой: nodejs/telegrafjs + mongodb + nominatim API.
Все получилось по задуманному прототипу, Проект был продуман и разработан в течении месяца. Сначала я сделал первые посевы в небольших тг каналах, и рейтинг собрал небольшое количество оценок. По ходу дела выявлял баги.
В моменте придумал и тут же добавил сортировку по конкретному параметру. Теперь можно видеть не только общий рейтинг, но и лучший район по выбранному параметру.
А в первые 3 дня большого запуска удалось собрать более 700 оценок по Санкт-Петербургу и Москве. Несколько раз уже поменялись районы лидеры в каждом городе и скорей всего поменяются еще не раз. В других городах активности минимальная.
В итоге вы можете посмотреть общий рейтинг, рейтинг по параметрам, оценки конкретного района, а также оценки квартала по радиусу с центром заданной координаты.
В целом рейтинг работает по всему миру, и по сути пожив туристом не менее месяца в другой стране, можно также поставить оценку.
Что очень важно для такого рейтинга, это как можно больше получить оценок от большого количества людей, и тогда он будет максимально приближен к реальности.
И все же я думаю, что рейтинг районов не заменит другие инструменты, которые помогают выбрать идеальный район, а только дополняет их, тем самым формируя более полную картину о районе.
Вы все также можете пожить в разных местах, поспрашивать у друзей, проанализировать карты и панорамы на них, найти и изучить сервисы, которые показывают уровень загрязненности воздуха и воды, сервисы, которые показывают уровень шума от дорог, сервисы, которые показывают лучшие места в городе с близостью к паркам и социальным объектам и так далее. И все это личный опыт, мнения близких людей и данные различных приборов и сервисов. А рейтинг районов это общее мнение большой массы людей. Поэтому только в сочетании всех этих знаний можно рассчитывать на индивидуальных успех в выборе района.
Если вам понравился проект, обязательно оцените свой район!
Буду рад почитать комментарии и ваши предложения!