{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

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

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

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

Боль

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

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

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

Решение

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

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

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

Хэппи-энд

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

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

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

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

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

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

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

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

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

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

Замечательная штука! Только столкнулся с проблемой - в циане выдача разбита на страницы, и результаты работы нейросети - только по тем 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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