{"id":14272,"url":"\/distributions\/14272\/click?bit=1&hash=9c431bca9c7cafdd4ed114bc7fb4d407f06f28aa165d6f80b9637d3a8581e5c2","title":"\u0421\u0431\u0435\u0440\u041a\u043e\u0442 \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043b\u044e\u0435\u043d\u0441\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0435\u0442\u0435\u043b \u0432 \u043a\u043e\u0441\u043c\u043e\u0441","buttonText":"","imageUuid":""}

Как я нашёл красивую квартиру с хорошим ремонтом с помощью собственной нейросети

История о том, как я искал квартиру под аренду и в итоге написал нейросеть, которая отфильтровала лучшие результаты на ЦИАН для меня.

Пример выдачи

Боль

Недавно встала задача найти новую хорошую квартирку для жилья в Москве. Диапазон цен, который меня бы устроил, — от 40 до 60 тысяч рублей.

После продолжительных поисков на всевозможных сервисах поиска жилья я обратил внимание, что 90% времени я просто тыкаю по объявлениям, листая фотографии, и принимаю решение — нравится мне квартира визуально или нет.

Все остальные мелкие параметры можно настроить в фильтрах поисковиков. В данном случае я использовал ЦИАН.

Решение

В итоге я подумал: а почему бы не сделать нейросеть, которая бы одним кликом отфильтровала бы мне квартиры, которые мне априори не понравятся.

Легким движением руки я подкрутил фильтры поиска так, чтобы в выдача получилась максимально отвратительной, а затем повторил тоже самое, только наоборот. Я просто менял ценовые диапазоны. Таким образом я собрал датасет из десятка тысяч картинок с очень красивыми и просто отвратительными квартирами.

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

Хэппи-энд

Вот такой вид теперь у меня из окна

Я нашел просто отличный вариант двушки с видом на Москву-реку и «Москву-Сити» за 45 тысяч рублей. Завтра заселяюсь!

Где попробовать?

Прикрепляю ссылка на Google Colab:

Всё, что нужно сделать:

  • Зайти на ЦИАН и в фильтрах выставить все ваши хотелки. Нажать «Поиск».
  • У вас получится поисковая выдача с объявлениями.
  • Копировать ссылку на эту выдачу. Она будет выглядеть примерно вот так. И вставить её в Google Colab в самом самом низу в разделе MAGIC HAPPENS HERE.

Готово, можно запускать!

Нажимайте «Среда Выполнения» → «Запустить все». Модель отфильтрует для вас хорошие варианты. Уровень фильтрации можно менять параметром threshold в том же разделе. Его можно менять от 0 до 1. Чем выше значение (например, 0,7), тем сильнее будет фильтрация и меньше результатов в выдаче.

У меня в планах сделать из этого простой инструмент. Например, Chrome Extension, так чтобы любой желающий мог быстро отсеять лишнее.

0
222 комментария
Написать комментарий...
MONAR

Хорошие продукты появляются когда их делают для себя

Ответить
Развернуть ветку
Peter Bondarenko
Автор

© Омар Хайям

Ответить
Развернуть ветку
9 комментариев
Artem Kudinov

Вот бы еще нейросетку, чтобы сама общалась с ублюдочными риэлторами.

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Теоретически можно сделать, чтобы общалась. Правда получится так же ублюдочно.

Ответить
Развернуть ветку
3 комментария
Dear Moscow,
Вот бы еще нейросетку, чтобы сама общалась с ублюдочными риэлторами

Услышал вас. На созвоне.
Как будут подвижки по вашему заказику, подскочу кабанчиком, обкашляем вопросик.

Ответить
Развернуть ветку
Stanislav K

Риэлтор хуже червя-пидора

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
1 комментарий
Леонид Бугаев

сделали уже. 
показывали корпоративную звонилку Яндекса вчера

Ответить
Развернуть ветку
Кутько Жанполь

во спасибо мил человек, я свою квартиру тоже нашел. послезавтра переезжаю

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
4 комментария

Комментарий удален модератором

Развернуть ветку
эй арнольд

Очень актуально, но выдаёт пустые результаты по ссылкам из статей и по тем которые я собирал..

upd: Ой, кажется в моем мухосранске даже с максимальной ценой просто нет квартир которые модель бы оценила как достойные xD

Ответить
Развернуть ветку
Тофсла, Вифсла и партнёры

кибербанк, который мы заслужили

Ответить
Развернуть ветку
Денис

Четко ! Поклон вам добрый человек . Затестим 👍

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Спасибо!

