Czyścimy dane!

Otrzymaliśmy ostatnio zlecenie sprawdzenia jakości bazy danych klientów  - czy tacy klienci nadal istnieją, czy ich dane są poprawne, czy adresy są prawdziwe. Przechodząc przez ten proces zauważyliśmy kilka rzeczy którymi chcielibyśmy się z Wami podzielić.

Najskuteczniejszą sposobem na czystą wodę jest niedopuszcznie do zanieczyszczenia źródla wody. Wlewanie tam gnojówki i filtrowanie jej powoduje koszty, marnuje cenną energię a woda ciągle nie jest idealna. Ta prosta prawda ciągle jest eureką w większości firm.

80% cennego czasu analityk spędza na wyszukiwaniu, czyszczeniu i organizowaniu danych, pozostawiając tylko 20% na faktyczną analizę.

Harvard Business Review

Różnego rodzaju badania pokazują że pracownicy, we wszystkich działach firmy, marnują wiele cennego czasu na poprawianie danych i nie do końca ufają analizom wykonanym na ich podstawie.

Gromadzenie ogromnych ilości danych jest bezużyteczne, jeśli nie można ich interpretować ani analizować. To zupełnie nieprawda że "dane są współczesną ropą naftową". Tylko wartościowe maja jakiś sens.

Słowniki danych

W ostatnich latach wiele się zmieniło w dostępności danych słownikowych czy metadanych - kontrolowanych list wartości do użycia przy tworzeniu informacji. Pojawiły się też nowe sposoby tworzenia metadanych czy słowników biznesowych.

Jeśli chcemy np weryfikować wprowadzane dane indywidualnych użytkowników, możemy sprawdzić poprawność ich imion a nawet nazwisk pozyskując dane referencyjne z portalu https://dane.gov.pl/ Listy zawierają wszystkie imiona i nazwiska z bazy PESEL.

By nie dopuścić do wpisania nieistniejącego adresu możemy skorzystać z usługi REST Geoportalu [link]. Usługi słowników Geoportal udostępniają referencyjne dane słownikowe z zakresu systemu adresowego, tj. słowniki miejscowości, ulic i adresów. Słowniki te udostępniane są w dwóch trybach: on-line i off-line.

Jeśli działamy w segmencie B2B chcemy wiedzieć czy firma z którą będziemy współpracować istnienie naprawdę, czy nasze stare rekordy są nadal aktualne, czy firma nadal prowadzi działalność, czy jej dane mamy zapisane poprawnie. Portal Regon API po zarejestrowaniu daje darmowy dostęp do rejestru firm na terenie Polski. Zwracane dane to Regon, NIP, Nazwa, Powiat, Gmina, Miejscowość...

Weryfikacja istniejących danych

Czyszcząc dane porównujemy jabłka do jabłek. Nic odkrywczego; pozbywamy się zbędnych spacji, konwertujemy liczby zapisane jako tekst na liczby, usuwamy tekst z liczb i odwrotnie, usuwamy duplikaty, uwspólniamy text - wielkie lub duże litery, usuwamy zbędne formatowanie...

Możemy następnie przejść do fazy drugiej; sprawdzić czy dane nie zawierają błędów. Kody pocztowe, ulice, miejscowości, imiona... zweryfikować je z listami referencyjneymi (danymi słownikowymi). Gdybyśmy jednak porównywali frazę do frazy, poprawne dane byłby tylko te które zgadzają się w 100%. Wyeliminowalibyśmy wiele rekordów które są ciągle poprawne mimo że mają niewielkie błędy w pisowni np. "Trakt Lublski" to ciągle "Trakt Lubelski a uzycie skrótu zamiana "Aleja Krakowska" w "Al Krakowska" nie czyni tego adresu niezrozumiałym.

Najelepsze efekty sprawdzenia podobieństwa frazy do wzorcowej otrzymamy sprawdzając dystans miedzy fazą sprawdzaną a wzorcową. Istnieje kilka argorytmów które mierzą podobieństwo jednej frazy do drugiej. Najbardziej znany jest Levenshtein (bez modyfikacji kiepsko radzi sobie z kilkoma słowami) ale są i inne jak Jaro–Winkler, N-gram.

Bibliotek sprawdzających podobieństwo między frazami używaliśmy by zweryfikować czy firmy które posiadają ten sam NIP (np. kilka oddziałów, jednostki administracji publicznej). W takim przypadku ze słownika (bazy REGON) otrzymujemy wiele wpisów - musimy dopasować rekord z bazy klientów do krtóregoś rekordu z danych wzorcowych.

Takie sprawdzanie może odbywać sie na wielu polach - np. poważny błąd w nazwie ulicy (nie akceptowalny dystans miedzy nazwą słownikową ulicy a zapisaną w bazie) nie eliminuje rekordu jeśli pozostałe pola mają wysokie podobieństwo lub są identyczne.

Weryfikując dane robimy założenie jaki poziom poprawności danych jest dla nas akceptowalny. Dane zupełnie nieprawdziwe mogą być usunięte z bazy lub odpowiednio oznaczone. Dane z niewielkim procentem błędu mogą być zaakceptowane. Niektóre rekordy możemy zaklasyfikować do ręcznej korekty lub ostatecznej decyzji (poprawne - zostawiamy, usuwamy, akceptujemy).

Czyszczenie danych jest teraz łatwiejsze niż było jeszcze dekadę temu - nowe algorytmy/biblioteki, dostępność narzędzi, wydajne procesory. Jedna rzecz się jednak nie zmieniła - ciągle wymaga to umiejętności :-)