Wpis z mikrobloga

Witam Przyjaciele,
Mam do speców z #datascience, #machinelearning, #dataengineering i ogólnie #data prośbę o pokierowanie na to jak rozwiązać poniżej opisany poroblem.

Jak widzicie na załączonym obrazku mam rozpisany mocno ogólny ale oddający główną istotę problemu przykład, z którym się mierzę.

Otóż:
1. Mam dwie tablice (dataset.1 i dataset.2) składające się z kolumn: [*id] [Imię] [Nazwisko] [Adres] [Miasto] [NrTel]
2. W dataset.1 bazując na danych teleadresowych, imieniu i nazwisku danego człowieka staram się przypiąć mu ID z dataset.2. Jak widać jest neistety syf w danych. Część da sięprzypiąc bez problemu jednak czasami: numer lokalu może być inny, dana kobieta mogłą zmienić nazwisko i w dataset.2 mieszka dokladnie pod tym samym adresem i ma ten sam nr telefonu ale tylko imie sie zgadza. Może być imię nazpisane zamiast "Michał"to "M."
3. Mogą pojawiać się drobne literówki w nazwach ulic czy miast a nawet imion czy nazwisk.
4. Wierszy w dataset.1 mam ok 180 milionów, a w dataset.2 ok. 140 milionów.
5. Do dyspozycji mam sparka na Azure, Sql server i w ogóle sukbskrypcję na Azure.

Tutaj pojawia się pytanie. Jak mogę ogarnąć takie dopasowanie "prawdopodobne" pomiędzy tymi datasetami?

Dla tych rekordów, które są dobrze uzupełnione to zwykły join załatwia temat ale co z pozostałymi? Chciałbym wtedy dopasować nr konta z dataset.2 i powiedzieć, że PRAWDOPODOBNIE to jest to konto i wyliczyć poziom prawdopodobieństwa.

Podpowiecie mi proszę jak to można ogarnąć? Na razie trafiłem na coś takiego jak jak "Locality Sensitive Hashing" ale nie jestem pewien czy to jest dobre podejście. Może znajdzie się dobra dusza / spec co by podpowiedział czym mam się przy takim przypadku zainteresować?

#algorytmy #programowanie #programista15k
inny_89 - Witam Przyjaciele,
Mam do speców z #datascience, #machinelearning, #dataen...

źródło: comment_1595715799r0qzy4X8hJ1zOMabEOs6K9.jpg

Pobierz
  • 5
@inny_89: Nigdy nie przyszło mi mierzyć się z takim problemem, ale szybko wygooglałem, że Twój problem może znaleźć rozwiązanie po zagłębieniu tematu "Fuzzy Matching".

Dla przykładu znalazłem artykuł autora biblioteki splink którą możesz użyć w Sparku. Jeśli dobrze zrozumiałem, to działa ona właśnie na podstawie obliczania prawdopodobieństwa dopasowań, co zostało opisane we wspomnianym wpisie pod nagłówkiem "How it works".
Polecam sprawdzić interaktywne demo zbliżone do Twojego problemu (znalezione w
@Pyxelr: Dziękuję! Na pierwszy rzut oka wydaje mi się, że to dobry trop. Jakoś w moich poszukiwaniach w odmętach internetu za bardzo przywiązałem się do hasła: "Proximate Matching". Teraz jak czytam o "Fuzzy matching" to faktycznie jest to bliskie temu co potrzebuję.

W tygodniu postaram się to sprawdzić w robocie. Jeśli coś z tego wyjdzie to będę wołać z podziękowaniami i wrażeniami. :)
@vejnn o Panie, pewnie, że pamiętam bo spędziłem nad tym pełen miesiąc.
Niestety, finał był taki, że zrobiliśmy małego potworka, który bazując na serii "ifow" matchowal mi dane na wystarczającym poziomie. Nikt więcej w to nie chciał wchodzić i tak zostało do dzisiaj xD
Finalnie fuzzy matchingu w ogóle nie użyłem.