Ответить
Развернуть ветку
Ol Ka

10 из 10!

Так, а какие планы теперь?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Для начала вещи перевезти в новую квартиру. Ну а потом сделать бесплатное расширение для Хрома.

Ответить
Развернуть ветку
9 комментариев
Евгений Шерстюк

А можно такое для Тиндер?)

Ответить
Развернуть ветку
Алексей Бурнатный

А лучше для Google Glass или чего-то подобного, чтобы сразу ублюдочных блюрил и мьютил

Ответить
Развернуть ветку
Вадим Чиняев

на хабре есть уже статья

Ответить
Развернуть ветку
Ильдар Закиров

Просто утащу в закладки.
Спасибо огромное, наконец что то дельное сделали из нейросетей.

Ответить
Развернуть ветку
Ренат Смольный

Блин, какие же люди молодцы порой!

Ответить
Развернуть ветку
Sergei Zotov

За опенсорс крутого решения, которое и мне помогло снять классную квартиру :)

Ответить
Развернуть ветку
Sergei Zotov

Поднял у себя в локальном JupyterLab вместо Коллаба, - все завелось с пол-пинка. Очень круто вышло, спасибо!

Ответить
Развернуть ветку
Peter Bondarenko
Автор

О! Идеально! Я как раз для начала делал локально.

Ответить
Развернуть ветку
2 комментария
Yulay Mambetov

👍

Ответить
Развернуть ветку
F. K.

Пожалуй одно из лучших и главное полезных применений МЛ

Ответить
Развернуть ветку
Рифат Гилязиев

Вот бл человеческое применение нейросетям. Реальная проблема и реальное решение

Ответить
Развернуть ветку
Mike Espoo

 Вообще в cian очень не хватает банальной опции "с ремонтом".
А лучше шкалы градации ремонта.
Банально на уровне модерации объявлений можно это сделать, чтобы люди не тратили в пустую 90% времени.

Ответить
Развернуть ветку
Сергей Поляков

Да там у всех по текстовому описанию свежий дизайнерский ремонт. 

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Там есть, кстати, но видимо это поле заполняют сами риэлторы, поэтому в выдачу куча мусора.

Ответить
Развернуть ветку
9 комментариев
Black Jack

Автор, ты бы сначала заселился, а потом делился радостью. А то по старой русской традиции на таких сайтах обитает куча мошенников.

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Так я уже заселился, все ок :)

Ответить
Развернуть ветку
1 комментарий
Ivan Vishnyakov

В чем их профит?

Ответить
Развернуть ветку
2 комментария
Дмитрий Разин

Работает с выдачей от циана для других регионов?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Конечно!

Ответить
Развернуть ветку
16 комментариев
Валентин Олегович Родионов

Запустил локально, но как не менял линки и трешхолд, всегда выдает пустую выборку. Ошибка была только с установкой efficientnet в начале ноутбука, но я решил сделать это через командную строку в окружении заранее. В чем может быть проблема? возможно у кого-то есть список с версиями библиотек при котором все пашет?

Ответить
Развернуть ветку
Михаил Добрица

Ну как решилось в итоге?

А то сейчас с тем же мучаюсь

Ответить
Развернуть ветку
Alexandr Simonov

Достойный ответ от нейросети vc — это значит, что я не могу её прочитать. В итоге, он в своём сообщении не сказал ничего про ключ. Он говорил о том, что не видел никого применения в его действиях.

Ответить
Развернуть ветку
Art

ты говоришь об этом так, как будто бы это что то плохое

Ответить
Развернуть ветку
1 комментарий
Никита Верещагин

Выдает вот такую ошибку :( 

FilterAllShitPlease(CIAN_URL, threshold=THRESHOLD)

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Какую? Не вижу самой ошибки.

Ответить
Развернуть ветку
3 комментария
Антон Коломин

Такая же проблема!

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Artem Rostislavovich

Зашёл на ваш сайт. Нет кнопки подписаться. Жду)

Ответить
Развернуть ветку
Кирилл Васильев

Как это связано?

Ответить
Развернуть ветку
Вы в федеральном розыске

Молодец! Отличная идея!

Ответить
Развернуть ветку
Philipp Volnov

Попробовал, результат впечатляющий :) круто

Ответить
Развернуть ветку
Ruben Voskanian

Вас приятно читать. Даже вредному критику...

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Спасибо!

Ответить
Развернуть ветку
Dmitry Tinitilov

