{"id":7016,"title":"\u0423\u0433\u0430\u0434\u0430\u0439\u0442\u0435 \u0433\u043e\u0440\u043e\u0434\u0430 \u043f\u043e \u0437\u0432\u0443\u043a\u0443 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043f\u0438\u0432\u0430 \u0438 \u043f\u0435\u043d\u0438\u044e \u043a\u0438\u0442\u043e\u0432","url":"\/redirect?component=advertising&id=7016&url=https:\/\/vc.ru\/special\/sound&placeBit=1&hash=6ca24c77fedb0a01bd41595a6fbd498b5375a294c2e3b54a129aa318671b77a3","isPaidAndBannersEnabled":false}
Machine learning
Peter Bondarenko

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

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

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

Боль

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

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

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

Решение

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

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

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

Хэппи-энд

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

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

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

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

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

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

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

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

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

{ "author_name": "Peter Bondarenko", "author_type": "self", "tags": ["\u043a\u0432\u0430\u0440\u0442\u0438\u0440\u044b","\u0438\u0438"], "comments": 221, "likes": 449, "favorites": 1227, "is_advertisement": false, "subsite_label": "ml", "id": 138697, "is_wide": true, "is_ugc": true, "date": "Wed, 01 Jul 2020 14:50:58 +0300", "is_special": false }
0
221 комментарий
Популярные
По порядку
Написать комментарий...

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

2

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

115

© Омар Хайям

165

Ты не прав...

56

Именно так появились лобстеры.

9

Ага. Бог придумал себе лучшую закуску. 

4

Либерасты

–10

(с) Джейсон Стейтем

0

Подскажите, какой критерий для отбора?

0

Хороший вопрос, Влад. Не знаю. В этом и есть специфика работы с нейросетями. Нейросетевая модель сама определяет критерии и выдаёт ответ.

0

То есть, нет каких то фундаментальных критериев по которым мы получаем ответ?

0

В случае с нейросетями — нет. Нельзя сказать с уверенностью какой именно критерий повлиял на ответ. В этом и есть «магия» этой технологии.

0

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

63

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

98

Может риэлторы - и так нейросеть? Ублюдочная

29

Тут думаю можно сразу писать по объявлениям "Комиссия есть?". Кто отвечает "Да", заносить в отдельный список куда-то в рейтинге - Квартира - Пользователь - Риелтор.

Постараться максимально может убрать из циана всех риелторов, тогда будет типо "clear-cian.ru" и выводить только те объявления, по которым нет комиссии)

5

Ну это вполне норм. 

0

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

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

9

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

8

почему именно "ублюдочными"? 

0

ну не нравятся человеку хорошие риэлторы, хочет экзотики, вот и обращается к соответствующим :) 

1

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

0

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

39
Принципиальный хот-дог

Это цена продажи или аренды?)))

3

Цена просмотра

59

Так и есть! Там чуть пониже цена просмотра за метр. Можно только сортир посмотреть, всяко дешевле...

–1

Клика :)

6

Это номер телефона 😄

2

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

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

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

20

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

1

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

18

Спасибо!

2
Весенний клуб

10 из 10!

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

1

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

48

Лёгкого переезда Вам. И спасибо за дельную штуку!

4

Петр, подскажите, ваш сервис только с Циан работает или можно в Авито так квартиру искать?

1
Весенний клуб

А что если в ЦИАН обратиться? Или с работой проблем нет?

0

Вы имеете ввиду, обратиться, чтобы поработать у них? Или продать им?

0
Весенний клуб

Уже не знаю...

Может, проще свой ЦИАН сделать? 😉

2

Скорее всего циану будет не интересно. Им нужны клики, просмотры, реклама.

0
Весенний клуб

Нет такого сервиса, который сознательно отказался бы в дизайне своего UI от большой красной кнопки «Сделать мне хорошо!» 🙂

А тут автор дал возможность понажимать на кнопку, портированную специально для нас прямиком из 22-го века 😉

1

Совсем нет. Во-первых, подобные разделения очень субъективны. Да и для качественной классификации нужно очень много данных.
Во-вторых, вопрос, кому "сделать хорошо". Точно не Циану. Любой подобный сервис получает деньги с пользователей, которые платят деньги за размещение и поднятие объявлений, их выделение в поиске. И сознательно мешать тем, кто им заплатил (вне зависимости от состояния их объекта и справедливости цены) сервису просто непозволительно.

1

ждем Вашего переезда

0

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

8

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

1

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

0

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

7

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

4

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

2

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

1

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

