Jak zbudować katalog firm odporny na duplikaty wizytówek NAP
Redakcja 31 lipca, 2026Technologia ArticleDuplikaty wizytówek NAP rzadko powstają dlatego, że ktoś świadomie dodaje tę samą firmę kilka razy. Najczęściej są skutkiem drobnych różnic: innego zapisu ulicy, starego numeru telefonu, skróconej nazwy spółki, oddziału potraktowanego jak osobna firma albo ponownego importu tego samego pliku. Dla użytkownika są irytujące. Dla właściciela katalogu oznaczają jednak znacznie więcej: rozproszone opinie, błędne statystyki, słabsze wyniki wyszukiwania i kosztowne poprawki wykonywane ręcznie.
NAP oznacza nazwę firmy, adres i numer telefonu — Name, Address, Phone. Tych trzech pól nie można jednak traktować jak prostego identyfikatora. Firma może zmienić telefon, przenieść siedzibę albo działać pod nazwą handlową inną niż nazwa rejestrowa. Z kolei pod jednym adresem może funkcjonować kilkadziesiąt niezależnych podmiotów, szczególnie w biurowcach, galeriach handlowych i wirtualnych biurach.
Katalog odporny na duplikaty nie opiera się więc na jednym filtrze. Potrzebuje normalizacji danych, wieloetapowego porównywania rekordów, progów decyzyjnych oraz procedury rozstrzygania przypadków niejednoznacznych. Największym błędem jest automatyczne łączenie wszystkich podobnych wizytówek. Fałszywe scalenie dwóch różnych firm bywa trudniejsze do odwrócenia niż pozostawienie jednego duplikatu.
Najpierw ujednolicenie danych, dopiero potem porównywanie rekordów
Porównywanie surowych danych daje słabe wyniki. Dla systemu „Al. Jerozolimskie 123”, „Aleje Jerozolimskie 123” i „al. Jerozolimskie 123 lok. 4” mogą być trzema różnymi adresami, choć w praktyce wskazują ten sam budynek. Podobnie numer „22 123 45 67” nie jest tekstowo równy zapisowi „+48 22 123-45-67”.
Każdy rekord powinien mieć dwie warstwy:
- wartość oryginalną, wyświetlaną użytkownikowi,
- wartość znormalizowaną, wykorzystywaną do wyszukiwania duplikatów.
Nie należy nadpisywać oryginalnych danych. Normalizacja usuwa różnice techniczne, ale może też zniszczyć istotne informacje. Przykładowo „Studio Forma” i „Forma Studio” po agresywnym sortowaniu słów mogłyby zostać uznane za tę samą nazwę, choć mogą oznaczać dwa niezależne podmioty.
W przypadku nazwy firmy praktyczny proces obejmuje:
- Zamianę liter na małe.
- Usunięcie nadmiarowych spacji i znaków interpunkcyjnych.
- Ujednolicenie popularnych form prawnych, takich jak „sp. z o.o.”, „spółka z ograniczoną odpowiedzialnością” i „sp z oo”.
- Zachowanie dwóch wariantów: nazwy pełnej oraz nazwy bez formy prawnej.
- Oznaczenie słów mało rozróżniających, takich jak „firma”, „usługi”, „centrum”, „polska” czy „group”.
Usuwanie form prawnych poprawia wykrywanie duplikatów, ale nie może być jedynym kryterium. „Alfa sp. z o.o.” i „Alfa S.A.” mogą być różnymi spółkami. Nazwa po oczyszczeniu służy do budowania kandydatów, a nie do automatycznego scalenia.
Numer telefonu najlepiej przechowywać w standardzie E.164, czyli dla polskich numerów w formacie zaczynającym się od +48. Przed porównaniem trzeba usunąć spacje, myślniki, nawiasy i prefiksy typu 0048. System powinien osobno oznaczać:
- numer główny,
- telefon oddziału,
- infolinię,
- numer komórkowy,
- numer historyczny.
Dwa rekordy z identycznym numerem telefonu są silnymi kandydatami na duplikaty, lecz nadal nie dają stuprocentowej pewności. Jeden numer może obsługiwać kilka punktów franczyzowych, gabinetów w przychodni albo marek należących do tej samej grupy.
Adres wymaga najwięcej pracy. Minimalny zestaw pól powinien obejmować:
- kraj,
- kod pocztowy,
- miejscowość,
- ulicę,
- numer budynku,
- numer lokalu,
- współrzędne geograficzne,
- identyfikator źródła adresu.
Nie warto przechowywać całego adresu wyłącznie w jednym polu tekstowym. Rozbicie go na elementy pozwala odróżnić siedzibę przy ul. Długiej 12 od lokalu 12 przy ul. Długiej 8. W polskich danych szczególnie często mylą się numery w formacie „12/4”, „12 lok. 4” i „12 m. 4”.
Geokodowanie pomaga, ale nie rozwiązuje problemu. Współrzędne zwracane przez zewnętrzne usługi mogą wskazywać środek budynku, działki albo ulicy. W galerii handlowej wszystkie lokale mogą otrzymać niemal identyczną lokalizację. Dlatego odległość geograficzna powinna wzmacniać ocenę podobieństwa, a nie zastępować analizę numeru lokalu.
Przy większym katalogu warto dodać jeszcze identyfikatory o wyższej sile rozstrzygającej:
- NIP,
- REGON,
- KRS,
- domenę internetową,
- adres e-mail,
- identyfikator wpisu w źródle zewnętrznym.
NIP jest bardzo mocnym sygnałem, ale nie zawsze oznacza jedną wizytówkę. Ta sama spółka może mieć kilkadziesiąt oddziałów, punktów odbioru lub placówek. Rekord firmy i rekord lokalizacji to dwa różne obiekty. Katalog, który ich nie rozdziela, prędzej czy później zacznie scalać prawidłowe oddziały jako rzekome duplikaty.
Reguły wykrywania powinny działać punktowo, a nie zero-jedynkowo
Po normalizacji należy zbudować mechanizm wybierający rekordy podobne. Porównywanie każdej wizytówki z każdą inną jest niepraktyczne. Przy milionie wpisów oznaczałoby to niemal 500 miliardów par. Zamiast tego stosuje się blocking, czyli ograniczanie porównań do rozsądnych grup kandydatów.
Rekord może trafić do porównania, gdy zgadza się przynajmniej jeden z mocniejszych warunków:
- ten sam znormalizowany numer telefonu,
- ten sam NIP,
- ta sama domena,
- podobna nazwa i ten sam kod pocztowy,
- podobna nazwa i odległość do 100–200 metrów,
- ten sam adres oraz zbliżona branża.
Dopiero dla wybranych par oblicza się wynik podobieństwa. Praktyczny model punktowy może wyglądać następująco:
- identyczny NIP: +60 punktów,
- identyczny telefon: +35 punktów,
- identyczna domena: +30 punktów,
- zgodność nazwy powyżej 90%: +25 punktów,
- ten sam budynek: +20 punktów,
- ten sam numer lokalu: +15 punktów,
- odległość poniżej 50 metrów: +10 punktów,
- zgodna kategoria działalności: +5 punktów,
- różny NIP: –70 punktów,
- różne numery lokali: –20 punktów,
- odległość powyżej 20 kilometrów: –30 punktów.
To wartości startowe, nie uniwersalny standard. Trzeba je dostroić na ręcznie oznaczonym zbiorze danych. W katalogu restauracji identyczny telefon i adres są zwykle bardzo mocnym dowodem. W katalogu lekarzy jeden numer rejestracji może obsługiwać kilkunastu specjalistów, więc jego waga powinna być niższa.
Dobry system dzieli wyniki na trzy strefy:
- automatyczne scalenie, na przykład od 85 punktów,
- weryfikacja ręczna, na przykład od 55 do 84 punktów,
- pozostawienie osobnych wpisów, poniżej 55 punktów.
Najbardziej niebezpieczne jest ustawienie jednego niskiego progu i automatyczne łączenie wszystkiego powyżej niego. W katalogu liczącym 500 tys. wpisów nawet 0,1% błędnych decyzji oznacza 500 źle scalonych wizytówek. Każda może później wymagać odtworzenia zdjęć, opinii, godzin otwarcia, historii zmian i powiązań z kontem właściciela.
Podobieństwo nazw najlepiej liczyć kilkoma metodami. Levenshtein dobrze wykrywa literówki, lecz gorzej radzi sobie z przestawionymi wyrazami. Porównanie tokenów wychwyci podobieństwo między „Kowalski Serwis Samochodowy” a „Serwis Samochodowy Kowalski”. Algorytmy fonetyczne pomagają przy nazwach zapisanych ze słuchu, ale dla polszczyzny wymagają ostrożności. Nazwiska „Kaczmarek” i „Kaczmarczyk” są podobne, lecz nie oznaczają tej samej osoby ani firmy.
W praktyce nie sprawdza się również bezwarunkowa zasada „ten sam NIP = jeden wpis”. Lepszy model danych rozdziela:
- podmiot prawny,
- markę,
- lokalizację,
- wizytówkę publikowaną w katalogu.
Jedna spółka może prowadzić kilka marek. Jedna marka może mieć wiele lokalizacji. Jedna lokalizacja może tymczasowo posiadać dwa wpisy pochodzące z różnych źródeł. Dopiero taki model pozwala scalać dane bez utraty informacji.
Scalanie bez utraty historii, opinii i kontroli właściciela
Wykrycie duplikatu to połowa pracy. Druga połowa polega na wyborze rekordu głównego i przeniesieniu danych w sposób odwracalny. Zwykłe usunięcie słabszej wizytówki jest złym rozwiązaniem. Powoduje utratę historii, a przy pomyłce nie daje możliwości szybkiego cofnięcia operacji.
Każde scalenie powinno tworzyć:
- identyfikator rekordu nadrzędnego,
- listę scalonych rekordów,
- datę operacji,
- użytkownika lub proces, który podjął decyzję,
- wynik podobieństwa,
- zestaw reguł, które doprowadziły do scalenia,
- kopię wartości sprzed zmiany,
- możliwość cofnięcia operacji.
Dane pól nie powinny być wybierane wyłącznie według zasady „nowsze wygrywa”. Nowy import może zawierać gorszy adres niż starsza, zweryfikowana wizytówka. Lepsza jest hierarchia źródeł. Przykładowo:
- Dane potwierdzone przez właściciela firmy.
- Dane zweryfikowane przez operatora katalogu.
- Rejestry publiczne odpowiednie dla danego pola.
- Oficjalna strona firmy.
- Dane od zaufanego partnera.
- Import masowy.
- Zgłoszenie anonimowego użytkownika.
Hierarchia nie może działać identycznie dla wszystkich informacji. CEIDG lub KRS mogą pomóc potwierdzić nazwę rejestrową i dane podmiotu, ale nie zawsze pokazują aktualne godziny otwarcia punktu usługowego. Oficjalna strona marki może być lepszym źródłem telefonu oddziału, lecz czasem jest aktualizowana z opóźnieniem.
Przy scalaniu trzeba ustalić osobne reguły dla różnych typów danych:
- opinie należy przepiąć do rekordu głównego, zachowując ich identyfikatory,
- zdjęcia warto zachować, ale oznaczyć źródło i datę dodania,
- godziny otwarcia trzeba porównać, nie łączyć mechanicznie,
- kategorie można połączyć, a następnie usunąć duplikaty i kategorie sprzeczne,
- numery telefonów lepiej zachować jako główny, dodatkowy i historyczny,
- adresy powinny mieć status aktualny, poprzedni albo korespondencyjny,
- adresy URL należy oczyścić z parametrów śledzących i przekierowań.
Osobnym problemem są wpisy przejęte przez właścicieli. Scalenie dwóch wizytówek przypisanych do różnych kont nie może odbywać się bez kontroli. System powinien wstrzymać automatyczną operację, gdy:
- oba konta mają aktywną weryfikację,
- wizytówki mają różne numery NIP,
- właściciele podali sprzeczne dane,
- jedna wizytówka reprezentuje markę, a druga osobę wykonującą zawód,
- pod tym samym adresem działają podobnie nazwane firmy.
Weryfikacja ręczna wymaga dobrego interfejsu. Moderator powinien widzieć różnice obok siebie, a nie otwierać kilkunastu ekranów. Najbardziej przydatny widok pokazuje nazwę, adres, telefon, NIP, domenę, mapę, źródło, datę aktualizacji, właściciela wpisu i historię zmian. Przy dużej skali warto także wyświetlać powód rekomendacji, na przykład: „identyczny telefon, podobieństwo nazwy 94%, odległość 12 m, różne numery lokali”.
Nie należy scalać rekordów tylko dlatego, że tak zasugerował model uczenia maszynowego. Model może porządkować kolejkę i wykrywać nietypowe kombinacje, ale decyzje o wysokim ryzyku powinny nadal opierać się na jawnych regułach albo kontroli człowieka. To szczególnie ważne w przypadku kancelarii, gabinetów medycznych, agentów nieruchomości i punktów franczyzowych, gdzie dane kontaktowe często częściowo się pokrywają.
Po wdrożeniu mechanizmu trzeba mierzyć nie tylko liczbę usuniętych duplikatów. Istotniejsze wskaźniki to:
- udział automatycznych scaleń cofniętych przez moderatora,
- liczba zgłoszeń „to nie jest ta sama firma”,
- odsetek duplikatów wykrytych po ponownym imporcie,
- średni czas rozpatrywania przypadku ręcznego,
- liczba rekordów połączonych łańcuchowo,
- udział wizytówek bez mocnego identyfikatora.
Szczególnie groźne jest scalanie łańcuchowe. Rekord A jest podobny do B, a B do C, lecz A i C mogą dotyczyć różnych firm. System nie powinien automatycznie zakładać, że podobieństwo jest przechodnie. Przed dołączeniem kolejnego wpisu do grupy należy porównać go z rekordem nadrzędnym albo ze wszystkimi najważniejszymi rekordami w klastrze.
Więcej informacji na: biznap.pl
FAQ
Czy identyczny numer telefonu wystarczy do automatycznego scalenia wizytówek?
Nie. To silny sygnał, ale jeden numer może obsługiwać kilka oddziałów, pracowników albo marek. Automatyczne scalenie powinno wymagać dodatkowej zgodności, na przykład nazwy, adresu, domeny lub NIP-u.
Czy NIP powinien być obowiązkowy w katalogu firm?
Nie dla każdego rodzaju wpisu. Jest bardzo użyteczny przy podmiotach gospodarczych, lecz nie zawsze pasuje do wizytówek marek, placówek, punktów franczyzowych czy osób wykonujących zawód w kilku lokalizacjach. Powinien być mocnym identyfikatorem podmiotu, a nie jedynym identyfikatorem wizytówki.
Jak często uruchamiać kontrolę duplikatów?
Najlepiej przy każdym dodaniu i imporcie rekordu oraz cyklicznie dla całej bazy. Przy katalogu aktualizowanym codziennie sensowny jest nocny proces kontrolny. Pełne przeliczenie dużej bazy można wykonywać rzadziej, na przykład raz w tygodniu, jeśli zmiany są analizowane przy zapisie.
Czy duplikaty można usuwać automatycznie?
Można automatycznie scalać przypadki o bardzo wysokiej pewności, ale operacja musi być odwracalna. Rekordu podrzędnego nie należy fizycznie kasować od razu. Bezpieczniejszy jest status „scalony” oraz przechowywanie historii i przekierowania do wpisu głównego.
Jak odróżnić duplikat od oddziału tej samej firmy?
Trzeba rozdzielić podmiot od lokalizacji. Ten sam NIP przy różnych adresach zwykle oznacza oddziały albo punkty tej samej organizacji, a nie duplikaty. Duplikatem jest najczęściej drugi wpis tej samej lokalizacji, nie drugi wpis tego samego podmiotu.
Jaki poziom błędów jest akceptowalny?
Nie ma jednej wartości dla każdego katalogu. Fałszywe scalenia powinny być jednak znacznie rzadsze niż niewykryte duplikaty, ponieważ powodują większe szkody. Próg automatyzacji należy ustawić na podstawie ręcznie ocenionej próbki co najmniej kilkuset par, a przy dużej i zróżnicowanej bazie — kilku tysięcy.
Pierwszym działaniem nie powinno być wdrażanie modelu AI ani masowe scalanie rekordów. Najpierw rozdziel w bazie podmiot, markę i lokalizację, a następnie znormalizuj telefony oraz adresy bez nadpisywania wartości oryginalnych. Dopiero na tej podstawie wybierz próbkę rzeczywistych par, oznacz duplikaty ręcznie i ustaw progi. Jeżeli obecny system usuwa wpisy bez historii i możliwości cofnięcia operacji, ten błąd trzeba naprawić w pierwszej kolejności.
You may also like
Najnowsze artykuły
- Pakiet dowodowy marki dla AI — jakie informacje powinny potwierdzać każde ważne twierdzenie o firmie?
- Graf cytowań zamiast liczby wizytówek — jakie kombinacje źródeł zwiększają widoczność marki w wynikach AI?
- Co zrobić, gdy model językowy podaje nieaktualny adres przedsiębiorstwa
- Jak przygotować katalog branżowy obsługujący kilka wersji językowych nazw firm
- Czym różnią się balony lateksowe od foliowych i jak obliczyć liczbę balonów potrzebnych na imprezę
Najnowsze komentarze
Kategorie artykułów
- Biznes i finanse
- Budownictwo i architektura
- Dom i ogród
- Dzieci i rodzina
- Edukacja i nauka
- Elektronika i Internet
- Fauna i flora
- Film i fotografia
- Inne
- Kulinaria
- Marketing i reklama
- Medycyna i zdrowie
- Moda i uroda
- Motoryzacja i transport
- Nieruchomości
- Praca
- Prawo
- Rozrywka
- Ślub, wesele, uroczystości
- Sport i rekreacja
- Technologia
- Turystyka i wypoczynek

Dodaj komentarz