Вспомнился рассказ, где ученый обучал ИИ для поиска себе идеальной девушки... В итоге ИИ сдал ученого полиции, а сам стал встречаться с "девушкой своей мечты")

Ответить
Развернуть ветку
Руслан Гусейнов

Как раз скоро надо хату в Москве искать, попытаюсь поюзать)

Ответить
Развернуть ветку
Паша Конор

Удивляюсь я Петру, талантище! И снимает круто, и сейчас еще и программистом стал. Может стоит посмотреть в сторону полетов на Марс? :)

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Хах, спасибо! Думаю запустить беспилотники для начала 😉

Ответить
Развернуть ветку
russel

Автор красава, если все будет работать то ты просто народный герой - завтра буду тестить на Сочи)

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Спасибо! Не забудьте проверить, чтобы в ссылке на выдачу был region

Ответить
Развернуть ветку
Anna Petrova

Здравствуйте!
Спасибо за отличный инструмент! Подруга искала квартиру в общей сложности примерно часов 16. С вашей "штукой" точно такой же результат получился за 1 минуту!
Можно ли сделать тоже самое для других баз с квартирами на съём / покупку?
Яндекс недвижимость?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Здравствуйте! Вау, результат поражает и меня!
Да, это вполне возможно.
Напишите мне в личные сообщения пожалуйста или может быть, кто-то здесь захочет вам в этом помочь.

Ответить
Развернуть ветку
Дмитрий Зорин

Не думал продать ЦИАНу или Яндексу?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Жду их тут в комментах 😏
На самом деле, уверен, у них у самих есть ребята, которые могут влёгкую такое повторить.
Если задуматься, кажется эта штука скорее понижает конверсию, так что с точки зрения бизнес-модели использовать такие приблуды не совсем логично.
Но, возможно, я ошибаюсь и это можно обернуть в плюс.

Ответить
Развернуть ветку
2 комментария
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Джэймс Бонд

Инструмент замечательный, скопировал к себе :)
Единственный вопросик: каковы критерии отбора квартиры?

Ответить
Развернуть ветку
Роман Бурко

Замечательная штука! Только столкнулся с проблемой - в циане выдача разбита на страницы, и результаты работы нейросети - только по тем 20-30 квартирам, которые есть на текущей странице. Можно ли как-то обойти это ограничение и запустить её по всем объявлениям?

Ответить
Развернуть ветку
Christofor

решил проблему для себя так 
добавил переменную page = 1
и занес ее в строку с ссылкой циан
в ручную меняю только Page

Page = 2
CIAN_URL = f 'https://www.cian.ru/cat.php?currency=2&deal_type=rent&engine_version=2&maxprice=55000&minprice=40000&offer_type=flat&room1=1&room2=1&room3=1&type=4&p={Page}'
THRESHOLD = 0.66

Ответить
Развернуть ветку
8 комментариев
Peter Bondarenko
Автор

Да, я просто добавлю цикл с «прощелкиванием» страниц. А пока что можно просто руками на странице нажать на следующую страницу, ссылка изменится и снова вставить в алгоритм.

Ответить
Развернуть ветку
4 комментария
Никита Олифер

Спасибо за клёвый скрипт! Почему-то со ссылкой на Спб не работает:
https://spb.cian.ru/cat.php?currency=2&deal_type=rent&engine_version=2&maxprice=60000&minprice=30000&offer_type=flat®ion=2&room1=1&room2=1&room9=1&type=4
показывает просто пустую выдачу. Наверное, там есть небольшие отличия в вёрстке.

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Вот пример первых трех строчек выдачи:
Score for https://www.cian.ru/rent/flat/235204277/ -> [0.07298347788552444, 0.927016536394755]: This is a good flat.
Score for https://www.cian.ru/rent/flat/235619356/ -> [0.37351334777971107, 0.6264866789182028]: This is a good flat.
Score for https://www.cian.ru/rent/flat/235617086/ -> [0.2044434861842698, 0.7955564906199774]: This is a good flat.

Ответить
Развернуть ветку
5 комментариев
Peter Bondarenko
Автор

Протестил у себя с этой ссылкой, всё вроде как завелось. Попробуйте поставить threshold поменьше, например 0.4-0.5

Ответить
Развернуть ветку
Irina Silvestrova

Хм, почему-то проверяет только несколько первых объявлений, которые крупные, а ниже на той же странице в более мелком варианте оформления - нет. Наверное, там другие элементы DOM.

Ответить
Развернуть ветку
Irina Silvestrova

