Задать вопрос
@SemenDemon

Как найти расстояние между двумя объявлениями?

Два обявления например:
1)продается квартира
тип: 1к.кв.
стоимость: 1млн руб.
площадь: 30м2
место: бутырский район

2)продается квартира
тип: 1к.кв.
стоимость: 1.2млн руб.
площадь: 28м2
место: район марфино

3)продается квартира
тип: 3к.кв.
стоимость: 4.2млн руб.
площадь: 128м2
место: район марфино

какими методами можно добиться примерно такого результата?
схожесть: 1 и 2 = 80% схожести
1 и 3 = 2% схожести
2 и 3 = 5% схожести
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Sunflowerz
Замечательный вопрос!
Давайте пойдём по пути тестирования.
У нас есть два одинаковых объявления с 5 параметрами:
1. заголовок
2. тип
3. стоимость
4. площадь
5. место

Если они совпадают то результат будет 100%.

Теперь мы поменяем площадь с разницей на 2м².
Получаем что например 122м² это номинал, а 124м² сравниваемое значение.
122/100=1,2 получаем 1%
124-122=|2| получаем разницу в сумме по модулю
2/1,2=1,67 получаем значение разницы в процентах
100-1,67 = 98,33 % совпадения

То же самое для стоимости

Для оценки похожести по месту, нужно получить номинальное место(район/метро/улицу).
И затем по API (например googe maps) сравнивать расстояние по следующему принципу.
1. Если есть номинальный район, то насколько далеко номинальный от сравниваемого?
2. Если есть номинальный улица, то насколько она далеко от сравниваемой улицы.
3. Если есть номинальное метро то насколько далеко от сравниваемого метро?
4. Если есть номинальный район и сравниваемая улица, то в этом ли она районе?
3. Если есть номинальное метро то оно в сравниваемым районе?
Ну и т.д.

Заголовок можно при желании разбивать по словам или символам и сравнивать его.
Сначала считаем все символы и их количество берём за 100% и затем сраниваем с другим заголовком посимвольно или пословно

И затем выдать процентное соотношение каждой схожести.
Я бы рекомендовал так.
Общее число будет крайне не информативным и может слишком часто ошибаться
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
В вашем примере можно придумать функцию, которая покажет нужные цифры тупо по цене.

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

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

Например, пользователь пользуется поиском. И в фильтрах указал, что ему важно место и цена. В таком случае коэффициент важности площади будет равен нулю, и она не будет играть роли. Для места и цены у вас уже должны быть подобраны коэффициенты и методы подсчета, их оставляем. Кстати, что касается места, то разумно брать реальное расстояние, то есть соседний район ближе, чем в другом конце города, а это потребует дополнительной таблицы с константами или более сложный алгоритм конкретно для данного компонента (идеально учитывать адрес квартиры и считать в километрах).
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Место + модульная разница цифровых показателей остальных полей: чем меньше - тем выше (больше релевантность).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы