Виссарион Григорьевич Белинский едет по вечернему Петербургу на извозчике. Извозчик видит — барин незаносчив, из простых, пальтишко на нём худое, фуражечка, — в общем, можно поговорить. Спрашивает:
— Ты, барин, кем будешь?
— А я, братец, литературный критик.
— А это, к примеру, что ж такое?
— Ну вот писатель напишет книжку, а я ее ругаю…
Извозчик чешет бороду, кряхтит:
— Ишь, говна какая…
Тезисно:
- В 2GIS много странных/аномальных (накрученных) отзывов
- За много лет (с момента, как они появились отзывы на флампе) 2GIS, похоже, не особо научился их ловить (ну иначе бы их не было, наверное)
- Меня этот расклад не устроил. За 1 вечер я написал “что-то”, что уже плохонько их ловило. За месяц в свободное время на коленке - сделал антифрод af2gis.ru (github) который при разумном подходе уже более-менее пригоден для личного использования.
- Вы можете проверить отзывы любой компанию сами за минуту (а иногда и за секунду) и составить свое мнение про их надежность.
Содержание:
- Интригующее введение (затянутое и скучное)
- Виды накруток отзывов в 2GIS (которые я не умею искать, но нашел)
- Проверяем отзывы через af2gis.ru
- Соображения на тему так называемых “проверенных” отзывов
- Дата-майнинг через 2gis/af2gis
- Как 2GIS защищается от ботов
- Рассуждение о проблеме надежных отзывов
- Пути развития
Кто прочитает этот лонгрид о разном (читать можно бегло) — те будут ходить в лучшие кафе и рестораны, их будут обслуживать самые красивые и шустрые официантки, еда будет вкусной, а порции огромными. И может быть они даже однажды услышат от автомеханика фразу «До капиталки этому двигателю еще далеко! Я вам сейчас воздушный фильтр заменю, и полетит ваша ласточка!».
А кто не прочитает — будут ходить в места, где плюют в суп и грубят клиентам. И их квартиру будет продавать риэлтер, который уже многократно проявил свой профессионализм получив «единички» от клиентов и затем проявил свою «честность» накрутив отзывы. Достаточная мотивация?
Для владельцев компаний может окажется интересным узнать, как получают относительно честные положительные отзывы и как избавляются от отрицательных отзывов используя официальный функционал 2GIS.
Знаете ли вы, что в Новосибирске есть компания по аренде квартир, у которой много отзывов от реальных пользователей с очень низкой оценкой, но в целом рейтинг у нее очень неплохой — пятерок тоже много. Только странность — большинство отзывов с пятерками от людей с закрытым профилем или без профиля вообще или с единственным отзывом… (аж 58% отзывов на нее — пустые, хотя обычно таких отзывов — менее 20%). Причем, средняя оценка от «пустых» пользователей — 4.8 баллов. А от пользователей с хоть каким-то открытым профилем — 3.3. (обычное расхождение — до 0.3 и часто в обратную сторону).
На картинке 4 отзыва, у двух авторов - несколько отзывов (у одного из них - история аж с 2022 года есть), а два других “автора” только зарегистрировались и оставили свой первый отзыв. Угадайте, кто из них кто? (Вы угадали.)
Знаете ли вы, что существенная часть посетителей сети столовых Солнечный день в Новосибирске — вынуждены лечить зубы в стоматологии в Уфе? Причем, это характерно для нескольких столовых этой сети.
Но это еще не самое печальное. Знаете, кто основные клиенты «поминального зала На Лопатина» в Иркутске (судя по отзывам 2гис)? Посетители Восточного кафе и шаурмы “Наша Марка” из Новосибирска. На меня это факт нагоняет жути больше, чем рассказы про то, как у мальчика было пятнышко на ноготке, потом он пропал, а потом его мама купила пирожок, а в пирожке был ноготок с пятнышком… Потому что про ноготок — это фольклор, а про поминальный зал — статистика.
Теперь — знаете. А 2GIS — врзможно, пока еще не знает.
В статье мы обсудим не только шаурму, хотдоги, коттеджи в аренду на сутки и студии депиляции, но и Эльдорадо, М.Видео, Альфа-Банк, Россельхозбанк и Совкомбанк и другие. Конечно, ни в коем случае не как обвинения, вообще не как утверждения, а просто как оценочные суждения и робкие предположения, что их отзывы, на мой скромный взгляд - необычные. Совсем капельку. (Я просто сложил 2+2
не посоветовавшись с юристом, получилось 4, но в этом не было злого умысла, прошу прощения за ошибку).
В общем, я что-то заскучал и со скуки проверил примерно 2 млн пользователей, примерно 60 000 компаний Новосибирска (и не только), и нашел немало интересного, странного и веселого! Будет весело (но не всем).
К сожалению, статья будет длинной, с ненужными размышлениями и лирическими отступлениями. Еще мы посмотрим на интересные находки в 2GIS и увидим, какие интересные гипотезы может дать легкий дата-майнинг по публичным данным из 2GIS.
Пусть вам придаст терпения мысль, что может быть в итоге вы дальше сможете почти безошибочно отличать качественные отзывы от некачественных. Вы любите вкусные манты и хинкали, шаурму и том ям, пиво и пахлаву? Честных автомехаников и даже риэлтеров? Ну вот — читайте. (Хотя отдельные, особо лирические главы можно читать по желанию).
Дисклеймер
Нигде в статье не будет утверждаться, что какая-то компания накручивает отзывы (даже если слова подобраны неудачно и текст можно понять и таким образом). У меня просто нет данных для того, чтобы что-то утверждать. Если бы меня спросили, сколько я готов поставить на любое свое утверждение - я бы ответил, что ни одной копейки. Зачем мне что-то ставить? Я не прошу мне верить, более того — прошу, настаиваю, и даже ТРЕБУЮ НЕ ВЕРИТЬ МНЕ (и Антифроду). Но желающие могут проверить и составить свое мнение.
Все результаты от af2gis следует понимать как интересные статистические явления, не более. Любая странность может быть просто необычным стечением обстоятельств. Кроме того, я не исключаю, что конкуренты могут заказать низкокачественные поддельные хорошие отзывы на компанию, чтобы «подставить» ее. Результаты зависят от коэффициентов, я их взял «с потолка» и не готов поручиться за них. И я их иногда меняю (и тогда «зеленая» компания становится «красной» и наоборот). Кроме того, расчет выполнен программой, а в программах бывают ошибки.
И я очень надеюсь, что коллеги из 2GIS не очень обидятся на меня. Алгоритмы и код - открыты и бесплатны. Хотите — берите себе, я только рад буду. Или сделайте даже лучше. Вы же хотите чтобы отзывы в 2gis были чище? Если будут вопросы какие-то — я охотно поясню, помогу. И я бы хотел, чтобы в результате этой статьи 2GIS стал лучше, ценнее, надежнее и дороже, а не добавилась задача юридическому отделу. Давайте убережем 2GIS от премии «Эффективная Барбара Стрейзанд 2025»?
Ну и товарищи мошенники — простите уж меня. Я понимаю, что палю вам контору, но вы иногда слишком уж халтурно работаете. Вам тоже стоит поработать над качеством. Обмануть 2GIS — это как ребенка обмануть, неэтично, но ничего сложного, но, блин, на вас же другие мошенники смотрят! Что они о вас подумают? Обманывать надо красиво, изящно, творчески, чтобы когда кто-то увидел ваш обман — вам аплодировали и восхищались, а не смеялись над вами.
Знакомство
«Привет, меня зовут так-то, я занимаюсь антифродом в 2GIS» - примерно такое начало статьи вы, наверное, привыкли видеть? А вот тут такого не будет. У меня есть мой персональный рекламно-нарциссический сайт о том, какой я умный и красивый (и почему мне надо много платить. Нет, не столько, чуть больше. Вот, уже теплее.) Но в контексте этой статьи интересно не то, кто я есть, а то, кем я НЕ являюсь.
- Я не сотрудник 2GIS и никак с ними не связан. Все данные, которые я использую для расчетов — это только те, которые 2gis сам отдает вашему браузеру. (Конечно, в настоящем антифроде использовалось бы много другой информации и он был бы гораздо эффективнее)
- Я никогда не занимался антифродом.
- Я никогда не занимался дата-майнингом или чем-то таким. А все мое образование в этой сфере на момент начала этой истории — одна IT-пьянка в Академгородке в начале 2000-ых, где один собутыльник сказал «А еще есть дата-майнинг, это, например, когда анализируют продажи и обнаруживают, скажем, что 80% покупателей водки еще и покупают огурчики».
- Я не могу даже сказать, что я математик — я бросил универ. А интегралом после универа пользовался только «чтобы шляпу из лужи поднять». Из всего сложного и магического математического аппарата в антифроде используется только арифметика, среднее и медианное значение. ВСЕ.
Я — человек, который почти максимально плохо подходит для разработки антифрода. Почему это важно? Возможно дальше, во второй части статьи я еще порассуждаю на тему того, почему один неподходящий человек, но который всего лишь искренне захотел выполнить задачу и на пердячем пару как-то криво и косо делает это, иногда может сделать больше, чем 4500 профессионалов, которые это не делают.
Признание в любви и прелюдия
Прежде всего, хочу сказать, что я люблю 2ГИС. Пользуюсь им, оставляю отзывы, добавил там несколько организаций - я тот самый лояльный идеальный пользователь, о которых мечтают все проекты. И люблю я его в первую очередь за отзывы. Когда появился flamp (если я правильно помню, сначала flamp был отдельным проектом) — мир стал лучше! И не только тем, что я смог выбирать кафе и СТО по отзывам. Важнее другое — фламп изменил правила игры для всех. Выгодный ранее подход «разводи клиента по-полной, завтра придет другой» перестал работать. Отзывы создали ситуацию, когда побеждает тот, кто в самом деле качественно работает, когда работать качественно стало выгодно!
Ну и… иногда мы шлепаем тех, кого любим. (Если вы понимаете, о чем я).
Как я пошел есть манты, а пришел в антифрод
Тайное всегда становится явным. – Евангелие от Луки 8:17; Денискины рассказы, В. Драгунский.
Как-то гуляя по городу я увидел заведение Манты-плов. Я люблю манты. Люблю плов. И тут такой двойной удар! Есть мне не хотелось, но я решил подметить это заведение и при случае заглянуть в него. Посмотрел рейтинг в 2гис — 5 баллов! Не 4.6, и даже не 4.9, а твердая 5! И огромное количество отзывов.
Немного смущало то, что такое восхитительное заведение расположено очень неудобно и в очень отдаленном месте города, рядом с шиномонтажом и автомойкой, да и выглядит как-то не очень… но, как говорят некрасивые девушки — не суди о книге по обложке!
Дома я почитал отзывы и вот на что обратил внимание… В профиле одного посетителя этого заведения я увидел, что он хвалил еще и шаурму «Наша марка». И следующий комментатор тоже хвалил «нашу марку». И следующий. Приглядевшись, я понял, что есть некоторое «облако» компаний, и практически каждый, кто ставит этому заведению 5 баллов — хвалит еще и несколько заведений из этого облака. Причем иногда хвалят даже заведения этих сетей в другом конце города и даже по области!
Немного странно, когда житель Новосибирска не посещал (не оставлял отзыв) на зоопарк, крупные ТРЦ, супер-популярные бары и рестораны, кинотеатры, набережную — зато посетил почти все заведения “Шаурма - наша марка” и “SP шаурма” в городе и даже не поленился доехать в Искитим (час на машине) чтобы попробовать шавуху во многих точках этой сети в Новосибирске и области. Странно, но бывает. Но особенно странно, когда почти все посетители этого заведения — вот такие вот…
Неужели, кто-то заказал самые дешевые отзывы?… Кроилово ведет к попадалову! Конечно, настолько бесхитростными, топорными, дешевыми отзывами пронырливый мантовар может обмануть только ребенка или там компанию 2ГИС, но не человека, который хочет вкусные манты. (Кстати! Коллеги из 2GIS, понимаю, что вы меня уже, может быть, ненавидите за мой едкий сарказм, но может поделитесь: вы сами-то, когда выбираете заведение — неужели ведетесь на отзывы из 2GIS? Или Яндекс-картами пользуетесь?)
Думаю, все же знают про теорию мертвого Интернета? Вот, похоже, бывают и кафе, где мало живых людей, зато много ботов. А что если когда вы выбираете кафе по отзывам — вам не живые люди советуют, а боты наперебой громко расхваливают, какие тут вкусные блюда, низкие цены, интерьер и обслуживание… и за плотным строем ботов вы даже не видите единственного человека, который слабым голосом кричит - БЕГN!
Какие бывают интересные накрутки аномалии в 2GIS?
Когда мера становится целью, она перестает быть хорошей мерой – Закон Гудхарта
Еще раз скажу: все примеры тут — они не про то, как кто-то накручивает рейтинг, а о том, какой же глупый мой алгоритм и как он ошибается. Но некоторые находки могут оказаться интересными. Начнем с сомнительных примеров, которые видны невооруженным глазом. (Хоть они и кажутся очень маловероятными, нельзя исключать, что каждая необычная история за ними - вполне может быть и реальной).
Более математические и надежные примеры рассмотрим позже.
Пользователи-путешественники
Совершенно нормально, если пользователь бывает в разных городах (я бы даже сказал наоборот - странно, если он никогда не покидает свой город). Однако, бОльше подозрений вызывают пользователи, которые (судя по отзывам) вообще не имеют определенного места жительства, нет никакой географической точки, к которой он был бы более привязан. Которые сочетают свою тягу к путешествиям с тягой к отзывам. Причем, оседлый образ жизни не вызывает у них желания оставлять отзывы.
Прекрасная история успеха! Начал с хрущевки в Петропавловске-Камчатском (этим все сказано). Но наш герой не сидит на месте, уже в тот же день купил кухню и шкаф-купе в подмосковье, через неделю взял машину в Новосибирске (правда, в кредит, но все таки!), на ней летит в Питер и там покупает черный металлопрокат (работает с ними с 2022 года, видимо, еще с Петропавловска-Камчатского). И вот итог — через год арендует роскошную машину в Дубае!
Этот прекрасный путешественник побывал в Краснодаре, Норильске, Альметьевске, Белгороде, Новосибирске, Ставрополе, Барнауле и Кирове. В один день. И про все заведения оставил, конечно же, положительные отзывы. Прямо, как в стихах Игоря Северянина: Из Москвы в Нагасаки, из Нью-Йорка на Марс! Можете посмотреть карту его “передвижений” по всей нашей необъятной родине…
Но вот мой кумир - конечно же солнце русской прозы, безымянный Sberid User! Не каждый может так похвалить простое административное здание… И тоже, отзывы по всей стране.
И дело не в том, что я тщательно проверил и нашел несколько таких странных пользователей (это примеров - несколько),а в том, что их тонны, причем эти тонны притягиваются в некоторые особые места, где с молитвой и огнеметом можно было бы их сразу удобно вычистить или, хотя бы, вежливо сбросить оценки от них. Если бы кто-то этого хотел…
Новорожденные
Интересна статистика от мебельного магазина E1 .
Как мы видим, 14 отзывов из 27 обработаных, написаны пользователями в первый день своей “карьеры” на 2gis (свежезарегистрированные аккаунты). Конечно, некоторые пользователи с таким “возрастом” - это нормально, но когда мы видим настолько большое их количество… Особенно интересно посмотреть на первые четыре отзыва из отчета (с оценками 3, 1, 1, 5) - они оставлены в разные даты и оценки низкие. Похоже, что реальные пользователи ну и их реальный опыт разный. Зато все следующие - написаны в очень короткий период от 16 мая по 25 мая 2023 года. Почти стабильно, примерно по 1 отзыву в день. И конечно же все с пятерками, ну как же иначе?
Explanation for median_user_age
1 2c6d792d7bc7460fb807951476b38af5 3 (Сергей Угрюмов 2024-08-05 - 2024-08-05) = 0
2 6db02d2b75ec44839c4e91026a6be8ee 1 (Юлия Гаврилова 2024-05-31 - 2024-05-31) = 0
3 4095f94c971544bf919ad7524879c1e2 1 (Лариса Ларина 2023-12-25 - 2023-12-25) = 0
4 166f42d760f249aead52eb606408a16a 5 (Ирина Федорова(Кузнецова) 2023-06-09 - 2023-06-09) = 0
5 1540da3118be4e5fa896fef2b3cc7c17 5 (Sanya Sanya 2023-05-25 - 2023-05-25) = 0
6 582f4e2a7db3495b8591f84945ac55fc 5 (Виктория Викторовна 2023-05-24 - 2023-05-24) = 0
7 ecf25cc7b0784230acc08aef8a8f45a0 5 (Валентина Горшкова 2023-05-24 - 2023-05-24) = 0
8 9872a8f402e847879c390b46453f7842 5 (Анна К 2023-05-23 - 2023-05-23) = 0
9 6942331bdfd24d1cbe66d62a29ba9f07 5 (Димитрий Белобородов 2023-05-22 - 2023-05-22) = 0
10 4fdf1e211246417bb4dd1d9e31e6d67a 5 (Алексей Карасёв 2023-05-22 - 2023-05-22) = 0
11 8b76fd21037f4c50b30593fcef1bb9a6 5 (Денис Малаханов 2023-05-21 - 2023-05-21) = 0
12 57d66bb1231a4bf298605a312b121a7e 5 (Ольга Силакова 2023-05-21 - 2023-05-21) = 0
13 14f125cc41064209aecb1802ad76f4b3 5 (Дарья Лахва 2023-05-17 - 2023-05-17) = 0
14 7eb7408642804d20b1a9c70b0430b2cd 5 (Ольга Старикова 2023-05-16 - 2023-05-16) = 0
Median age: 0 >= 30
Young rating(4.3) - old rating(3.0) = 1.3 (> 1.2)
Detection: median_user_age 0 <= 30 (14 of 27) and rating_diff 4.3-3.0=1.3 >= 1.2
Для сравнения, медианный “возраст” посетителя Ауры (на момент оставления отзыва) - 225 дней. Бара Шульц - 657 дней. Новосибирского зоопарка - 400 дней. Магазина Hoff - 657 дней. Магазин Океан Мебели - 243 дня. Мебельный центр Мост - 370 дней.
Если вам кажется, что новорожденные аккаунты используют только малоизвестные мебельные магазины, то вот вам пример с офисом Альфа-Банка.
Как видим, все “новорожденные” - ставят исключительно пятерки, в то время как оценка среди более “взрослых” пользователей (среди которых тоже не исключены накруточные отзывы, поднимающие среднюю оценку) - всего скромные 3.7. По ссылке можно посмотреть журнал расчета и как везде в статье - я не прошу мне верить (мне это не нужно), но если кто желает - может посмотреть сам, увидеть имена пользователей, ссылки на публичные профили и сверить даты отзывов и их количество.
Интересно сравнить медианный возраст для банков? (вдруг там своя специфика). Извольте. Два офиса Райффайзена - 798 и 511 дней. Два офиса банка ВТБ - 351 и 332. Два Сбербанка - 257 и 541. Левобережный - 463 и 532. Альфа-Банк в Новосибирске, на Мичурина - 345 дней. Альфа-Банк на Ленина - 467.
Кроме: Банк А-Клуб на Каменской - снова median_user_age = 0
. В остальном, по Новосибирску можно тыкать в случайные Альфа-банки и не будет этой аномалии.
Но вот в Екатеринбурге просто напасть какая-то!
Если бы кто-то (не я, кто-нибудь менее осторожный) предположил бы, что это накрутки - то интересно, кто кого обманывает? Пытаются обмануть посетителей? А кто? Головной офис, или начальник каждого отделения самостоятельно? Или это менеджеры среднего звена отрабатывают KPI всякие, от них требуют высокое качество обслуживания, оценивают по отзывам, вот они отзывы и накручивают?
– Начальство от нас требует высокий рейтинг. Но пользователи недовольны и ставят низкие оценки. Мы считаем затраты на реформирование нашей работы - это X. Считаем затраты на накрутку - это Y. Сопоставляем X и Y, если X > Y - изменений не будет
–В каком банке вы работаете?
–В крупном.
Перекрестные пятерки: cам себя не похвалишь - никто не похвалит!
Давайте обратим внимание на WAX BAR, сеть студий депиляции и косметологии. Чтобы понять эту картинку, нужно совсем чуть-чуть понять несколько простых определений:
Аудитория - это множество пользователей 2gis которые оставляли отзывы на некоторое заведение (компанию А).
Сосед или Связь - это другая компания (Б), на которую аудитория компании А тоже оставляет отзывы. Аудитория связи - это люди, которые выставили отзывы обеим компаниям. (пересечение аудиторий компании А и аудиторий компании Б)
Хит - это сколько раз были оставлены отзывы на этого соседа.
Рейтинг - (а так же рейтинг-А рейтинг-Б) - это средняя оценка, которую компаниям А и Б ставят люди, которые ставят оценки обеим компаниям.
Так же на картинке показано (median) медианное число отзывов у пользователя/бота в этой связи.
Как мы видим, пользователи WAX BAR настолько волосатые, что не оставляют (в сколько-нибудь заметных количествах) отзывы практически ни на что, кроме салонов эпиляций этих двух марок. Опять же, уточним - мы тут говорим не про отдельных пользователей или отдельные отзывы, а про статистику. Отдельный пользователь, который оставил отзывы на несколько заведений этих двух брендов может оставлять отзывы на разные другие заведения, но мы видим что сильно и устойчиво их притягивают студиии депиляции, а вот все прочее притягивает неустойчиво.
И, признаюсь, я догадываюсь, что женская красота - это и косметика и уход и депиляция, и эти процедуры, наверняка, нужно повторять, но вот глядя на то, как часто это делает эта прекрасная женщина (иногда через день в течение недели, иногда каждый день, а иногда и два раза в день) - я чувствую, что и не хочу знать… Еще, мне страшно от мысли, почему каждый раз депиляция в другом месте? В прежнюю студию депиляции не пускают? Что там случилось? Уверен, за этим скрывается очень интересная история!
Review(2024-05-13 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001050636284 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, БЦ Прайм, Антона Валека, 13))
Review(2024-05-16 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001083825301 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, Авиационная, 59))
Review(2024-05-19 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001084190268 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, улица Кировградская, 12))
Review(2024-05-21 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001035930204 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, Родонитовая, 18Б))
Review(2024-05-22 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001075170327 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, улица Амундсена, 118а))
Review(2024-05-23 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001084191752 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, улица Кировградская, 12))
Review(2024-05-29 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001080578284 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, Blissсo молл, улица Уральская, 61а))
Review(2024-05-31 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001043861181 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, улица Белореченская, 15))
Review(2024-06-04 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001036499858 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, ТЦ Меркурий, проспект Космонавтов, 31а))
Review(2024-06-08 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001021479623 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, Родонитовая, 18Б))
Review(2024-06-09 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001075169625 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, улица Амундсена, 118а))
Review(2024-06-12 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001080579633 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, Blissсo молл, улица Уральская, 61а))
Review(2024-06-21 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001083886577 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, Авиационная, 59))
Review(2024-06-27 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001089565560 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, БЦ Актив, Опалихинская, 27а))
Review(2024-08-24 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001089405110 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, БЦ Актив, Опалихинская, 27а))
Review(2024-08-24 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001062568125 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, улица Белореченская, 15))
Review(2024-08-25 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001062568121 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, БЦ Прайм, Антона Валека, 13))
Review(2024-08-29 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001062568180 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, ТЦ Меркурий, проспект Космонавтов, 31а))
Review(2024-09-21 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001092668745 СОФТ ЭПИЛ, центры эпиляции и косметологии (Екатеринбург, Кирова, 40Б))
Review(2024-09-21 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001092043675 WAX BAR, сеть студий депиляции и косметологии (Екатеринбург, Кирова, 40Б))
Review(2024-11-04 2gis 08179e3294ec41d7b7fb0ababdf8ee85 Ирина Талькова(rev:99) 5) > 70000001093031415 WAX BAR, студия депиляции и косметологии (Челябинск, улица Сони Кривой, 24))
Конечно, можно предположить, что сотрудниц компании и других близких людей используют для накрутки рейтинга, но, как чемпион мира по галантности я так плохо думать не буду, просто будем считать, что женщины - ужасно волосатые создания. Ну, чтоб никто не обиделся.
Возможно, вы думаете, что только эти депиляционные центры перекрестно расхваливают сами себя?
Вот анализ отзывов Россельхозбанка.
Так как это отношение симметрично, то и от всех перечисленных в таблице филиалов будут аналогичные отзывы. И они не только по Новосибирску. Из Новосибирска связь рейтингов ведет в Набережные Челны, а оттуда - Завьялово, Колпашево, Барнаул, Нижнекамск, Уфа, Балабаново, Глазов, Кострома. Из Костромы - в эти же города, но еще и в СПб, Глазов, Сыктывкар. Можете сами по ссылочкам погулять, там интересно!
Из этого РСХБ в Екатеринбурге связи с другими отделениями РСХБ, по Екатеринбургу, Новосибирску, Нижнему Тагилу, дальше в Челябинск итд.
Если в случае с “новорожденными” предполагаемая накрутка изолирована (каждый новорожденный лайкает нужную фирму ну и может быть затем еще несколько), то с самохвалами обычно связи идут так далеко, насколько простирается бренд и 2GIS. Например, я потыкал в несколько московских отделений - и ничего аномального не нашел, кроме того, что в Москве, похоже, 2GIS гораздо менее популярен, и отделения банков даже в самом центре огромного города, на самых проходных местах имеют гораздо меньше отзывов.
Ваш банковский детектив даже попробовал немного поискать в сети людей, которые оставляют в 2gis отзывы на РСХБ (там же есть имена, иногда фотографии). И знаете - нашел! У одной женщины была указано сфера работы - банковское дело. У другой - место работы - Россельхозбанк…
И не только РСХБ, еще и Совкомбанк
Я подумал, такой феномен только в 2GIS возможен (ну может в 2GIS совсем плохо с антифродом, а в яндекс-картах все гораздо лучше…) но не сказал бы. Количественно замерить не могу, но вот очень быстро нашел обе компании на Яндекс Картах. Каждая картинка - это три отзыва подряд на разные отделения от одного пользователя. Слева - пользователь, который три раза подряд хвалит разные отделения РСХБ, Справа - другой пользователь, который три раза подряд нахваливает Совкомбанк.
– Руководство от нас требует высокий рейтинг. Но пользователи недовольны и ставят низкие оценки. Мы считаем затраты на улучшение работы - это X. Считаем затраты на внутренний телефонный звонок, чтобы попросить новенькую сотрудницу накидать отзывы на наши филиалы - это Y. Сопоставляем X и Y, если X > Y - повышать качество работы мы не будем
–В каком банке вы работаете?
–В крупном.
Если вам кажется, что вы уже слышали этот разговор в самолете и это повтор - нет. Это другой клерк из другого банка. Просто ситуация та же.
Лимпопо федерального масштаба
Но теперь к самому яркому, сверкающему и веселому. Мой любимый тип раскрутки, детектор в af2gis для нее называется happy_long_rel, счастливые длинные связи. Для начала, посмотрим на связи здорового человека (ну или орангутана…) в общем, вот вам картинка про новосибирский зоопарк.
Что мы видим по табличке выше? Не смотря на то, что мы анализируем отзывы 500 уникальных как снежинка человек, мы четко видим общие тренды. Куда еще ходят люди, которые ходят в зоопарк? Мы видим, что они ходят во многие разные досуговые заведения новосибирска (известые и популярные). А так же просто в разные ТРЦ, аэропорт и прочие сверхпопулярные места города. Мы получили некоторый усредненный портрет посетителя зоопарка. Давайте посмотрим на другую табличку - популярный в городе пивной бар Шульц. Связи здорового алкоголика:
Тоже, картинка очень правдоподобна. Посетители Шульца имеют другой круг интересов. Любят и посещают другие заведения сети. Еще посещают аэропорт и два крупных ТРЦ. (да в этой табличке почти моя жизнь!) Тут уже нет зоопарка-планетария-аквапарка. Посетители этого бара конечно же ходят во множество других заведений и оставляют отзывы, но это все более-менее равномерно размазано по всему городу и не превышает порогового значения, не попадает в табличку.
Вот еще связи от небольшого грузинского кафе Арагви. Тоже можно предположить, что отзывы соответствуют нашим представлениям о жизни горожан.
И по Шульцу и по Зоопарку мы видим, что людям в целом нравятся заведения, куда они ходят, но не на 5 баллов. (антифрод подсвечивает от оценки 4.9 при 10+ хитах).
Теперь, понимая, как надо понимать табличку связей - пришло время Лимпопо! (У кого есть солнцезащитные или сварочные очки, сейчас самое время надеть. Ну или, хотя бы, приглушить яркость экрана)
Видите, как сверкает!? Ослепительно, правда? Как новогодняя елка! А если вы откроете отзывы этой компании в 2GIS - все будет скучненько, как обычная ветеринарная клиника (с хорошими отзывами). В 2GIS вы не увидите, насколько она “необычна”. Мне сложно представить, как сильно надо было уронить рейтинг на 2GIS чтобы потребовалось столько фейковых отзывов… Как вам кажется, хорошие врачи в этой клинике? Доверили бы им своего хомячка? А ведь в 2GIS отзывы еще и на врачей оставляют… И их оставляют - чтобы их читали, и на их основе принимали решения.
Каждый день пока в 2GIS не научатся бороться с накрученными отзывами - многие тысячи реальных людей страдают в реальной жизни! Доверяя некачественному, замусоренному рейтингу, они едят в плохих кафе, ведут своих больных детей к плохим врачам, продают квартиры через мутных риэлтеров… Пусть, захлебываясь в пене, в море тонут корабли…
Вы думаете, это одна такая компания необычная? Да сколько угодно. Если ваши глазки немного отдохнули (эй, я разве сказал снимать очки?) - вот вам еще. Придержите монитор по вертикали, чтоб он не порвался!
Из 500 посетителей мебельного магазина Кристалл - 71 посетили стоматологию EuroSmile в Челябинске (1500км)… Для сравнения: между новосибирским зоопарком и аквапарком - 4км по прямой. Каждое место - достопримечательность уровня must-see. Приехал в Новосиб хоть на три дня и не сходил в зоопарк? На небесах тебя окрестят лохом! Да и за аквапарк тоже огребешь. А общих отзывов у них обоих - в два раза меньше, чем у простого мебельного и простой стоматологии, между которыми расстояние - как между Берлином и Неаполем… Да и в целом, связей так много (на всего 500 посетителей, которые обрабатывает антифрод), что каждый из ботов живет примерно одинаковую жизнь как соседний бот-близнец (со стоматологиями в Челябинске, Самаре, Мурманске…)
За что я люблю этот тип накрутки - за то что тут за одну тоненькую ниточку тянешь - и вытягиваешь стадо жирных-жирных слонов, переплетенных как крысиный король. Это явная ботоферма и все эти отзывы надо сносить, так же как и отзывы на другие компании, которые отправлены с этой же ботофермы. Прелесть тут в том, что боты сами себя выдают, они кучны, и видно сразу много компаний, которые воспользовались этой ботофермой. Можно зацепиться за одну фирму и вычистить всю ботоферму разом, во всеми плодами ее многолетних трудов.
Красный бейджик слева от названия указывает, что связь подозрительная (много хитов и высокая оценка). Мы видим, что даже зоопарк-аквапарк не имеют такой связи. У зоопарка такая связь с набережной, и в нее попадают 15 пользователей из 500. Всего 3% пользователей. У Шульца - с другим Шульцом. Тоже всего 3%. Редкие красные бейджики справа от названия указывают на то, что отзывы на компанию были проверена антифродом, и в них аномалия. (возможна накрутка). Если же проверка прошла успешно - будет зеленый бейджик. Если нет никакого бейджика - значит, я просто не обсчитывал их (можете сами тыкнуть мышкой и за минуту обсчитается). Но я интуитивно могу предположить - практически каждая компания из этого огромного списка будет “красной”. Изредка, некоторые могут быть зелеными (но это будет значить, что наш антифрод слишком мягок и трешхолды надо исправить в более жесткую сторону).
Как 2GIS может много лет иметь всю свою базу отзывов, со всей технической информацией и не заметить ЭТО…
КАК!?
AF2GIS
Я написал на коленке свой маленький детский игрушечный антифрод, который мне лично, для моих задач по выбору заведения “где бы поесть манты” - помогает. Не стоит ожидать от него многого (делалось с нулевым бюджетом, в свободное время, не имея никакого особого доступа к данным из 2gis). Воспринимайте его так - если он в 1 случае из 10 верно нашел аномальные отзывы и уберег вас от похода в плохое заведение - значит, уже хорошо! (Но мне кажется, он находит сильные накрутки в 8-9 случаев из 10).
Открываете страницу компании на 2gis в браузере (в адресе будет часть вида /firm/NNNN https://2gis.ru/novosibirsk/firm/141265769366740/tab/reviews?m=82.897264%2C54.979741%2F16.75 , добавляете две буковки «AF» перед 2gis, чтобы получилось af2gis.ru/… и жмете ENTER), Ну или на af2gis.ru ищете компанию поиском (ее там может не быть) или вводите этот вот код компании (141265769366740
в этом примере) — и видите результат статистического анализа отзывов на предмет накруток. Результаты зависят от настроек, настройки в веб-сервисе в целом “добрые”, то есть, они чаще пропустят накрутку, чем дадут ложное срабатывание. (хотя, надо понимать, возможно и то и другое).
Есть питоновский пакет (github), можно использовать из шелла. Трешхолды в настройках можно подкручивать по вкусу. Определены они в settings.py
и там же видно, какими переменными шелла (из .env
файла) их можно переопределить.
Ставьте параметры под свой уровень паранойи и под свою цену ошибочного срабатывания. (Осторожно: если выкрутите совсем плохо — получите отзывы как в 2GIS. Вам это надо?).
Для проверки компании - простая команда: af2gis fraud <OID> [--overwrite]
. fraud
можно сокращать до f
, OID компании можно увидеть в адресной строке 2gis после /firm/
, например, у зоопарка адрес https://2gis.ru/novosibirsk/firm/141265769338187
следовательно, OID - 141265769338187
. Для некоторых компаний, которые я использую для теста, прописаны алиасы в aliases.py (schulz
=> 141265770941878
).
Важная особенность антифрода - он предназначен не для принятия решений, а для того чтобы дать вам подсказки, куда посмотреть. По всем обнаруженным аномалиям он создает explain файл (как и в веб-приложении), через который можно увидеть, какие 2+2 он посчитал, и откуда там получилась 4. Есть возможность проверить входные данные самостоятельно и расчет тоже сделать самому.
Внутри нет никаких шайтан-AI, никаких нейросетей. Как сказал бы Борис Бритва, если бы он преподавал математику: Математика - это хорошо. Математика - это надежно. Ничего сложнее вычисления среднего/медианного значения там нет (помните, я писал в начале статьи про то, как интегралы помогают мне в жизни).
Другая интересная особенность антифрода, возможность сравнить связи между компаниями, например, выполнив fraud проверку магазина Кристалл (70000001034207247) мы видим связи со многими компаниями (и их ID) и можем детальнее посмотреть, например, связь с EuroSmile (70000001075206122): af2gis compare 70000001034207247 70000001075206122
. Получаем отчет вида:
$ af2gis compare 70000001034207247 70000001075206122A: Company(70000001034207247 rate: 5 'Кристалл, Мебель для кухни' addr: Новосибирск, Державина, 13 reviews:500 RISK (happy_long_rel+risk_users))
B: Company(70000001075206122 rate: None 'EuroSmile, Частные стоматологии' addr: Челябинск, улица Блюхера, 55 reviews:500 ?)
--
1: 5/5 age:93/105 User(Макар Мактаби (rev: 27) https://2gis.ru/af2gis/user/c690121668d1471797205888b04a006e)
2: 5/5 age:33/68 User(Макар Садовский (rev: 79) https://2gis.ru/af2gis/user/fe9225b384dd428ca3e01ce626a6b7d5)
3: 5/5 age:43/26 User(Марина Донцова (rev: 56) https://2gis.ru/af2gis/user/db49e9814a1e400cb1383fbe5f0455d8)
....
72: 5/5 age:73/88 User(Матвей Козлов (rev: 38) https://2gis.ru/af2gis/user/d5963726d1ed4c75b12c9f9e859ac8a0)
73: 5/5 age:16/72 User(Мария Шинкевич (rev: 40) https://2gis.ru/af2gis/user/31f2fdeae44a43349e4b3cfebc7954f1)
74: 5/5 age:43/76 User(Илья Ромейко (rev: 40) https://2gis.ru/af2gis/user/059787746d8d4decb4271dcdfc02bb94)
--
common: 80 users, private: 6
reviews: 74
mean num reviews: 55.07 median: 49.5
avg rating Кристалл, Мебель для кухни: 5.0 avg raging EuroSmile, Частные стоматологии: 5.0
User ages for A mean: 84 median: 60
User ages for B mean: 82 median: 70
A reviews: 2023-03-16 .. 2024-10-23
B reviews: 2023-06-02 .. 2024-10-29
Видим, что нашлось 74 пользователя, которые ставили отзывы и там и тут, По каждому видим, в каком “возрасте” (от своего первого отзыва) был аккаунт на момент отзыва на компанию A/B, видим среднее и медианное значение возраста, сколько отзывов у пользователя. Так же видим сводную информацию и даты, когда оставлялись отзывы. По ссылкам можем открыть публичный профиль пользователя и самим перепроверить, верные ли данные использовались?
Внимательный читатель может заметить, что мы тут разобрали 74 общих пользователя, в то время как антифрод нашел всего 71. Большинство может пропустить и читать дальше, но для дотошных и въедливых как я поясню - в идеале, да, должно совпадать абсолютно. Но отличия от идеала известны, осознаны и преднамеренны. Например, для ускорения, мы отбрасываем старые (по дате) отзывы, отбрасываем давние отзывы после 500 самых свежих. И антифрод не видит приватные профили. К примеру, возможна ситуация, когда некто оставил отзыв и на А и на Б, но его отзыв на А попал в наше “окно” из 500 отзывов, а на Б - не попал. Или данные по одной компании мы взяли в одно время, а по другой - позже или раньше (у нас всегда чуть-чуть устаревшие данные, причем устаревшие по разному). Или, если у пользователя(бота) приватный профиль - при fraud проверке мы не можем узнать, оставлял ли он отзыв на Б или нет. Зато, исследуя связь (при compare
) мы берем пользователей обеих(!) компаний и там видно, даже отзывы пользователей с приватными компаниями.
Но есть же в 2GIS не боты, а нормальные люди?
Как вы уже поняли, я копаю очень глубоко, настолько, что даже среди зомбиленда в 2GIS могу найти живого человека (его поведение так сильно выбивалось из поведений зомби, что я не мог не заметить).
Например, пользователь Rome с 5000 оценок и почти 4000 отзывов. Спасибо тебе, живой человек! Так я узнал, что, кажется, где-то в 2GIS есть лимит на 5000 оценок (старые — удаляются? Или просто не выдаются через API?)
И еще вот этого гражданина хотелось бы поблагодарить за всесторонний отзыв!
Доверенные отзывы: Как двоечнику получить 5 в дневнике?
Почему компании ОБЯЗАТЕЛЬНО надо подключать отзывы от Т-Банка
В отличие от противоречивых отзывов 2GIS, которые иногда могут хвалить компанию, иногда ругать, у 2GIS получилось создать источник почти исключительно позитивных отзывов! Отзывы из Т-Банка почти всегда повышают рейтинг компании в 2GIS, иногда значительно.
В 2024 году в 2GIS появились отзывы из Т-Банка. ( 2gis, Cnews), с формулировкой “2ГИС повышает достоверность отзывов”. (Тут стерто 264 ехидных шутки). Весь покрытый зеленью, абсолютно весь!
Нет, ну вообще, согласитесь, идея звучит неплохо? (особенно если не вдумываться глубоко). За каждым отзывом у нас будет банковская транзакция. Бот из Чебоксар не купит Хот-дог в Новосибирске, чтобы оставить такой подтвержденный отзыв.
Традиционно в лидерах по количеству отзывов и оценок находится сфера общепита. Сейчас в «2ГИС» больше половины (51%) оценок заведений от пользователей подтверждены транзакциями. Если считать вместе с отзывами — каждое пятое мнение об общепите в «2ГИС» получено от клиентов заведений, чьи покупки подтверждены транзакциями.
Звучит интересно. Ну, маркетинговый успех этой фишки - мне не интересен, это пусть там менеджеры между собой выясняют, кому какую премию за нее начислять. Я и сам люблю свои успехи чуть приукрасить и отношусь к этому с пониманием.
По моей базе:
- Всех компаний из 2гис в Новосибирске (которые я вижу): 59554
- Из них, компаний у которых от 100 отзывов: 8166
- Из них, компаний у которых хотя бы 1 отзыв (из 100..500) от ТБанка: 1260
- Из них, компаний у которых хотя бы 10 отзывов (из 100..500) от ТБанка: 866
- Из них, компаний у которых хотя бы 20 отзывов (из 100..500) от ТБанка: 644
- Из них, компаний у которых хотя бы 50 отзывов (из 100..500) от ТБанка: 266
С группой компаний, у которых хотя бы 10 отзывов от ТБанка мы и будем работать (866 таких в городе).
Вот кусок из анализа (af2dev -t Новосибирск provider tbank 10 0
) (внимательно читать не обязательно.):
542: 70000001020619368 Экона, аптека (skip:0) HI+ (3.0) tbank: 24 / 44 = 54 (5.0)
543: 70000001027399377 Respublica, бар (skip:0) LO (4.4) tbank: 23 / 498 = 4 (4.3)
544: 141265770547906 Лэтуаль, бутик косметики и парфюмерии (skip:0) HI+ (2.6) tbank: 25 / 84 = 29 (4.6)
545: 70000001041064874 SuperMag, магазин парфюмерии, косметики и бытовой химии (skip:0) HI (3.6) tbank: 17 / 76 = 22 (4.7)
546: 70000001060979525 Рыбный день, магазин (skip:0) HI+ (2.0) tbank: 29 / 117 = 24 (4.6)
547: 141265770937208 Мария-Ра, продуктовый супермаркет (skip:0) HI+ (2.2) tbank: 11 / 28 = 39 (3.9)
548: 141265769735785 DNS, супермаркет цифровой техники и бытовой электроники (skip:0) HI+ (3.4) tbank: 66 / 199 = 33 (4.7)
# номер: OID название_компании (скипнуто отзывов) МЕТКА (оценка не по тбанку) отзывов-от-тбанка/отзывов-всего = доля-тбанковский (оценка по тбанку)
Если оценка по Т-Банку ниже, то метка - “LO”. Если выше - то метка “HI”, если гораздо выше (смотря по настройкам, дефолт: 1.2) - то метка “HI+”. Что-то замечаете?
Если вы приглядитесь, то у бара Respublica (строка 543) есть метка LO. В этой компании оценка от клиентов тбанка - (4.3) ниже, чем по прочим отзывам (4.4). В целом, эта компания выглядит вполне нормально, практически эталонно, оценка отличается, но очень незначительно.
Но вам бьют в глаза эти вот HI и HI+ во всех остальных строчках? Итог обсчета такой:
processed 758 companies in 48 sec. providers: {'2gis': 81316, 'flamp': 5696, 'tbank': 24163, 'otello': 3, 'netmonet': 170}
over th (0): 758 (100.0%)
hi: 733 lo: 25 hi/lo: 29.32
Для 96% компаний (733/758) отзывы из Т-Банка повышают рейтинг! Компаний, которым оценки от ТБанка повышают оценку в 2GIS в 29 раз больше, чем тех, которым понижает. Это какой-то градусник оптимиста, на котором всегда 36.6.
Я уверен, что этому феномену есть объяснение, что в 2GIS знают почему, а я, дурак, не знаю. Но… какое бы объяснение ни было (кроме ошибки в том, как я считаю среднюю оценку) - это ОТЛИЧАЕТСЯ от того, как я, некомпетентный пользователь 2GIS предполагал. А я предполагал так: кому-то удобнее ставить оценки через 2gis, кому-то через Фламп, кому-то через ТБанк - но это примерно одинаковые оценки, отличаются не больше, чем оценки, выставленные в среду от оценок, выставленных в четверг, не больше, чем оценки Козерогов отличаются от оценок Стрельцов. Смысл оценки в 2GIS (как я полагал) в том, что я ожидаю, что иду в компанию со средней оценкой 1.8 и математическое ожидание моей оценки - тоже будет 1.8.
– Две новости. Плохая: Неурожай. Жрать будем только бычье дерьмо.
– А хорошая?
– Бычьего дерьма у нас много!
Как пользователю теперь понимать числа в рейтинге 2GIS, когда там перемешали драгоценный мёд, который копили много лет, с какой-то непонятной жижей с непонятными свойствами которую по случаю смогли купить по быстрому и недорого к обоюдной выгоде с продавцом? Средний вес мышей объединили со средним весом летучих мышей, потому что называются схожим образом… Но как видно по цифрам - ходят, плавают, летают и крякают эти мыши совершенно по разному.
Если я разделил оценку и вижу, из каких половинок она складывается, то мне от упомянутого Магнита ожидать какой опыт? Современный позитивный зумерский 2GIS в коротких носочках с лавандовым раффом убеждает, что на 4.5 балла. Но старый угрюмый сибирский 2GIS со щетиной и перегаром говорит, что на 1.8 балла..
Как теперь пользоваться таким рейтингом? Можно, конечно, усреднить, как делает 2gis - но зачем? Не лучше ли сразу отбросить ненадежную оценку и оставить только надежную?
Ценность меда была не в том, что “мёд хороший”, а в том, что его свойства известны и предсказуемы, он соответствует ожиданиям. Иногда он хороший, иногда плохой, но зная его свойства - можно принять информированное решение. А сейчас 2GIS из 40 тонн меда получили…. 83. Чего 83? Да никто не знает, зато 83.
Единственное, что я с радостью отмечу - это то, что у оценок/отзывов указан провайдер. Молодец, кто это сделал. Еще можно сделать сепарацию этой эмульсии, можно еще этот фарш провернуть назад.
Опасный для здоровья эксперимент
Увлекшись расследованием, я решился на опасный эксперимент. Пришлось купить лимоны и оплатить через Т-Банк, ну а лимоны всухомятку - сами понимаете. Витамин C без коньяка не усваивается.
Вот тут пишут, как клиент оставляет отзыв:
После покупки любой картой Т‑Банка клиенту приходит пуш в «желтом» приложении с просьбой оценить компанию и оставить отзыв. После модерации отзыв появляется на странице отзывов на сайте tbank.ru и в приложении. Это занимает от 5 секунд до 10 минут.
Это звучит странно… меня бы задолбало приложение, которое после каждой покупки делает мне пуш и ждет реакцию. В общем, я сходил и ждал пуша. Пуша не было. Вы помните - я очень въедливый и упертый. Жду. Пуша нет. Окей, лезу в приложение Т-Банка, я ожидаю, что в списке транзакций будет моя недавняя оплата и предложение оценить. Предложения оценить - нет. Наверное, надо долгий тап на операции сделать и в меню оно будет? Делаю. Меню выскакивает, варианта про отзыв в нем нет. Да как так-то!? Убеждаю себя не сдаваться. Я же недавно читал, что 2GIS берет отзывы с Т-Банка! Я же смотрел в JSON’ки и сам лично видел эти отзывы. Я твердо знаю, что люди же как-то оставляют - нельзя сдаваться при таких картах!
Окей - делюсь схемой. На главной странице Т-Банка в поиске пишем “отзывы”, там появится вариант “Отзывы (действия)”. Переходим. И вот там уже видны транзакции, на которые можно оставить отзыв. Я оставил. За 5 секунд он не прошел. За 10 минут тоже. И за сутки не прошел. Но все-таки, он был опубликован, я сам вижу его в 2GIS. Но, внимание вопрос. А как много людей будут так заморачиваться? Сколько из них столь упертые? Сколько вообще знают о том, что можно оставлять отзывы из Т-Банка? Мой ответ - мало. Цифры, которые я сам считаю - это подтверждают (по ним - тбанк это 5-10% максимум). И это только по компаниям, на которые вообще есть отзывы из Т-Банка (мы же помним, что всего в городе ~60 000 компаний, а что мы могли крутить-вертеть лишь 866 из 60K хоть как-то худо-бедно подошли).
Почему это важно, понимать, насколько сложно и неудобно оставлять отзывы из Т-Банка? Не потому что “что-то их мало, слабый источник отзывов”, а потому, что если каких-то “натуральных” отзывов (которые нам кажутся правдоподобными, реалистичными) из Т-Банка очень мало, тогда компании, где их внезапно очень много - сигнализируют нам, что за этим кроется увлекательная история.
Кстати, возможно мой опыт неполон. Возможно, это мне сложно было оставить отзыв на магазин, а вот, скажем, оставить отзыв на хот-дог было бы гораздо проще (допустим, назойливое окно выскочило бы). Но это же еще хуже - теперь у нас заведение А играет по одним правилам, а заведение Б по другим. Б будет круче не потому что там том-ям горячее, а потому что они как-то (я не знаю как) подсуетились с Т-Банком и 2GIS’ом.
Кстати, многие ли из читающих этот текст оставляли отзыв в 2GIS через Т-Банк? Лайк, если ты ни разу. Что если я единственный, кто в рамках расследования это сделал? =). Это и объясняет, почему отзыв модерировали так долго - они не ожидали поди, что живые люди этим способом в самом деле будут пользоваться.
Новосибирскэнергосбыт
53% отзывов из Т-Банка и скучное казенное учреждение, обитель зла (1.1), превращается в райский ресторан (4.7)!
Новосибирскэнергосбыт имеет рейтинг чуть выше с ресторана Скоморохи. Представляете как сложно было наладить работу казенного учреждения, чтобы люди выходили из него более счастливые, чем из ресторана? Бывал я в Скоморохах, цыган и медведей к счастью не было (ненавижу медведей!), но, например, пельмени из красной рыбы, посыпаные красной икрой там были. Очень вкусно! Но все равно, как вы понимаете, разве это удовольствие может сравнится с удовольствием от взаимодействия с Новосибирскэнергосбытом? Думаете, куда сводить девушку на свидание, чтобы она была счастлива? Доверьтесь 2GIS, ведите в Новосибирскэнергосбыт! Предполагаем, что вы оцените свой визит на 4.2 балла.
Эту главу я пишу для Татьяны Сидоровой и других жителей Новосибирска, которые пользуются электроэнергией и удивлены, как стабильный поток отзывов по 1 баллу может в среднем дать 4.2, оценку выше, чем у неплохого ресторана.
Средняя оценка по отзывам из Т-Банка - 4.7, средняя оценка по остальным отзывам (исключая т-банк) - 1.1. И по тем и по тем в сумме у меня вышло 3 балла. Как вам такой буст? Это в Энергосбыте “власть переменилась”, разогнали всех старых сотрудников, обучили новых, сменили рабочие процессы? Не верится? Правильно. Это просто 2GIS настолько разучился поменял правила подсчета оценки, настолько усовершенствовался, что ушел в нирвану и филиалу ада на земле насчитал 4.2.
>>> import numpy as np
>>> tbrating = [5, 5, 4, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 4, 5, 3, 4, 5, 1, 5, 5, 5, 4, 5, 5, 5, 5, 5, 4, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 4, 3, 5, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 4, 5, 5, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5, 4, 4, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 4, 5, 4, 5, 5, 5, 5, 5, 4, 5, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 3, 4, 4, 4, 5, 5, 5, 4, 3, 5, 5, 1, 5, 5, 5, 4, 5, 5, 4, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3, 4, 5, 1, 5, 1]
>>> allrating = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>>
>>> np.mean(tbrating)
np.float64(4.655430711610487)
>>> np.mean(allrating)
np.float64(1.0862068965517242)
>>> np.mean(allrating + tbrating)
np.float64(2.995991983967936)
На 2GIS оценка еще выше моей расчетной (у меня всего ~3.0 вышло), видимо, там раньше были еще волны “отличников” которые ставили кучу пятерок.
Энергосбыт… 4.2 балла… Да я сам себе не верю, так что, если кто-то желает перепроверить - я выложил список отзывов на pastebin. Любую строчку из того списка можно вручную сверить с веб-приложением 2GIS.
Человек, у которого есть часы - всегда твердо знает точное время. Человек, у которого есть двое часов - не уверен ни в чем.
Кстати, обратите внимание, в ТБанковских отзывах есть и 4 и 3 и даже 1 изредка мелькают. Это не похоже на тупую накрутку. Да и тексты в этих негативных отзывах - живые, от живых людей. Ну и это Энергосбыт, это вам не клиенто-ориентированный “манты-плов”. Уж если есть контора, которой на рейтинг начхать - это вот эта. Она не будет накручивать рейтинг не потому, что особо честная, а потому что куда ты денешься, подключишься к Барнаулэнергосбыту? Похоже она улучшила свой рейтинг почти случайно, даже не стараясь. Эти отзывы похожи на ЧТО-ТО реальное, но что-то другое, не такое как отзывы в 2GIS, но не смотря на это 2GIS все это валит в одну кучу (пофиг, что это разное, но ведь все про энергосбыт? 23 градуса на улице, 36 у повара, 180 у курицы в духовке, все лихо складываем и смело делим на три) и из этого набора разношерстных цифр отовсюду выводит “среднюю по больнице” (я даже не знаю, среднюю ЧТО). Смешались в кучу кони, люди…
Давайте посмотрим на отзывы именно с Т-Банка. Первый (из моей выборки в 500 последних отзывов) оставлен 2024-07-13. Последний - 2024-10-30. Та-даам, после октября 2024 почему-то их больше нет. А в августе 2024 их было аж 141. Что произошло? Это 2GIS таки обнаружил и прикрыл портал в ад? Или аду стало скучно и они закрыли дверь со своей стороны? Но что само ушло, то может само и вернуться…
Я даже не знаю, как можно проверить это. У меня есть карта Т-Банка, но, простите, куда совать-то ее? Где этот терминал, который к этой точке привязан? Или на каком именно сайте-приложении оплачивать надо, чтобы транзакция позволила бы мне оставить отзыв именно на эту организацию? А если отзывы прекратились - то, может быть, и добавить их сейчас, после октября 2024 уже нельзя? Та жижа, которую по случаю добыли и плеснули в бочку с медом - ее теперь даже для анализов не добыть…
100% граждан России имеют доступ в Интернет. Таковы итоги недавнего опроса, проведенного в Интернете.
Я не знаю, пятерки там честные или накрученные (отзывы банальные, типовые, похожие на дешевые шаблоны, но ведь и живые люди тоже часто так скучно пишут, особенно если их подталкивают чтобы оставить отзыв. Все счастливые семьи похожи друг на друга): “Удобный сервис. Оплата без комиссии.” / “Удобное приложение для оплаты, комиссии нет.” / “Удобный сервис для оплаты ЖКХ”. Вполне верю, что это “принудительные” отзывы от живых людей. Например, вы оплатили за свет, вам выскочило окошко. Ну раз уж выскочило - вы пишете что-то, чтоб выполнить сценарий и чтоб от вас отстали.
Но ведь так же нельзя делать! Получается, мы в базу отзывов 2GIS, полную исключительных случаев (когда человек так восхищен заведением, что оставил на него пятерку), льем отзывы от почти каждого успешного кейса! Это было бы неплохо, если бы это было в 100% случаев. В игре все должны играть по одним правилам. А 2GIS, похоже, сделал так, что для компании А пятерка в рейтинг идет за каждую оплату, а компания Б получит пятерку только если обслужит безукоризненно и еще и хором споет для посетителя и щедрую скидку даст. Тогда он оставит отзыв. Может быть. Если другие факторы сойдутся. У каждого заведения разная математика, разные там циферки, с разными свойствами.
Кажется, 2GIS деноминировал половину купюр в стране, но только половину. Этот рубль за сто идет, а этот просто за рубль. В рамках эксперимента перевел на левостороннее движение один таксопарк.
Загадка о хот-доге
- Дрожащею, сухою рукой порозовевший Анна отдал ему деньги и, молча, отвернувшись и жуя губами, ждал, пока Иуда перепробовал на зубах все серебряные монеты. Изредка Анна оглядывался и, точно обжегшись, снова поднимал голову к потолку и усиленно жевал губами.
– Теперь так много фальшивых денег,– спокойно пояснил Иуда.
-– Это деньги, пожертвованные благочестивыми людьми на храм,– сказал Анна, быстро оглянувшись и еще быстрее подставив глазам Иуды свой розоватый лысый затылок.
-– Но разве благочестивые люди умеют отличить фальшивое от настоящего? Это умеют только мошенники.
Мало в среднем отзывов из Т-Банка и мало, Бог с ним! Давайте смотреть на поинтереснее. Мы же с вами ловим статистические аномалии, не так ли? Значит, везде 5-10%, ну плюс-минус лапоть, а что если нам посмотреть на компании, у которых 80% отзывов от Т-Банка? “Да ну, таких не бывает” скажете вы? А посмотрим!
$ af2dev -t Новосибирск provider tbank 50 80
# Analyse companies with 50+ reviews from tbank, show companies with more then 80% reviews from tbank
59: 70000001021506525 Хот-дог Мастер, фуд-киоск (skip:0) HI+ (3.1) tbank: 468 / 500 = 93 (4.7)
92: 70000001018747796 Линзы-тут, автомат по продаже контактных линз (skip:54) HI+ (2.3) tbank: 72 / 75 = 96 (4.5)
93: 70000001063493955 Конный клуб, Конные клубы (skip:5) LO (5.0) tbank: 293 / 299 = 97 (4.9)
processed 266 companies in 18 sec. providers: {'2gis': 26659, 'flamp': 2446, 'tbank': 14293}
over th (80): 3 (1.1%)
hi: 265 lo: 1 hi/lo: 265.00
Да, как-то так вышло, что 80% отзывов от Т-Банка не бывает… Зато бывает 93, 96 и 97%. Это что за феномен? Такое впечатление, что те 51% подтвержденных отзывов дают эти вот три компании. Давайте зайдем на страничку Хот-Дог мастера на Отзывах от Т Банка.
(Я сильно обрезал картинку. Всего на этой (второй) странице - 18 заведений. А всего заведений этой сети - 37). Вы видите на этой страничке то, что похоже не смогла разглядеть вся королевская конница, вся королевская рать ни в Т-Банке ни в 2GIS?
В этой точке 468 отзывов из Т-Банка (из 500 последних). Это, примерно как 12 гипермаркетов Hoff, или как вся сеть грузинских ресторанов Аджикинежаль взятая 52 раза. Или как бесконечное число новосибирских зоопарков, оперных театров, театров Красный Факел и всей городской сети баров Шульц в сумме (у них по 0 отзывов из Т-Банка из последних 500)
– Поручик, сколько у вас было женщин?
– Три!
– Неужели? Так мало?
– А, погодите, вспомнил еще один случай - если его считать, тогда восемнадцать.
Мне кажется, что за этим вот одним из 37 заведений этой сети тоже скрывается какая-то просто очень интересная история! Скептик во мне предположил - “ну может точка проходная, все-таки центр города”. И это верно, место проходное. Может у нас в центре города больше людей Т-Банком пользуются? Может быть клиенты Т-Банка больше едят хот-доги, чем другие? Но есть еще одна точка этой сети, на Красном Проспекте 17/1. Главный проспект города. Самый центр. Рядом - часовня, которая по легенде - центр России. Согласитесь, тоже не самая *опа мира, правда же? (как по мне - гораздо более проходное место, чем ресторанный закуток в сквере, где 3 точки с едой на каждый метр). И хот-доги - той же сети по той же цене. Ну что, делайте ставки, как вам кажется, сколько отзывов от Т-Банка в той точке? 90%? 80%? 70%? может жалкие 50%?
НОЛЬ. И в легендарной точке этой же сети “на башне” (про нее даже в гастрономических тревел-шоу было) - тоже ноль. И этот ноль меня не удивляет. По сводной статистике, отзывов из Т-Банка очень мало в самом деле. В городе три пивных бара сети Шульц. Популярных очень. Сколько у них отзывов из Т-Банка (по последним 500 в каждом)? На все три заведения в сумме - 0. Есть пять ресторанов кавказской кухни Аджикинежаль. По ним расклад такой: 5,4,0,0,0. Кофейня Кардамон - 0. То есть, по этой (малой, конечно же) выборке получаем, что у нас отзывов из Т-Банка - 0-1%. И вот 500 метров от обычной точки с реалистичным нулем отзывов из тбанка - у нас точка с 93% отзывов (468 из 500). И конечно же эти отзывы имеют оценку выше - они бустят рейтинг со скромных 3.1 до прекрасных 4.7.
Учитывая, что Т-Банковские отзывы мощно бустят оценку почти в 100% случаев, довольно странно, что они распределены так однобоко. Возможно, еще не все научились играть в эту игру, а когда научатся, у нас по всему городу будут заведения с оценкой от 4.8 до 5.0 ровно… Пусть, захлебываясь в пене, в море тонут корабли….
У меня была гипотеза, что это глюк из-за того, что хот-дог мастер - это сеть киосков. Что-то не так сделали, и все отзывы на все точки сети записываются на одну точку. Но я же проверил - случайная покупка в сетевой компании зачисляется туда, где купил. К тому же у нас же еще конный клуб есть, не сетевой вроде бы, а там вообще 97% отзывов….
А еще, интересная мысль - если это накрутка, то как? Каким-то образом с содействием tbank/2gis (или кого-то из инсайдеров)? А если нет - то это еще интереснее! Получается, каким-то образом хитроумный продавец хотдогов или конюх получают множество карт Т-Банка? Выходит, у накрутчиков есть такая лазейка какая-то? Мы что, оценивая качество хот-догов натолкнулись на способ получать пачками карты Т-Банка??
Было бы очень интересно посмотреть на это на стороне Т-Банка (или на стороне 2GIS если Т-Банк делится технической информацией). Что за клиенты оставляют отзывы, как давно они получали карты, у какого представителя компании. Какова их дальнейшая финансовая история - они ведут дальше какую-то финансовую жизнь, делают покупки? Их портрет деятельности сильно совпадает с обычным или нет?
Если вдруг это читает кто-то из безопасности Т-Банка и ему тоже интересна эта аномалия - напишите мне, я буду рад помочь, дам все данные, которые у меня есть, бесплатно, я только хочу узнать ответ на эту загадку.
Когда пригождается кривая линейка? (netmonet)
Другой провайдер отзывов - netmonet. Но, если с Т-Банком хотя бы в теории могли бы быть честные отзывы (примерно соответствующие эталону от 2GIS), то с Netmonet все хуже. Это же сервис чаевых. Люди оставляют чаевые когда они довольны. Вы пришли в кафе, еда плохая, официанты грубят - чаевых не будет. И плохой оценки через netmonet - у вас тоже, получается, не будет. Netmonet - это не провайдер оценок/отзывов. Это провайдер четверок и пятерок. Какое отношение 4-5 имеют к рейтингу от 1 до 5? Думаю, такое же, как температура курицы в духовке к температуре на улице и к температуре тела.
Но, хоть netmonet и ужасно кривой источник оценок, мы, люди хозяйственные, будем его использовать как эталон кривизны!
processed 223 companies in 219 sec. providers: {'2gis': 67418, 'netmonet': 16524, 'flamp': 2311, 'tbank': 441, 'sbertips': 7, 'otello': 6}
over th (0): 221 (99.1%)
hi: 175 lo: 48 hi/lo: 3.65
Наш эталонно кривой генератор пятерок для заведений тоже повышает рейтинг, в 78% случаев (понижает в 22%. А надо бы в 50%. Но на то он и кривой). Теперь вспомним, что чуть выше мы видели по Т-Банк, что “прямой” тбанк повышает рейтинг в 96% (понижает в 4%). Наш эталон кривизны в 5 раз прямее!
Может там в самом деле что-то как-то криво с этим Т-Банк’ом, раз он так бустит рейтинги? Может люди нашли честные, относительно честные и нечестные способы эксплойтить это?
Подтвержденные отзывы - это разве хорошо?
С одной стороны, звучит-то неплохо. Но… Какую проблему это решает? Накрутку “пятерок”? Отчасти хорошо. Теперь, чтоб поставить пятерку магазину, ты должен купить там колбасу на 500 рублей. Или, если ты хакер - то коробок спичек или пакет. Поддельный отзыв уже чего-то стоит!
Но… во-первых, организации разные. Сравните ларек с хот-догами и автосалон. В одном случае за фейк-отзыв надо купить хот-дог за сто рублей, в другом - автомобиль за 10 миллионов. А еще, догадываетесь, какой автосалон получит больше подтвержденных пятерок? Конечно же тот, кто попутно будет продавать дешевую мелочевку. Обложку для водительского удостоверения, брелок для ключей.
Еще важный момент. А кто накручивает? Случайный хулиган хочет расхвалить случайное заведение? Вряд ли. Скорее, его нахваливать будет сам хозяин заведения. То есть, товар он покупает… сам у себя! Фейк отзыв по прежнему бесплатный, просто надо сто рублей переложить из правого кармана в левый. Замечательная защита!
В теории нет разницы между теорией и практикой. На практике — есть.
Я соглашусь, что это (в теории) должно защищать от ботов тем, что отзыв привязан к карте, а карта - все-таки (в теории) - закреплена за человеком. Один человек - одна карта и точка. Но… я бы очень хотел знать, почему везде по городу 1% отзывов с Т-Банка, а у конюшни и ларька с хотдогами - 90+%? Это все жители новосибирска с картами Т-Банка побежали туда за хот-догами? Или все-таки абстракция про “один человек - одна карта”, на которую мы положились - протекла? Или не протекла, все так, но каким-то образом у заведений появилась возможность получать оценку 5 немедленно за каждую успешную продажу? (Даже быстрее, чем произошло бы расстройство желудка от плохой еды)
А как быть с ситуацией “зашел, на витрине ползает таракан - больше никогда к вам не приду!”, “Работают с 9, я пришел в 10:20 - закрыто!”. Отзывы без подтверждения оплатой приниматься будут? Если да - тогда зачем нужны отзывы с подтверждением? Не является ли это калиткой в пустыне? Работой ради отчета о работе, ради Jira и KPI?
Если вы толстый и лысый - вам нужны усы, чтобы в кафе говорили - “Галя, отнеси компот мужчине с усами”!
Раз 2GIS начал принимать отзывы со стороны, то что если “подтвержденные” - это лишь одно свойство отзывов, не самое важное, а более важное, определяющее - это то, что-то вроде “принудительные” или “предложенные” или “простимулированные”. Ну вот судя по ситуации с Энергосбытом, главное, что я в них заметил не “подтвержденность” (я и так верю, что живой человек это написал), а мягкое “принуждение”, подталкивание к отзывам. Эти отзывы - толстые и лысые, а не усатые. И обсуждать их тогда надо в этом ключе. “Хорошо ли, что 2GIS вводит мягко-принудительные отзывы?”. При такой постановке - все меняется и калитка в пустыне не кажется уже важной.
И еще, я бы хотел завершить эту главу одной мудростью, которой со мной поделился давний приятель, который в то время работал официантом и, конечно же, имел с этого некоторый “левый” доход.
НИКОГДА не обманывай клиента! Клиент, даже если он очень пьяный - не позволит себя обмануть. Всегда обманывай заведение!
Если кому интересно, он каждый день перед работой покупал бутылку хорошей водки. И когда клиенты заказывали водку, наливал не дорогую водку ресторана, а свою, точно такую же, “с горочкой”. И счет приносил правильный всегда. Но деньги за свою водку клал себе в карман.
А я всего-лишь хотел поесть манты. Хорошие вкусные манты, которые ешь и потом ты добрый, тебе хорошо, и ты сам хочешь отблагодарить заведение чаевыми и хорошим честным отзывым. Хотел найти такое место. И кажется кто-то захотел меня обмануть… Зря.
Дата-майнинг из 2GIS
Секрет - это то что знает кто-то, и если захочет - сможет передать другому. Тайна - это то, что все могут услышать-прочитать, но на своем уровне понимания не могут полностью понять тот смысл, который вкладывался.
Мне кажется, дата-майнинг, это какая-то магия, когда из некоторых сырых публичных данных, ты вдруг извлекаешь новую информацию, просто взглянув на известные данные под иным углом. Как в шахматах, можно ребенка за полчаса научить как в них играть, но вся настоящая игра - не в том, “как конь ходит”, а где-то между фигурами и между полями. Именно в сочетаниях и комбинациях. Близко к тайне из афоризма выше, но главная тайна в том, чтобы придумать, как взглянуть на данные.
Думаю, можно сказать так, что антифрод по отзывам во многом базируется на примитивном дата-майнинге. Мы придумываем как смотреть на компании (например, на связь пирожковой в Тюмени и парикмахерской в Сызрани), извлекаем эту информацию и сопоставляем ее с нашими интуитивными ожиданиями и/или с усредненной картиной по другим заведениям. Если заведение уж очень заколдованное - нам это кажется странным.
Выше мы уже увидели, что между студиями Wax Bar и Софт Эпил есть некоторая связь. Это хорошая гипотеза, чтобы предположить (а затем, если интересно, проверить), что у них, возможно, общий владелец или иная форма связи.
Но если мы ткнем в Эльдорадо мы увидим, что каким-то образом эта сеть связана с М.Видео. Как так? Это же конкуренты, разве нет? Я сам был удивлен, но, похоже, что это очень близкие компании. И в сети я лишь нашел подтверждение этому, а сама подсказка-догадка вышла из дата-майнинга по отзывам.
Иногда, чтобы заподозрить связь, если она не очень мощная, нужно понизить количество хитов, которые будут показываться в табличке (-s N
или SHOW_HIT_TH=N
в переменных окружения или в .env
для консольной утилиты). Например, я заметил связь между одной сетью АЗС и автомоек. Поспрашивав у друзей, оказалось, что мир тесен, они знают, и в самом деле те и те принадлежат одному хозяину.
Наверяка маркетологам интересно, в какие заведения ходят постояльцы Grand Autograph Hotel Novosibirsk (очень красивый и дорогой отель в самом центре города).
Еще, интересное наблюдение, что заведения Fix Price (заведение совсем другой целевой аудитории) - имеют мало соседей. То есть, либо их аудитория ведет менее насыщенную жизнь, либо редко оставляет отзывы, возможно менее активно пользуются интернетом.
Когда-то давно от руководства S7 я узнал (уже, наверняка, устаревший факт), что даже если посетитель покупал билет прямо в здании авиакомпании, в кассах на первом этаже, продажа велась через глобальную систему бронирования авиабилетов вроде Amadeus (с соответствующей комиссией). А затем от кого-то из наших профессиональных параноиков из трехбуквенной бюджетной организации в публичном заявлении услышал его боль про это - “Если вдруг половина генералов в стране вдруг резко полетят в Москву на совещание - ОНИ там (и пальцем так в сторону Вашингтона, диагонально наверх) - могут про это знать!”. Действительно, неловкий момент.
Конечно, отзывы в 2GIS это вам не система бронирования авиабилетов, он дает куда более размытую и менее точную картину, но тем не менее, я случайно тыкнул в одно наше заведение “с погонами” и по связям смог составить свое (клянусь, ошибочное!) предположение, о географии тех, кто там бывает и их примерном уровне достатка (в принципе, не исключаю, что эту же информацию я мог бы получить на офсайте организации, но тут-то интересно, что я получил это через 2gis!). Вспомнил, что ЦРУ в советское время большинство докладов делало по публичным источникам. В общем, я быстро закрыл af2gis, больше никуда не тыкал и немедленно забыл, куда я тыкал и что увидел.
Как веб-приложение 2GIS защищается от ботов
Защита по user-agent
Тут тоже никаких тайн (да откуда у меня тайны - мне их не рассказывают ведь), я рассказываю только о том, что каждый может и сам увидеть в своем браузере. Рассказываю, как я провел эти дни, что видел, чему удивлялся, над чем задумывался. Рассказ о себе такой. Да и откровений тоже тут нет - одни вопросы (вдруг кто-то из 2гис знает и решит поделиться, или кто-то из читателей имеет гипотезы).
Было бы неправдой сказать, что 2GIS не защищается. Я нашел аж две защиты. Во-первых, некоторые части 2GIS не любят curl
.
Вот эта команда у вас не сработает:
curl -L -H 'User-Agent: curl' http://tiny.cc/yekh001
Но если бы кто-то поменял User-Agent, скажем, на cccc - все, наверное, заработало бы (я не буду говорить, как это сделать, пусть это знание останется только для элитных хакеров)! Защита по юзер-агент! В этом есть некий дзен - глупый человек менять User-Agent не сможет, а умный - все равно взломает, так зачем же защищаться? Я даже не удивлюсь, если 2GIS оплачивает подписку на журнал “Хакер”!
Загадочная защита из Сколково
Если к вам в дверь ломятся грабители, начните ломиться в дверь изнутри - это их озадачит!
Если сделать curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" https://2gis.ru/
мы увидим интересную страничку… Похоже, 2gis пользуется защитой от ботов от servicepipe.ru. Сколково, минцифры и прочее импортозамещение. Все как мы любим! Я не знаю, сколько 2GIS за нее платит в месяц, но защита настолько хороша, что я даже не смог разгадать, от чего она защищает.
Особенно озадачивает и сбивает меня с толку вот эта часть кода:
function get_cookie_spsc_encrypted_part() {
let func = function () {/*-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDWpMtQ0l+lALSFwSzuu6knCVa7i19lmnGYVFdWXmpIY6yAajdk
...
HQJOEczjjOqgS2kKe/islP94y7PC1fxm6w1pgUvIJRo=
-----END RSA PRIVATE KEY-----
Они решили закидывать ботов приватными ключами? Я понимаю, что это комментарий, но все же… Я очень, очень, очень надеюсь что этот ключик не требуется для прохождения защиты (иначе, его было бы нельзя высылать). Причем, он иногда меняется… Но он в комментарии… Основную работу делает обфусцированный JS код (Security through obscurity? Это мы тоже любим! Раз пришлось прятать код, сразу ясно, что тут непроходимая сложная криптография). Забавно, что ChatGPT, похоже, за 2 минуты расписывает этот код (правда, я не проверял, насколько верно он его деобфусцировал). Но GPT говорит, что скрипт просто вырезает этот ключ из текста странички, то есть, все-таки они используют ключ как ключ (если верить GPT).
Помимо высылания ключа (1024 бита, единичка с 308 нулями вариантов)… во мне возникли еще несколько вопросов. Если эта защита должна снижать нагрузку на сервера отсекая ботов - то разве супер-тяжелая задача по генерации публичного/приватного ключа на каждый запрос не является лечением, которое в миллиарды раз тяжелее болезни?
Но нет, рассмотрев чуть глубже вижу, как в Сколково решили эту проблему - ключ с подстрокой YU8Yac
приходит примерно в 50% случаев. Щикаааарно! Квинтиллион квинтиллионов квинтиллионов комбинаций ключа можно свести к 1. Не к 1 квинтиллиону, а просто к одному. У токаря пальцев больше, чем тут комбинаций, которые необходимо перебирать. Если вдруг пришел не тот ключ - можно просто перезапросить и получить тот.
Как в рыбацком магазине, успешная блесна должна в первую очередь подманивать рыбака, который за нее платит, а как она будет взаимодействовать с рыбкой - вопрос уже второй.
В общем, я в самом деле озадачен, эта калитка посреди пустыни выглядит очень сложной, загадочной, непроходимой, так что, я просто пройду мимо… Может быть я сильно ошибаюсь (хотелось бы), и я не готов что-то уверенно утверждать, но на первый взгляд все это выглядит крайне, крайне сомнительным.
Но когда мне нужно было проверить , можно ли из скрипта (то есть, ботом) загрузить приложение и взять из него один параметр - PlayWright справился легко и непринужденно. Наверное, я что-то сделал не так, раз у меня получилось. (Не может же быть такого, чтоб компания из Сколково сделала не очень хорошую защиту?)
Думаю, эта задача еще ждет свои исследователей!
Paroles, paroles, paroles
Еще интересно, что в веб-приложении 2GIS много где используются ключи. Ну или не ключи. В общем, некоторые вещи, которые с одной стороны называются, например, key=...
. Но при этом почему-то 2GIS пихает их мне… - значит, это не ключи. Ключи ведь никто так пихать не будет. Правда же? Я спросил у GPT, он предположил, что это - Knowledge Extraction Yield. Думаю, он прав.
Кстати, 2GIS очень удобно сделали! По значению этого key=....
, если его загуглить, можно найти другие проекты, которые работают с 2gis. Даже китайские! Этот загадочный key
(что бы это ни значило) пихается в каждый браузер и не менялся, кажется с 2019 года. Зачем его тогда пихать - непонятно. Пусть бы для упрощения фронтенда бэк бы его сам подставлял и все.
Еще меня позабавила техническая находка с пролистыванием отзывов. Отзывы выдаются страничками, чтобы получить следующую - нет параметра offset какой-то - надо использовать JWT токен… и оффсет (в виде даты отзыва) вшит в него. Причем, я проверил - там все серьезно. Это настоящий JWT, его подпись - проверяется. Подделать его, или задать криптоалгоритм None (ну “на дурака”) - не срабатывает. Не дураки делали. Естественно, приватный ключ, как в предыдущем примере, никто не отправляет, это вам не Сколково. Единственный способ получить валидный JWT, который откроет вторую страницу отзывов…. это взять первую страницу! И вместе с ней вам втюхают JWT. Зачем так сложно подписывать offset - я не понял. От какого риска это защищает?
О проблеме надежных отзывов - путь к победе
Лозунг у них был такой: “Познание бесконечности требует бесконечного времени”. С этим я не спорил, но они делали из этого неожиданный вывод: “А потому работай не работай — все едино”
Занимаясь этой задачей я наткнулся на неинтересную статью по теме - автор сама столкнулась с заказом на фейк отзывы, и давала критерии со своей филологической колокольни, вроде “Слишком много деталей”. И получила много комментариев вроде “Надо же, оказывается, мои отзывы не настоящие”.
Действительно, нет ни единого абсолютно надежного критерия, который бы хоть как-то однозначно определял фальшивые отзывы. А из этого можно даже предположить “раз мы не можем уверенно отбросить-проигнорировать-удалить ни один отдельный отзыв из миллиона, следовательно, не можем решить эту задачу в принципе”.
Кроме того, само определение фейкового отзыва крайне размыто (удали то, не знаю что). Ну вот выше мне показалось очень подозрительным, что одна женщина ну слишком уж часто делает депиляцию. А если бы не 5 раз в месяц, а всего 2? Или раз в 3 месяца? Странно же, если доверие к отзыву зависит от скорости роста волос? Даже если мы представим, что у нас есть абсолютное полное знание о мире: Отзывы от сотрудников компании - считаем фейками? А от их друзей? А если друг попользовался услугой, заплатил за нее (и ему в самом деле оказали ее очень качественно)? А если приятель, знакомый, шапочно-знакомый? Наш критерий фейковости упирается в такое нечеткое понятие как “дружба”.
Но следует ли из этого, что проблема не решаемая, а значит, не стоит и тратить силы на попытки? О нет. Так рассуждают только идейные лузеры и лентяи. Ну и люди, которые готовы жрать те манты, которые им принесли. А у меня, извините, высокие требования к мантам. Поэтому я вынужден искать другой ответ.
Мне больше нравится видеть ситуацию через призму правила Парето (Всего 10% усилий дают уже 90% эффекта). Есть огромная разница между ситуацией когда у нас “открыты ворота” и ситуацией, когда “да, хороший замок, но наверняка даже такой замок в теории можно взломать”. Так что, даже не имея четкого представления, что есть “фейковый отзыв” с ними все равно можно бороться.
Какие козыри я вижу на стороне площадки (2gis)
Площадка устанавливает правила - это самое главное! И правила можно менять. Мошенники будут искать лазейки, но они вынуждены будут искать лазейки в тех правилах, которые площадка поставила.
Беспроигрышная игра - Удары от 2gis - “первый коронный, второй похоронный”. Ботоферма перестаралась, засветилась - сгорела. А что если не засветилась и успешно прошла ниже радаров? Да ничего страшного! Возможно, площадка прибьет эти отзывы завтра или через год, когда алгоритмы посложнее сделает. А может и не прибьет, и так и останется у заведения сколько-то фейковых отзывов. Ну сейчас же 2GIS как-то живет, хотя фейк-отзывов там очень много. Примерно как известная ситуация “курочки и поросенка”, только тут противоборство - курочка вкладывается яйцами, а поросенок - всем своим беконом. Поросенок играет пока не проиграет. Курочка играет пока не победит.
Разделяй и властвуй - Боты-путешественники мне кажутся очень легкой целью и при этом жирной добычей. Сейчас одна ферма может окучивать весь земной шар (помним дубайского товарища из хрущевки в Петропавловске). Сейчас достаточно иметь сто-двести ботов, чтобы манипулировать оценками по всему земному шару. Исключив эту возможность, мы уже нанесем серьезный удар. Для раскрутки кафе в Барнауле придется держать барнаульских ботов, а для раскрутки кафе во Владивостоке - еще и владивостокских. Ферме нужно будет иметь многие тысячи аккаунтов и как-то жонглировать ими. К тому же, если сейчас почти каждый аккаунт фермы окупает себя частой работой, после разделения новосибирский аккаунт сможет эффективно работать только в Новосибе, а это меньше, чем весь мир.
Закрепление успеха - Площадка может определить барьер доверия. Например, отказываться засчитывать отзывы от новорегов. У каждой ботофермы ее боты - ее капитал, средства производства. Представьте, что 2gis разом выкашивает 90% ботов этой фермы. Какой это удар по бизнесу! И его даже невозможно быстро устранить - хоть ты тысячу аккаунтов зарегай, они все будут без истории - бесполезны еще долгое время. За это время проще найти другой заработок. Выдох-вдох, не вдох - сдох.
Пять Голиафов и один Давид - Возможно, что талантливый мошенник за месяц найдет возможность обойти дорогую сложную защиту, которую площадка делала год и потратила миллион долларов. Окей. А что если площадка потратила два миллиона? А десять миллионов? Что если она свой антифрод 10 лет уже развивает? Пусть даже атаковать проще и чтобы “пробить” миллион долларов защиты достаточно потратить лишь 10 тысяч на атаку. Но рано или поздно защита может стать такой хорошей-надежной, что преодолеть-то ее, конечно, в теории можно, но уже мало кто может себе позволить это. Особенно с учетом расклада от предыдущих факторов.
Частичная победа - уже хорошо - Что будет, если у 2GIS будет неплохой (но далекий от идеала) антифрод? Да, его можно будет обойти. Да, некоторая накрутка все еще будет продолжаться. Но могут полностью исчезнуть само-накрутки “Раз я умею жарить сосиски, уж обмануть-то 2GIS я точно смогу!”. А еще, вырастет цена за услуги ферм. Вырастает цена - значит, меньше желающих воспользоваться накруткой по такой цене. Меньше накруток - больше доверия к отзывам в 2gis. Хорошо? Хорошо!
Антифрод Практически Абсолютной Победы
Не там вор крадет, где много, а там, где лежит плохо.
Абсолютный результат часто достигается частичными мерами. Пусть нет абсолютного средства от тараканов - но есть же дома без тараканов? На дачах у нас прекратились кражи, хотя мы обществом потратились относительно немного на забор и камеры - это далеко не пентагоновская защита, но ее оказалось достаточно. Оказалось, что нас обворовывал не хитроумный Оушен с его друзьями, а простые алкаши из соседних поселений.
Нерешаемые проблемы часто нерешаемы не потому, что они столь сложны, а потому что нет воли на их решение.
Не требуется антифрод столь надежный, чтобы никто и никогда не смог бы составить и отправить ни один поддельный отзыв на киоск хот-догов; не требуется, чтобы стоимость успешного фейк отзыва составляла бы хотя бы даже сто долларов. Я, конечно, не очень в теме, но мне кажется, раскруткой занимаются ребята уровнем не сильно уж выше чем те, что картриджи заправляют. Это как дворовый хулиган, который опасен только для мальчика-скрипача, а вот от мальчика с контрабасом может и сам уже отхватить.
Если антифрод будет давать такой эффект:
- Для преодоления антифрода мошенник должен иметь высокую квалификацию (иными словами - высокооплачиваемый, редкий, а не каждый эникейщик)
- Нужно учиться специфике этого обмана, высокий порог входа. На десять тех кто выйдет, будет один, кто войдет.
- Средства производства (аккаунты) - иногда расходуются, сгорают. Восполнение обходится дорого, требует времени и усилий.
- Правила иногда меняются. Ты несколько лет строил бизнес по накрутке отзывов, и с новым обновлением он превратился в тыкву. Может быть, если вложить в него еще усилий - то можно его восстановить. А может лучше зафиксировать убытки?
- Результат раскрутки не будет надежным, может “слететь” сразу или через полгода.
- Себестоимость отзыва будет достаточно высокой, не оправдывать вложения, особенно с учетом предыдущего пункта.
Снижаем привлекательность услуги, задираем ее себестоимость, сокращаем кормовую базу, создаем условия, когда выгоднее уйти, чем остаться.
Мне кажется, это достаточно, чтобы практически полностью выдавить фейк отзывы как сферу бизнеса. Кого-то он вышибет сразу. Что-то может по инерции еще какое-то время работать, но если доходы падают, перспективы сомнительные - то зачем? Достаточно снизить доход с него настолько, чтобы эта сфера стала менее выгодной, чем другие темы, куда может перейти “раскрутчик”.
Конечно, никакой путь не оказывается таким простым, как видится сначала. Но к цели движется тот, кто хотя бы ползет.
Симбиоз и конфликт интересов
А с чего мы вообще взяли, что 2GIS “хочет но не может”? А что если…. (ну как параноик, я должен и этот вариант рассмотреть) - что если 2GIS не особо борется с накрутками, потому что они ему выгодны?
2GIS продает рекламу и пытается выстраивать хорошие отношения с компаниями. То есть, подыгрывает одной стороне. Пользователь-то 2gis’у не платит, а вот магазин-кафе - могут платить. И даже если они не платят - имеет смысл немного “пофлиртовать” с ними, чтобы, может быть, потом они заплатили.
Поэтому есть интересный инструмент оспаривания отзывов. Негативный отзыв заведение может оспорить. Потребовать подтверждение покупки (А это не всегда возможно). У меня, например, заблокирован отзыв, который я написал в октябре, а в марте следующего года компания попросила подтверждение. Да это просто чит-код какой-то, пятерки будем хранить с 1957 года, а вот 99% негативных отзывов можно сбрасывать через полгода! Забавно, что нет механизма оспаривания позитивных отзывов. В нашем клубе джентльменам верят на слово?
К тому же представьте - вы выбираете кафе на вечер. У одного кафе низкая оценка, но оно рекламируется в 2GIS. А есть кафе - с высокой оценкой. Какое выберет посетитель? Мне кажется очевидным, что второе. Реклама будет плохо работать если 2GIS своей оценкой как бы говорит “Мы тут этому заведению корону нарисовали, но вообще тут отстойно…”. Так себе было бы дополнение к рекламе, правда? Реклама - только с пятерками смотрится.
И каждый раз, когда пользователь ставит низкую оценку заведению - это заведение умирает как потенциальный рекламодатель. То что плохие отзывы могут “убить” чье-то кафе - это проблемы хозяина кафе, но то, что они могут “убить” рекламодателя - это уже проблемы 2GIS. Кафе-то может быть и переживет плохие отзывы (на постоянных клиентах, на случайных прохожих, на тех, кто не ориентируется на отзывы), но рекламодателем оно не будет. (Тут было бы интересно посчитать отношения рейтинга компаний и их рекламы)
Не каждое плохое кафе может стать хорошим. Зато, каждое может за небольшие деньги купить отзывы, исправить рейтинг и начать покупать рекламу в 2gis! Помните пример мебельного магазина Кристалл выше, с очень странными связями? Вот - эта компания имеет хорошую оценку в 2GIS (за счет этих аномалий) и она - рекламируется в 2gis…. И 2gis, похоже, не против. Наверное, 2gis просто не знает про эти аномалии…. Не знал.
Представляете, какая цепочка забавная вырисовывается, если так? Лох ведется на рекламу в 2GIS идет в плохое кафе/магазин/СТО/клинику, оставляет там деньги, пишет плохой отзыв. Заведение относит часть денег раскрутчикам и в 2GIS. 2GIS из этих денег выплачивает зарплаты своим профессионалам, чтобы те не ловили эти отзывы. Конечно, я это не утверждаю и мне самому эта схема не нравится (на мелком обжуливании все равно много не заработаешь). Просто я считаю нужным для полноты статьи рассмотреть все варианты (например, чтобы отбросить бредовые).
С другой стороны - если мы исходим из того, что хорошие отзывы привлекают больше, чем реклама - то может быть 2GIS упускает деньги? Возможно, многие компании готовы оплачивать продвижение, но платят раскрутчикам а не 2gis… (Что если дутая пятерка дает бОльший эффект, чем реклама, а стоит дешевле?)
Пути развития
af2gis сейчас
af2gis - это черновик, Proof of concept. Я сделал набросок, немного небрежно, грубыми мазками, увидел, что что-то получается, и осознавая, что нет предела совершенству, остановился на этом. Тем не менее это вполне практичное, полезное “средство индивидуальной защиты”. Я проверяю там заведения перед тем, как воспользоваться.
Серьезно как-то его развивать я не планирую, тем более, что не знаю отношения 2GIS к этому. Да и азарт угас немного. Лучше гор могут быть только горы, на которых еще не бывал. А как математик, я понимаю, что если покорил холмик, то и Эверест в принципе, покоряем - просто вспотею сильнее. Кто хочет - форкайте, я не против. Даже насчет домена я не уверен, зарегал его ради этой статьи (многим проще посмотреть в браузере, а не ставить питоновский пакет).
Что можно улучшить в af2gis
По-хорошему в af2gis просятся тесты и количественные замеры. То есть, мы руками подбираем красные/зеленые заведения, а при изменении параметров или при введении новых методов проверок - можем увидеть, что у нас изменилось, сколько false positives/negatives.
Было бы неплохо сделать разные наборы трешхолдов, от спокойного до очень агрессивного и проверять компании по всем наборам, а в веб-морде пользователь выбирал бы под свой уровень паранойи, или отображать как 5-7 квадратиков, чтобы было видно, что эта компания абсолютно зеленая, эта почти, а эта вот зеленая только на самом травоядном наборе трешхолдов.
Я не до конца разобрался с API 2gis (просто нашел другие способы). Но было бы хорошо научиться получать больше информации о компаниях, о географических объектах (которые /geo/
в URI). Кроме того, совсем никак не сделано обновление данных о компании и пользователях (подкачка новых отзывов). Только стиранием и пересчетом. Но опять же - зависит от отношения 2GIS к этому. (Я еще могу представить, что с полученным опытом я мог бы заняться накруткой отзывов - это красиво, переиграть большую компанию, тем более, что их даже центры депиляции унижают. Но вот что я буду им чистить отзывы, бесплатно и при их противодействии - это точно нет. Пусть, захлебываясь в пене, в море тонут корабли).
Еще, af2gis гребет всех одной гребенкой. Это неплохо для быстрого черновика (даже такая гребенка - ух как гребет!), но по-хорошему надо бы 1) подбирать параметры под город и уровень его покрытия. Москва и Малая Ляля должны иметь чуть другие нормы и ожидания 2) подбирать параметры под тип огранизации. Бар, магазин, церковь, музей, мост, парк аттракционов - это все очень разные организации и наши ожидания от них должны отличаться. А если отличаются ожидания, то и аномалии тоже отличаются.
af2gis сейчас совершенно не учитывает время отзывов. Я замечал интересный тренд, что некоторые аномальные кафе имели стабильно 1 или 2 отзыва в день. В том числе - 31 декабря. (Нет, я верю, что человек мог перекусить 31 декабря там, но стал бы он писать отзыв в такой день?). Хорошо бы посмотреть интенсивность отзывов, скво/дисперсию. Время суток - что если в кафе администратору поручают каждое утро оставлять 2 хороших отзыва? Посмотреть это все для разных заведений, есть ли какая-то зависимость, выбиваются ли накрутки из этого?
Графика. Графическое представление иногда дает озарение. Моментально видишь то, что не видел, пока смотрел на “просто цифры”. В af2gis сейчас совсем нет никакой графической визуализации.
И как я уже сказал - из всего, что нужно для антифрода, у меня есть только интерес, воля, азарт, но в остальном я практически худший из худших. Было бы интересно, если бы на эту проблему посмотрел человек с опытом в антифроде, дата-майнинге или просто который хоть иногда мат.статистикой пользуется. Возможно там, где я вижу только круги на воде, он сможет разглядеть целый богатый подводный мир, его флору, фауну, рельеф дна, геологию и такие вещи, про которые я даже и не знаю.
Если 2gis отнесется хорошо к этому проекту и предоставит удобный доступ к API - можно использовать af2gis как дополнительный внешний инструмент. В этом могут быть свои плюсы, если 2GIS как-то связан-ограничен договорами с некоторыми компаниями, сторонний независимый проект может вольнее трактовать отзывы и давать свою субъективную оценку. (Хотя сейчас особых планов на это нет.)
Что можно использовать на стороне 2GIS
Со стороны площадки (2GIS) проблема в принципе другая. Если для персонального использования нам достаточно увидеть, что “это заведение какое-то мутное”, что в таком случае должна делать 2gis? Ставить красную пометку на компании? удалять пятерки? Но если наказание будет жестоким, накрутка станет карательным инструментом, вместо накрутки рейтинга себе, будут грязно накручивать его конкурентам.
2GIS должна определять не “подозрительные компании”, а “подозрительные отзывы” и “подозрительные пользователи”. Ниже мои сырые и некомпетентные мысли и гипотезы, вдруг да что-то из них после доработки напильником окажется пригодным.
Больше данных
Главное - у 2GIS в доступе гораздо больше данных, чем использует af2gis. Больше данных - больше возможностей увидеть каждую накрутку с разных углов. Даже в af2gis некоторые критерии мне пришлось отбросить - они оказались менее надежными, чем другие. Имея больше данных, можно добавить больше критериев и выбрать самые однозначные.
2GIS видит (или может видеть):
- Дату регистрации аккаунта
- Способ регистрации и технические данные о регистрации.
- Способ логина и история логинов. (Возможно боты логинятся как-то особо, например, раз в жизни залогинились и дальше просто используют куку. Или наоборот, каждый раз логинятся перед оставлением отзыва)
- Его активность и мобильность (если аккаунт активен только когда пишет отзывы, или если он последние 2 года не выезжал из Барнаула, а оставляет отзыв на Калининград).
- OS, fingerprint устройства.
- IP адрес, провайдер, использование VPN, какой именно VPN.
- Расстояние между объектами и вероятные допустимые связи (с учетом типа объекта). Не уверен, но можно попробовать.
- Данные из закрытых профилей (af2gis видит их лишь частично)
- И просто у 2gis есть возможность брать все польные данные очень быстро, в af2gis я ограничиваюсь 500 отзывами и они могут быть собраны в разное время.
Так же, возможно:
- номер телефона, оператор.
- по номеру телефона можно узнать, когда выдана сим-карта
- можем узнать тарифный план. (Его стоимость, включен ли Интернет-пакет)
- можем узнать, что юзер давно “абонент не абонент”, но продолжает оставлять отзывы
Идеи ниже - просто идеи, мысли, то что на брейншторме кидается. У каждой есть свои минусы, проблемы, ограничения, каждую надо пробовать на модели и может быть в жизни смотреть, как она будет работать.
Что делать с накрученными отзывами?
Самый простой вариант - просто скрывать-удалять. Не учитывать в рейтинге. Я исхожу из принципа, что уровень заведения - величина относительно постоянная. (Может меняться за долгое время, но не будет так, что для козерогов там 4.7, а для стрельцов 1.2). Отбрасывая недоверенные отзывы мы не меняем настоящий рейтинг, ну отбросили мы оценки [5,5,3]
от трех новорегов, но у нас есть [5,3,5]
от олдов.
Есть элемент “обиды”, если мы ошибочно удалили искренний отзыв реального пользователя. Тут надо думать. Возможно - не удалять, а shadowban. Или видимый временный “на модерации”. (продолжаем наблюдать за юзером, [и за компанией] если поведение реалистичное - разбаниваем отзыв). Возможно, что удаление-заморозка отзывов в самом деле сможет отпугнуть какое-то количество пользователей - надо посмотреть, замерить. Возможно, редкие ошибки антифрода и редкие потерянные пользователи - допустимая потеря, если взамен мы получаем чистые отзывы, которые привлекают много новых пользователей (и удерживают имеющихся).
Предсказания и моделирование
Научный подход формулирует гипотезы и проверяет их. В случае с отзывами мы можем предположить, что какой-то аккаунт - бот, сделать прогноз на него и сверить будущее с нашим прогнозом. Если мы видим, что определенная группа пользователей - потенциальная ботоферма, которая ставит отзывы по всей стране - мы можем предположить, что вскоре они примерно это же компанией начнут хвалить какую-то компанию в другом городе.
Более того - нам для этого иногда даже ждать будущего не нужно, оно уже пришло! Отлаживая алгоритм мы можем на машине времени вернуться в прекрасное прошлое, по той базе отзывов за прошлый год сформулировать гипотезы, затем вернуться назад в будущее и сверить, совпали они или нет.
Прошлое прошло
Мне кажется, 2gis использует для оценки (хотя бы в некоторых случаях) всю историю отзывов. Для проверки я завел компанию в 2GIS, и автоматически подсосались ее старые отзывы аж за 6 лет назад. Рейтинг от 2gis у меня совпал простым средним арифметическим по всем этим отзывам. Но я не проверял на компаниях с большим количеством отзывов.
Если это так всегда - то мне кажется, это не очень хорошо. С позиции обычного бизнеса - ну какая разница, какая была продавщица или какой был повар или какой таракан ползал в кафе 6 лет назад? Давние ошибки можно прощать, а давние заслуги и тем более. Прошлое должно сгорать, оценка должна считаться по свежим отзывам (по крайней мере, если их достаточно).
С позиции антифрода - успешная мощная раскрутка два года назад - не должна разом давать такой буст, который компания может 10 лет “проедать”.
Проект “Чума”
Можно попробовать немного другой детектор, который будет выжигать ботофермы. Мы виртуально “заражаем чумой” одно из заведений, которое явно считаем накрученным. Каждый посетитель (в том числе - реальный) - несет в себе небольшой заряд этой “чумы”. Если вдруг в другом месте возникла высокая концентрация чумных посетителей - оно тоже становится зачумленным. Таким образом можно выжечь всю ботоферму, сохранив при этом честные оценки от настоящих пользователей. Отдельный реальный пользователь не должен пострадать (ну кроме случая, когда он так же лечит зубы в трех клиниках в разных городах, причем в тех же, где и боты с ботофермы и в то же время).
Дырявое ведро
Как вариант, может быть использовать для компаний подход с “token bucket”. Для каждого подозрительного типа отзывов мы определяем некоторую квоту (в день, в месяц, в год. Абсолютным числом или процентами). Скажем, два отзыва от новорегов должны быть приняты и учтены. А вот уже третий - зависнет на модерации. Но развиснет, когда компания получит, скажем 30 других отзывов. Три отзыва на заведение отправленых изнутри самого заведения (по GPS) - принимаем. А вот четвертый - подождет, пока еще 10 человек не оставят отзывы из дома (причем из разных домов).
Это сильно снизит возможность грубой однотипной накрутки. Нужный алгоритм придется сначала раскусить (а его параметры могут меняться, прежние знания устаревать), а потом еще и подстроиться под него - каждый отзыв будет гораздо дороже стоить, чем сейчас.
Оценки с дисконтом
Сейчас, насколько я понимаю, считается самая простая средняя оценка заведения и каждая пятерка добавляет 5 в числитель и 1 в знаменатель. Каждая пятерка весит одинаково.
Возможно, это не слишком хорошо. И бот, который ставит всем пятерки и реальный человек, если он такой “оптимист”, ставит всем только пять - они не слишком информативны, их оценка не так ценна. Гораздо более ценна оценка от человека, который ставит разные оценки, который “мог бы и 2 поставить, но поставил 5 - потому что все было в самом деле хорошо”.
Этим мы ломаем нынешнюю схему ботов, которые сейчас просто всем ставят пятерки. Конечно, сразу напрашивается вариант, что боты начнут наугад метать низкие оценки чтобы “зарядиться”. А вот от низких оценок у 2GIS есть инструменты (они мне не очень нравятся, но раз они есть - можно пользоваться!)
Хочешь похвалить заведение в Новосибирске? Пожалуйста, но сначала поругай заведение в этом городе. И поругай подтвержденным оплатой отзывом!
Если боты все-таки будут обходить этот барьер - ну тогда лучше убрать его и признать попытку неудачной (чтобы не засорять 2gis мусорными негативными отзывами). Но если это при каких-то параметрах окажется рабочей схемой - то почему бы и нет?
Рекомендации, социальные связи и окукливание
2GIS уже сейчас позволяет оформлять там “друзей” и показывать заведения с оценками от друзей. Не знаю, многие ли пользуются этим, но мне кажется, идея интересная. Даже если в друзья вы будете добавлять множество незнакомых людей, но которые вам кажутся реальными и вы готовы довериться их отзывам.
Но мне кажется интересной более глубокая идея автоматически находить пользователю его “друзей”, по аналогии с рекомендательными системами в фильмах. Если у вас с кем-то немного пересекаются круг заведений и при этом вы примерно одинаково их оцениваете - скорее всего то заведение, которое ваши “неявные автодрузья” высоко оценили - оно и вам понравится.
Что это нам дает? Во-первых, оценка становится глубже и многомернее. Что с того, что это заведение с орущей панк-рок музыкой и амурными приключениями в туалетах искренне залайкано тысячью пьяных панков? Человеку, который ищет кофейню чтобы тихо почитать книжку - такая пятерка никак не пятерка. Бар со стриптизом - подойдет ли посетителю молельного дома? Хорошая нажористая и недорогая шаурма, которую быстро сворачивают - подойдет ли тому, кто предпочитает дорого заплатить, чтобы долго посидеть и дождаться приготовления экзотических блюд? Люди разные, кому попадья, а кому свиной хрящик и подход что “всем нравится песня про валенки - и ты тоже ее слушай” - это сильное упрощение, допустимое на заре эпохи отзывов, но вдруг она уже уходит? Вдруг она УЖЕ ушла, просто не все заметили? Что если кто-то уже догадывается, что качество заведения - это не скалярная величина, а тупо считать среднюю оценку от отзывов - было офигенной идеей когда-то, в свое время, но сейчас оно уже другое?
Во-вторых - мы получаем хорошую ботоизоляцию, закукливая ботов. У РСХБ много хороших отзывов от тех, кто так же высоко оценил еще 3 отделения РСХБ. Пусть. Но когда я посмотрю оценку, мне она рассчитается низкой, потому что люди как я, которые не имеют в профиле трех положительных отзывов про РСХБ - обычно оценивают его низко. Отзывы на студии депиляции от людей, которые пять раз в месяц нахваливают студии депиляции этого бренда сыграют только для тех, кто тоже делает депиляцию дважды в день. Кафе в Новосибирске, которые высоко оценили люди, которые вчера разом покупали пластиковые окна в Краснодаре - оно будет предлагаться и другим людям с такой же сильной тягой к пластиковым окнам и путешествиям.
И в третьих - чем больше ты оцениваешь, тем точнее будут рекомендации для тебя. Это прекрасный стимул самому расставить оценочки, причем не только 5-5-5, как с Т-Банка льется, а заслуженно разные.
Не знаю, какой объем отзывов и пересечений требуется для эффективного запуска этого алгоритма, но наверняка можно хотя бы “загрубить” его на некоторый небольшой набор признаков.
Заключение
Помните заведение “Манты-плов”, которое пыталось нас обманывать в начале статьи?
Никакое дело не живет, если нет в нем чего-то настоящего, настоящей души какой-то, настоящей любви, настоящего азарта, злости, какой-то искры настоящего божьего гнева.
Да, совсем не сложно имитировать достижения. Легко ловить мячики, которые сам себе кидаешь. Проще всего обманывать свое заведение. Ребенок даже смог бы. Но мне в эти детские игры было бы немного страшно играть, потому что меня бы тревожила мысль: А вдруг придет кто-то из настоящих взрослых и своим взрослым взглядом увидит все это “Лимпопо”?