Починила так: flats = soup.find_all('div', {'data-name': re.compile('OfferCard')})

Ответить
Развернуть ветку
1 комментарий
Irina Silvestrova

Да, берет только `TopOfferCard`, а обычные `OfferCard` игнорирует.

Ответить
Развернуть ветку
София Канаева

наебалово, ничего не работает

Ответить
Развернуть ветку
Peter Bondarenko
Автор

ЦИАН забанил гугловские IP с которых велся парсинг. Видимо кто-то начал запускать скрипт на полную катушку. Можете скачать себе на комп и запустить локально, будет работать.

Ответить
Развернуть ветку
6 комментариев
Сергей Филимонов

Самое интересное не написали и не показали: как обучали веса cian_model_01_B0.h5?
Где взять код для этого? Я бы хотел обучить на своих примерах "плохих" и "хороших" квартир :)

Ответить
Развернуть ветку
Dmitry

Можно воспользоваться библиотекой PyTorch, взять предобученную модель (типа ResNet или VGG) и дообучить (выполнить fine-tuning) для классификации на два класса (нужна будет папка, в которой находятся две папки: с "плохими" и "хорошими" квартирами). Примеры кода и статьи легко гуглятся по запросам вроде "image classification pytorch".

Ответить
Развернуть ветку
2 комментария
Макс Аминов

Класс

Ответить
Развернуть ветку
Peter Bondarenko
Автор

У вас ссылка не совсем верная. Должна быть: https://ekb.cian.ru/cat.php?currency=2&deal_type=rent&engine_version=2&maxprice=30000&minprice=15000&offer_type=flat&room1=1&room2=1&room9=1&type=4&region=4743

У вас не был указан регион, а именно region=4743

Ответить
Развернуть ветку
3 комментария
Дмитрий Соколов

Ребят я не разу не прогер,но сьем квартиры очень актуален,  подскажите где на google collab нужно искать MAGIC HAPPENS HERE? Понимаю что в коде, но у меня ничего подобного нет, пытался через ctrl+f, не находит. Подскажите пожалуйста по кнопкам куда нажимать.

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Да в самом низу можно пролистать, там будет раздел, который прямо так и называется.

Ответить
Развернуть ветку
3 комментария
Ghiyd jddf

Интересное решение)

Ответить
Развернуть ветку
Mike Jadis

Урыл :D

Ответить
Развернуть ветку
towardsahead

Маст хэв!

Спасибо!

Ответить
Развернуть ветку
Maria Latysheva

Господи, это же отлично!

Ответить
Развернуть ветку
Илья Александров

👍

Ответить
Развернуть ветку
Maxim Roslyakov

Ну что же, ждём ответ от риэлтеров. Нейросеть, которая будет обманывать эту нейросеть. 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Ivan Vishnyakov

Крутой кейс, но за рынок обидно.
В прекрасной России будущего все города будут прекрасными для работы и жизни, а рынок будет конкурентным и удобным

Ответить
Развернуть ветку
Anna Petrova

Вот сейчас и посмотрим сколько на vc живых пользователей ))

Ответить
Развернуть ветку
Максим Вторушин

Очень круто! Где же вы были раньше?)
Затестим

Ответить
Развернуть ветку
Дмитрий Анатольевич

А можно адаптировать под другой сайт, но тоже поиск недвижимости?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Да можно конечно, там парсер из 3-х строчек :)

Ответить
Развернуть ветку
1 комментарий
Jegor Tschulkov

Здорово! А нельзя никак сделать эту штуку универсальной для разных площадок?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Ответил выше :)

Ответить
Развернуть ветку
Даниил Громов
Ответить
Развернуть ветку
Иван Иванов

Офигенно! Реально, сделайте плагин для хрома и если возможно ещё на другие платформы, допустим Яндекс Недвижимость и Авито (почему-то многие предпочитают там выставлять объявления).

Ответить
Развернуть ветку
Fedya Savchuk

В формате расширения - очень классная идея
Как запустить фильтрацию всех результатов поиска (сейчас показывается только первая страничка)? Есть ли такая функция?)

Ответить
Развернуть ветку
Мікіта Журовіч

А где код, где модель? Народ требует свиней! 

Ответить
Развернуть ветку
Мікіта Журовіч

все, вижу, пошел в первый класс учиться читать :)

Ответить
Развернуть ветку
Igor Tsvetkov

Добрый день! Круто👍 А есть ли возможность как-то использовать ваши скрипты не для аренды, а для покупки?

