Как надёжно определить, что обе карты выпустил один банк?
У меня есть БД с платежами по картам, включающая поле с первыми шестью цифрами банковских карт. Я хотел сгруппировать платежи по банкам, но перепробовав все попавшиеся api к своему удивлению - не смог найти способа надежно определить что две карты были выданы одним банком.
Например, бики 510621 и 044525444 соответствуют YANDEX.MONEY NBCO LLC и YooMoney, NBCO LLC, хотя по факту и то и другое - яндекс деньги.
Для биков 413203 и 532356, api возвращают имена 'RUSSIAN REGIONAL DEVELOPMENT BANK OJSC (CLOSED)' и 'JOINT-STOCK COMPANY RUSSIAN REGIONAL DEVELOPMENT BANK (RRDB)'.
Поначалу я решил просто почистить возвращаемые строки от мусора вроде "LLC" или "JOINT STOCK COMPANY", а затем сравнивать строки каким-нибудь алгоритмом. Расчет расстояния Левенштейна ожидаемо оказался довольно бесполезным, после этого я попробовал использовать индекс Жаккара - стало получше, но работает это далеко не на 100%, т.к. названия многих банков могут, например почти целиком состоять из названий одинаковых географических мест. Некоторые названия по всей видимости нужно сначала перевести обратно на русский, и только после сравнивать, пример - "POCHTA BANK" vs "POST BANK".
Т.е. алгоритм сравнения названий если и возможен, то он будет крайне переусложненным, и не факт, что вся эта конструкция в итоге не начнет сбоить. Вопрос - существует ли в природе консистентный api или бд c идентификаторами банков, или какой-то другой способ простого определения, что две карты были выданы одним банком?
Это две разные компании так то))) если про Яндекс и юмани
В целом банков не так много, и видимо надо вручную унифицировать названия и потом уже пользоваться этой базой для сравнения
Ну придется раз в какое то время новые имена унифицировать
mkone112, написать. Ровно как выше и предлагали.
Притом если дочитать книжку про базы данных хотя бы до второй главы - то в общем-то вопрос как сделать агрегирующую таблицу сам собой рассосется.