În prezent lucrez la un proiect de modelare a datelor ca parte a proiectului meu universitar de vară. Datele despre clienți necesită multă curățare, deoarece un număr de coloane se bazează pe inputul uman și au text gratuit.

automată

Pentru a da un exemplu, coloana Nume companie are mai multe intrări pentru aceeași companie. Pentru "Hugo Boss" aceasta include „Hugo Boss”, „Huggo Boss”, „Hugo Boss Ltd”.

Aș putea să trec prin fiecare rând și să identific toate valorile care au fost folosite și să creez o hartă pentru fiecare intrare, totuși, având în vedere că am de-a face cu un milion de înregistrări, acest lucru este foarte consumator de timp și nu este foarte ideal.

Știu oamenii un cod sursă al unei astfel de implementări/similare? Am analizat algoritmul de potrivire, totuși se bazează pe un model pre-calculat. Ce alt algoritm de potrivire sau tehnici de învățare automată pot folosi pentru a dezvolta un proces automat care ar curăța datele, adică potriviți toate numele diferite cu un singur nume.

Orice ajutor ar fi apreciat.

4 Răspunsuri 4

Acest domeniu de cercetare se numește „potrivire de date” sau „legătură de înregistrare”.

Există o carte de sondaje foarte bună despre tehnicile pe care le puteți folosi de Peter Christen. De asemenea, el intră adânc în modele de învățare automată și cum să le îmbunătățească din abordarea de bază, cum ar fi distanțele simple de șir (așa cum au sugerat deja alte răspunsuri).

Pentru a vă oferi un început, puteți încerca să calculați caracterele n-grame ale titlurilor dvs.

Pentru n = 3 și Hugo Boss, ai primi

Acum puteți calcula asemănarea jaccard între două seturi de aceste ngrame.

Aici, de exemplu, între Hugo Boss și Huggo Boss:

Dacă nu doriți să mergeți singuri pe ruta de implementare a tuturor acestor lucruri, utilizați Lucene. De asemenea, este foarte rapid și se ridică la miliarde de documente.

„Hugo Boss” include „Hugo Bos”, „Huggo Boss”, „Hugo Boss Ltd”. Toate cele de mai sus vor avea aceleași valori soundex (algoritm fonetic), cu excepția ultimei cu „LTD”.

Ați putea asocia soundex cu numele afacerii. Acest lucru ar trebui să funcționeze pe „Hugo Boss”, „Hugo Bos” și „Huggo Boss”. Cu toate acestea, „Hugo Boss Ltd” nu se va potrivi cu celălalt din cauza LTD la final. Această tehnică a funcționat bine pentru potrivirea fuzzy în care lucrez și rezultatele au fost utile atunci când se compară numele și prenumele pentru a stabili identitatea.

Rețineți însă că soundex nu va funcționa pentru lucruri precum numerele de securitate socială. Are un domeniu mai strict în comparație cu o măsură de distanță, cum ar fi o distanță de editare.

S-ar putea să eliminați, de asemenea, lucruri precum „Ltd”, „LLC”, „Corp” care sunt comune denumirilor de afaceri din setul dvs. de date. Acest lucru ar ajuta un cadru de potrivire soundex, deoarece scurtează lungimile șirurilor.

În plus, ați putea compara ngramele de litere așa cum recomandă Thomas în răspunsul său de legătură de înregistrare, iar acest lucru ar simplifica și numărul de ngramuri de testat.

Iată algoritmul NYSIIS:

Algoritmul, așa cum este descris în Sistemul de identificare și informații din statul New York:

Pachetele Soundex se găsesc în multe limbaje de programare de nivel înalt. În piton puteți încerca pachetul fuzzy:

Puteți tasta și potrivi ngramele sau numele complete.

În cele din urmă puteți utiliza numele modului în date sau în altă metodă pentru a normaliza câmpul de nume.