A legjobb módszer a nagy mennyiségű adat tisztítására és normalizálására a karakterlánc-illesztési algoritmusra támaszkodva

Jelenleg egy adatmodellezési projekten dolgozom egyetemi nyári projektem részeként. Az ügyféladatokat nagyon meg kell tisztítani, mivel számos oszlop támaszkodik az emberi bevitelre és szabad szöveggel rendelkezik.

gépi

Példaként említhetjük, hogy a Vállalkozás neve oszlop több bejegyzést tartalmaz ugyanazon vállalat számára. Mert "Hugo Boss" ebbe beletartozik "Hugo Boss", "Huggo Boss", "Hugo Boss Ltd".

Lehetséges, hogy végigmegyek minden soron, és meghatározhatom az összes használt értéket, és létrehozhatok egy térképet az egyes bejegyzésekhez, azonban figyelembe véve, hogy egymillió rekorddal foglalkozom, ez nagyon időigényes és nem túl ideális.

Ismerik az emberek az ilyen/hasonló megvalósítás forráskódját? Megvizsgáltam a megfelelő algoritmust, azonban ezek előre kiszámított mintára támaszkodnak. Milyen más illesztési algoritmust vagy gépi tanulási technikát használhatok egy olyan automatizált folyamat kifejlesztésére, amely megtisztítaná az adatokat, azaz illessze az összes nevet egyetlen névhez.

Minden segítséget értékelni fogunk.

4 válasz 4

Ezt a kutatási területet "Data Matching" vagy "Record Linkage" néven hívják.

Van egy nagyon jó felmérési könyv a technikákról, amelyeket Peter Christen használhat. Ezenkívül elmélyül a gépi tanulás modelljeiben, és abban, hogyan lehetne ezeket az alapvető megközelítéstől, például egyszerű vonós távolságoktól javítani (ahogy más válaszok már javasolták).

Ahhoz, hogy előnyt nyújtson, megpróbálhatja kiszámítani a címek karakterének n-grammját.

N = 3 és Hugo Boss esetén megkapná

Most kiszámíthatja ezeknek az ngrammoknak a két halmaza közötti jaccard hasonlóságot.

Itt, például Hugo Boss és Huggo Boss között:

Ha nem akarja ezeket a dolgokat maga végrehajtani, használja a Lucene-t. Ez nagyon gyors, és több milliárd dokumentumot képes méretezni.

"Hugo Boss", ide tartozik a "Hugo Bos", a "Huggo Boss", a "Hugo Boss Ltd". A fentiek mindegyikének ugyanazok a soundex (fonetikus algoritmus) értékek lesznek, kivéve az utóbbit, amely "LTD".

Összehangolhatja a soundex-et az üzleti nevekkel. Ennek működnie kell a "Hugo Boss", a "Hugo Bos" és a "Huggo Boss" esetében. A "Hugo Boss Ltd" azonban a végén található LTD miatt nem fog megfelelni a másiknak. Ez a technika jól működött a homályos megfeleltetésnél, ahol dolgozom, és az eredmények hasznosak voltak, amikor keresztneveket és vezetékneveket hasonlítottunk össze az identitás megállapítása érdekében.

Ne feledje, hogy a soundex nem fog működni például a társadalombiztosítási számoknál. Szigorúbb tartománya van egy olyan távolságméréshez képest, mint a szerkesztési távolság.

Valószínűleg letörölhet olyan dolgokat is, mint a "Ltd", "LLC", "Corp", amelyek közösek az adathalmaz üzleti nevei számára. Ez segítene egy soundex illesztési keretrendszerben, mert lerövidíti a húrhosszakat.

Ezenkívül összehasonlíthatná az n betűket, ahogy a thomas ajánlotta a rekord linkelési válaszában, és ez egyszerűsítené a tesztelendő ngrammok számát is.

Itt van a NYSIIS algoritmus:

Az algoritmus, amint azt a New York állam azonosító és hírszerző rendszere:

A Soundex csomagok számos magas szintű programozási nyelven találhatók. Ban ben piton kipróbálhatja a fuzzy csomagot:

Beírhatja az ngrammokat vagy a teljes neveket.

Végül használhatja az üzemmód nevét az adatokban vagy más módszerrel a név mező normalizálására.