Adressabgleich

27/06/2008 - 08:46 von Bjoern | Report spam
Adressabgleich

Moin!

Access 2003 unter WXPPro

Ich habe immer wieder damit zu kàmpfen, dass ich sehr umfangreiche (~500.000
Datensàtze) Adresslisten auf Dubletten prüfen muss. Ich habe also 2 Listen,
bei denen ich nachsehen muss, welche Eintràge der einen Liste in der anderen
bereits drin sind.
Das Problem ist, dass es keine wirklichen Dubletten im Sinne der Definition
sind.

Z.B. ist der selbe Mensch in beiden Listen vorhanden, seine beiden
Datensàtze unterscheiden sich aber in der Schreibweise mancher
Spalteninhalte. Klassische Fàlle sind z.B.:
-Straße einmal mit, einmal ohne Bindestrich: "Lieschen-Müller-Straße" oder
"Lieschen-Müller Straße"
-Straße ausgeschrieben oder abgekürzt: "Lindenstr." oder "Lindenstraße"
-Hausnummer: "Kirschenweg 4a" oder "Kirschenweg 4 a"
-"Strasse" oder "Straße"
-Diese Straßen-'Probleme' lassen sich auch noch beliebig kombinieren
-Umlaute: "Lieschen Müller" oder "Lieschen Mueller"
-Buchstabendreher bei der Erfassung
-...

Eine Herangehensweise ist, dass man nur die ersten paar Stellen der
wichtigsten Attribute betrachtet. Das macht aber dann wieder Probleme in
folgenden Fàllen:
-Viele Straßen fangen mit "Beim" an. Betrachtet man nur die ersten 5 Stellen
(danach folgt ja immer ein Leerzeichen), sind alle diese Straßen gleich
-Es gibt sehr viele Namen mit "Sch" am Anfang. Betrachtet man 4 Zeichen,
gibt es nur noch ein einziges Zeichen, nach dem sich diese Namen
unterscheiden lassen.

Ich habe mir folgende Strategien überlegt, um die Probleme zu umgehen:

Im Prinzip würde ich mir in beiden Tabellen neue Spalten definieren, die
"bereinigte" Versionen der problematischen Attribute enthalten, und diese
Spalten dann als JOIN-Kriterium verwenden

Folgende Fàlle könnte man abdecken:

Namen mit "Sch", Straßen mit "Beim"
Man könnte bei allen Namen, die mit "Sch" anfangen, und allen Straßen, die
mit "Beim" anfagen, die ersten drei bzw. 5 Stellen abschneiden, und nur den
Rest betrachten

Bindestriche, Leerzeichen, Punkte
Ich würde in beiden Listen einfach alle Leerzeichen, Bindestriche, Punkte
etc. rauslöschen, und die einzelnen Bestandteile zusammenschieben.
Sowohl "Lieschen-Müller-Straße 4 a", "Lieschen Müller Straße 4a",
"Lieschen-Müller Straße4 a" würde dann zu "LieschenMüllerStraße4a"

Abkürzung der Straße
Man könnte einfach überall die Abkürzung verwendet, also überall "Straße"
und "Strasse" durch "Str" ersetzen. Der umgekehrte Weg, "Str" durch "Straße"
zu ersetzen, wàre wohl nicht ratsam, da es natürlich Straßen gibt, in denen
die Buchstabenfolge "Str" auftaucht. Aus "Strandweg" würde dann "Straßeandweg"

Das Problem mit den Umlauten könnte man dadurch umgehen, indem man einfach
alle Umlaute durch ihre ausgeschreibenen Varianten ersetzt, also "à" durch
"ae" usw.