И, что для меня показательно, кроме правки ссылки я никак не изменял ваш .ipynb, хотя опыта в этом предостаточно ))

1

О, Супер! Очень рад, что оно по-прежнему так же хорошо работает! :)

1

👍

2

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

2

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

2

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

0

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

4

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

2

 Не могу найти.
Если не слишком нагло можете скинуть скрин экрана с параметром?

0

В разделе «прочее». Сейчас с телефона ток могу.

1

 Наверное это только в версии для телефона есть.

1

Смотрю с компа, есть поле.

1

 У меня нет :(
Благодарю, что поделились.
Отпишусь в cian.

0

На всякий случай поинтересуюсь, разворачивали кнопку "Еще фильтры"?

0

 Понимаю, что звучит странно.
1 - Да
2 - Несколько другой интерфейс...

0

В режимах "поиск на карте" и "поиск списком" разные настройки фильтров. Переключитесь с "карты" на "список"

0

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

0

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

1

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

1

Тогда логично удалить «завтра заселяюсь».

0

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

0

Гугли: мошенничество при аренде квартиры.

0

Нет не буду

3

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

0

Конечно!

0

А на покупку работает? Или только съем?

0

В принципе можно дописать чутка код, чтобы на и на покупки работало. Сделать?

44

Только если это не займёт у тебя много времени! А так, очень интересно)

3

Присоединяюсь, если не сложно - будет круто)

2

Было бы очень полезно! Заранее спасибо огромное!!!

0

Готово, поправил код. По той же ссылке. Не уверен, правда, что модель будет так же хорошо отрабатывать, так как специфика объявлений на продажу чуть другая: гораздо больше фотографий района и дома с улицы.

9

Это же попахивает каким-то нейрориелтором😄 спасибо, сейчас будем обкатывать👍

2

Спасибо большое! будем тестить :) Подкину идею для нового поста: "Как научиться писать коды как Бог?"

1

Код, кстати, не очень классный. Думаю, какие-нибудь матёры кодеры меня бы засрали.

1

Можно засрать проще.
Нищеброд, нищеброд! Нет свой квартиры в Москве!

2

Блин, обидно конечно стало................

6

Пусть засирают, они все равно ничего даже близко полезного не сделали. Как говорится, специалист специалиста всегда засрет, а пользователю насрать, что под капотом, работает, полезно, великолепно!

1

А смысл? Если при съёме жилья это ещё важно, то покупают не ремонт, а место для жизни — район, дом и другие факторы. А ремонт - это дело наживное.
Пусть хоть супер ремонт будет, но я, например, не готов брать квартиру в Химках, Новой Москве, на юго-востоке Москвы, в Некрасовке и т.п.

Да и за ремонт идёт бешеная доплата. Например, недавно смотрел - голые стены - 10.5 млн, та же самая планировка в том же самом доме, но уже с ремонтом (при чём хоть и хороший с виду, но при детальном изучении много нехотелок выявилось) - 14 млн. Вы готовы отдать 3-4 миллиона в Москве за выше среднего ремонт, который не подойдёт вам в 80-99% случаев, т.к. ремонт не для себя делается спустя рукава и очень дёшево, ничего не продумывается и т.п.? Вы же не загляните под пол, не увидите, как трубы пустили, как проводку сделали.

Скажу так, знакомые сделали за 3 млн офигительный ремонт под себя с заделом на будущее (ребенок). Полностью сделали так, как они хотели и вышло дешевле.

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

Обобщу мысль свою. Съем квартиры - ремонт играет значение, т.к. как минимум приятно жить. Не понравилось? Съехал в другую и всё. Покупка квартиры - если для жизни, то это надолго. Не понравилось? Мирись или переделывай, но сперва сломай весь ремонт, за который заплатил немало денег.

2

Если ремонт дело наживное, то спешу тебя расстроить, потому что если ты не запланировал его точное начало и конец, тебе Биздец

2

Ну тогда ок, куплю квартиру где-нибудь в Выхино, зато с офигенным ремонтом. А ездить буду на работу куда-нибудь в центр.

А на самом деле это понятно. Только вот если нет денег на ремонт и не предвидится, то купить квартиру с хорошим ремонтом так же будет проблематично. Повторюсь, ценник в Москве на 2-5 млн выше за простенький-средненький ремонт. Даже в ипотеку это ад. А если есть деньги - то за 2 млн нанимается бригада и делается отличный ремонт с дизайном и перепланировкой за 3-4 месяца.
Своими силами дешевле, но тут надо их рассчитать, как вы и сказали.

2

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

–9

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