Ответить
Развернуть ветку
Igor Tsvetkov

Нашёл:)

Ответить
Развернуть ветку
Игорь Старков

А она по любому городу по сути сработает?

Ответить
Развернуть ветку
Wera Ferat

Хорошо, когда есть фильтры на сайтах, при чем, чем больше, тем лучше, сортируется куча не нужных вариантов, экономишь время на поиск. 

Ответить
Развернуть ветку
Павел Жиронкин

Очень крутая идея! Будет круто допилить, чтобы можно было сразу с нескольких страниц собирать. Например чтобы сразу с 1 по 5 страницу собирались объявления и оценивались. 

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Спасибо! Выше в комментах есть такое решение. Ребята дописали.

Ответить
Развернуть ветку
Алексей Рукинов

Любопытно

Ответить
Развернуть ветку
Олег Малахов

Сделайте для планировки квартиры такую. Озолотитесь) 
С удовольствием воспользуюсь!

Ответить
Развернуть ветку
Евгений Ефимов

"Легким движением руки я подкрутил фильтры поиска так, чтобы в выдача получилась максимально отвратительной, а затем повторил тоже самое, только наоборот. Я просто ***менял ценовые диапазоны***."

Я правильно понимаю, что вы таким образом "показали" красивые квартиры (дорогие обычно красивые) и некрасивые, соответственно, из недорогих, а потом просто просите показать из недорогих то, что больше всего похоже на дорогие?

Вид из окна был в объявлении или случайно так получилось, что с хорошим видом нашли?

Ну и про риелторов - были?

Ответить
Развернуть ветку
Peter Bondarenko
Автор

1) совершенно верно вы поняли
2) случайно так получилось :)
3) не было, хозяева сдавали

Ответить
Развернуть ветку
Виталий Королев

Ссылка открывается в таком виде. Это так и надо? Но раздела MAGIC HAPPENS HERE я не нашел. :-)

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Да, открывается верно! Но нужно пролистать вниз и там увидите нужный раздел.

Ответить
Развернуть ветку
Daniil Kudinov

из этого нужно делать стартап-поисковик квартир) Чтобы можно было закинуть несколько фоток красивых квартир и найти похожие варианты. Получится быстро и удобно 

Ответить
Развернуть ветку
Denis V

Во-первых, у меня странно отображается сам сайт Циан, без форматирования, искать там что-либо сложно (см. скриншот). Во-вторых, в моем городе большинство объявлений на Авито, циан не так популярен. Поэтому было бы здорово наладить работу с Авито. 

Ответить
Развернуть ветку
Роман Доброхотов

403 ошибка (

Ответить
Развернуть ветку
Peter Bondarenko
Автор

По ссылке Colab?

Ответить
Развернуть ветку
3 комментария
Дмитрий Вербовский

Не работает.... жаль. 

Ответить
Развернуть ветку
Ivan Susanin

А есть ли версия ноутбука, которую можно скачать и запустить в юпитере на Win без доп. настроек (только ссыль на ЦИАН добавить)? То я скачал, но у меня куча ошибок вылетает и не работает в итоге...

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Боюсь, что так сразу и не выйдет. Вам нужно собрать окружение (virtual environment) с tensorflow, cv2, pillow, effecientnet, pandas.

Ответить
Развернуть ветку
Иоанн

Что-то не получается. Меняю строчку. запускаю. Результат ноль. Хотя поиск банальный и на самом циане много результатов выдает.
https://www.cian.ru/cat.php?currency=2&deal_type=rent&engine_version=2&foot_min=10&maxprice=70000&minarea=52&minprice=55000&offer_type=flat&only_foot=2®ion=1&room2=1&type=4

Ответить
Развернуть ветку
Peter Bondarenko
Автор

Так, ведь, уже месяца три как забанили ip и не даёт из google colab запускаться. Можно запустить локально :)

Ответить
Развернуть ветку
2 комментария
John Mnemovich

да уж, вид из окна действительно "красивый" )))

Ответить
Развернуть ветку
Шавкат Каримов

Хотел воспользоваться и оценить, жалко не работает, вроде все делаю верно, но просто ничего не появляется

Ответить
Развернуть ветку
Андрей Корягин

Почему-то перестало все работать...

Ответить
Развернуть ветку
Dmitry Myachin

Точечное освещение — сразу понижать в рейтинге

Ответить
Развернуть ветку
Akim Glushkov

Определенно, это сделано красиво.

Ответить
Развернуть ветку
219 комментариев
Раскрывать всегда