Kombiniert man die letzten 3 Strategien, hat man schon einiges erreicht:
Für die "Lieschen-Müller-Straße 4a" fallen mir spontan folgende mögliche
Schreibweisen ein (bestimmt gibt's noch mehr):

"Lieschen-Müller-Straße 4a"
"Lieschen-Müller Straße 4a"
"Lieschen Müller Straße 4a"
"Lieschen-Müller-Straße 4 a"
"Lieschen-Müller Straße 4 a"
"Lieschen Müller Straße 4 a"
"Lieschen-Mueller-Straße 4a"
"Lieschen-Mueller Straße 4a"
"Lieschen Mueller Straße 4a"
"Lieschen-Mueller-Straße 4 a"
"Lieschen-Mueller Straße 4 a"
"Lieschen Mueller Straße 4 a"
"Lieschen-Müller-Strasse 4a"
"Lieschen-Müller Strasse 4a"
"Lieschen Müller Strasse 4a"
"Lieschen-Müller-Strasse 4 a"
"Lieschen-Müller Strasse 4 a"
"Lieschen Müller Strasse 4 a"
"Lieschen-Mueller-Strasse 4a"
"Lieschen-Mueller Strasse 4a"
"Lieschen Mueller Strasse 4a"
"Lieschen-Mueller-Strasse 4 a"
"Lieschen-Mueller Strasse 4 a"
"Lieschen Mueller Strasse 4 a"
"Lieschen-Müller-Str. 4a"
"Lieschen-Müller Str. 4a"
"Lieschen Müller Str. 4a"
"Lieschen-Müller-Str. 4 a"
"Lieschen-Müller Str. 4 a"
"Lieschen Müller Str. 4 a"
"Lieschen-Mueller-Str. 4a"
"Lieschen-Mueller Str. 4a"
"Lieschen Mueller Str. 4a"
"Lieschen-Mueller-Str. 4 a"
"Lieschen-Mueller Str. 4 a"
"Lieschen Mueller Str. 4 a"
"Lieschen-Müller-Str 4a"
"Lieschen-Müller Str 4a"
"Lieschen Müller Str 4a"
"Lieschen-Müller-Str 4 a"
"Lieschen-Müller Str 4 a"
"Lieschen Müller Str 4 a"
"Lieschen-Mueller-Str 4a"
"Lieschen-Mueller Str 4a"
"Lieschen Mueller Str 4a"
"Lieschen-Mueller-Str 4 a"
"Lieschen-Mueller Str 4 a"
"Lieschen Mueller Str 4 a"

Alle diese Varianten würden durch Anwendung der drei Verfahren zu
"LieschenMuellerStr4a", und man hàtte schon eine Menge gewonnen.

Diese Strategien habe ich mir selbst überlegt, aber es gibt doch sicher noch
weitere, viel schlauere, die mir jetzt nicht einfallen. Wie geht man z.B. mit
dem Problem der Buchstabendreher um? "Leischen-Mueller-Straße 4a" würde zum
Beispiel durchrutschen.

Freue mich auf Eure Tipps (und sorry für den langen Text)

Danke und viele Grüße,

Björn
 

Lesen sie die antworten

#1 Jens Schilling
27/06/2008 - 09:14 | Warnen spam
Hallo, Bjoern

Bjoern wrote:

Ich habe immer wieder damit zu kàmpfen, dass ich sehr umfangreiche
(~500.000 Datensàtze) Adresslisten auf Dubletten prüfen muss. Ich
habe also 2 Listen, bei denen ich nachsehen muss, welche Eintràge der
einen Liste in der anderen bereits drin sind.
Das Problem ist, dass es keine wirklichen Dubletten im Sinne der
Definition sind.



[ Snip ]

Freue mich auf Eure Tipps (und sorry für den langen Text)



Es gibt nur eine (halbwegs) zuverlàssige Methode - Handarbeit.

Aber da dieses Thema nicht zum ersten Male hier diskutiert wird, lies doch
einmal selbst in diesen Threads :

http://groups.google.com/group/micr...ing=d&

Du wirst dabei feststellen, dass Dir der eine oder andere Gedanke noch
gefehlt hat ( Soundex als Stichwort ) .

Gruss
Jens
______________________________
FAQ: http://www.donkarl.com

Ähnliche fragen