0

Спасибо за статью! Подскажите, пожалуйста, если есть вопросы по товарам и услуге - пишите в лс? Вопросы о размещении товаров в каталоге: ФИО и дату рождения, указанные в профиле.

–8

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

FilterAllShitPlease(CIAN_URL, threshold=THRESHOLD)

1

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

0

Нужно запустить не только последнюю ячейку, а всё с самого начала.

1

Спасибо!

0

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

0

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

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

0

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

0

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

1

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

1

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

1

Спасибо!

0

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

1

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

1

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

1

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

0

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

1

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

0

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

1

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

0

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

1

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

0

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

2

Можете посоветовать книги/ресурсы для обучения по использованию Гугл Колаба? 

0

Если бизнес-модель построена на максимальном нахождении пользователя на сайте, то, да, автор эту модель изящно снес👍

0

К сожалению, несмотря на качественный результат, решение технически просто копируется, покупать им его смысла нет (ну если бы еще у расширения накопилась база пользователей на десятки тысяч, то может могли бы за аудиторию поторговаться). Максимум какой-то стартапчик на арендную тему постучится с коллаборацией.

0

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

0

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

0

решил проблему для себя так 
добавил переменную 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 ред.

1

Идеально! Ну вот я примерно так же решил бы. Просто это ещё можно закинуть в for и получится на входе такой большой набор данных.

0

Добила немного, чтобы проверка шла по всем найденным результатам, с итерацией по страницам :) Здесь: https://colab.research.google.com/drive/1yhbOcA4JA9d6NP42Rx68KCp_u8c9wkRj?usp=sharing

4

И добавила сортировку выдачи по max(scores), если я правильно поняла критерий :) 

1

Супер! Спасибо!

0

а вот это у вас учтено?
"TopOfferCard, но есть ещё и просто OfferCard."

0

Да, я про это ниже тоже коммент писала. В коде учтено. 

0

Спасибо. Через вашу ссылку классно работает.

А к wordpress через плагины можно прикрутить? Вроде как не должно быть сложно... Только я не умею совсем ))
И выдавать просто списком.
+Яндекс недвижимость так же парсить.

0

С вордпрессом не работала, я больше по питону :) Теоретически на основе обученной уважаемым автором статьи нейросети можно на любом проекте картинки квартир оценивать, надо только распарсить и скормить нейросети найденные картинки. Но лично я дорабатывала этот код чисто из интереса - даже квартиру сейчас не ищу. И на превращение всего этого в полноценный проект, увы, нет времени.

0

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

0

В случае некоторых других запросов циан разбивает объявления в выдаче на два типа: крупные и мелкие.
Вот как здесь, например: https://www.cian.ru/cat.php?currency=2&deal_type=rent&engine_version=2&foot_min=45&maxprice=25000&metro%5B0%5D=204&metro%5B1%5D=205&minprice=15000&offer_type=flat&only_foot=2&room1=1&room2=1&type=4

И вот парсер, к сожалению эти "мелкие" совершенно не видит и не анализирует.

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

P.S. Что характерно, этот "размер" - свойство самого объявления, он, например, не меняется, при смене сортировки, даже если объявления уезжают на другие страницы. На количество отображаемых на одной странице объявлений он тоже не влияет, их всегда 28. ред.

1

Да я думаю дело в том, что я вообще сильно не заморачивался с парсером :) Там его можно пилить и пилить до совершенства, но я не знаю, есть ли в этом смысл.

0

А я как раз переборол лень и разобрался, все оказалось просто =)
Парсер вычленяет только объявления типа TopOfferCard, но есть ещё и просто OfferCard.

Вы сознательно откинули эти карточки, или они просто не попадались?

1

Просто не попадались :) я же делал для себя и вообще не думал, что это всё в такую историю в итоге обернётся.

1

Спасибо за клёвый скрипт! Почему-то со ссылкой на Спб не работает:
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
показывает просто пустую выдачу. Наверное, там есть небольшие отличия в вёрстке.

0

Вот пример первых трех строчек выдачи:
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.

1

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

1

У Вас выборка идет по Московской области. Как пониманию, вопрос был насчет именно СПб. При treshold'е и в 0.3 выводит пустой список

0

Ответил под другим вопросом, дублирую еще раз сюда: нужно добавить в ссылку & region=N – где N регион. Это поле из линка переодически убирает сам ЦИАН (видимо в куки), но его можно вернуть, если в на странице с выдачей снова выбрать регион.

0

Супер, таким образом сработало)

1

Какой отвратный ремонт

0

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

0