Kanonnen! Delta records van het telefoonboek verspreiden, u kwam tijdig in het veranderingsproces en gaat uw ambitie daadwerkelijk realiseren!
Het of een telefoonboek? Het telefoonboek. Alsof wij ooit verzaakten maar bij het heengaan van foondump.nl na 11 jaar nog eenmaal een hoera voor ‘foondump.exe’ - voor vrienden ook ‘fd05-csv.exe’:
[D:\Projecten\Cdfoon\Foondump\ZM201501]..\foondump-v515\fd05-csv ..\Data w
Klaar met dumpen. 4381085 vermeldingen gedumpt in 20 seconden.
Controle:
[D:\Projecten\Cdfoon\Foondump\ZM201501]wc -l white_subscriber.txt
4381086 white_subscriber.txt
Krijg nou wat, 4381086 in plaats van 4381085 vermeldingen. Checken:
[D:\Projecten\Cdfoon\Foondump\ZM201501]head white_subscriber.txt
1;;;; Allianz Global Assistance;Poeldijkstraat;4;1059VM;Amsterdam;0205929898;
2;;H P;;Anthonia;Van Ostadestraat;111;2526ER;'s-Gravenhage;0703898769;
3;;Mhand;; Azough;Groepstraat;92;3081SL;Rotterdam;0107952478;
4;;J Zn M;;Bakker;Hoofdstraat;137;2171BA;Sassenheim;0252213520;
5;;;; BoscafÚ Het Maasdal;Tienrayseweg;10/B;5961NL;Horst lb;0773970334;
6; ....
Andere controle:
[D:\Projecten\Cdfoon\Foondump\ZM201501]sort -t ; -n white_subscriber.txt|head -n 2
;John F Kennedyplantsoen;4;2252ER;Voorschoten;0627196088;
1;;;; Allianz Global Assistance;Poeldijkstraat;4;1059VM;Amsterdam;0205929898;
De echte regel nr. 1 komt na hem, hij is een id- en naamloos iemand:
id lastname streetname housenumber postalcode city phone
-- -------- John F Kennedyplantsoen 4 2252ER Voorschoten 0627196088
Bij DTG-GG kan je tegenwoordig ook op nummer zoeken, proberen dit record aan te vullen met een query voor “06-27196088”:
Voor een vrijblijvend advies kunt u altijd contact met ons opnemen:
Soekhoe Installatietechniek<.
Hij blijkt als bedrijf wel degelijk onder zichzelf en tussen andere Soekhoe’s in deze gids te staan:
[D:\Projecten\Cdfoon\Foondump\ZM201501]grep -C 5 0627196088 white_subscriber.txt
3483385;;V;;Soekhoe;Groen van Prinstererstr;11;7844LR;Veenoord;0591554459;
3483386;;V K;;Soekhoe;Hildebrandstraat;105;2524VE;'s-Gravenhage;0702207201;
3483387;;W;;Soekhoe;Jukelburd;9;9247EM;Ureterp;0512303915;
3483388;;W;;Soekhoe;John F Kennedyplantsoen;4;2252ER;Voorschoten;0718870901;
3483389;;;;Soekhoe Installatietechniek<
;John F Kennedyplantsoen;4;2252ER;Voorschoten;0627196088;
3483390;;R K;;Soekhoe;Hekelingenstraat;75;2729BH;Zoetermeer;0650265131;
3483391;;S;;Soekhoe-Lachminarain;Schermerstraat;15;2533HA;'s-Gravenhage;0703291633;
Eenvoudig om in het csv-bestand te repareren maar niet eerder vertoond, id = 0.
Hulp van buiten, Claude E. Shannon:
Entropie
De mathematische communicatietheorie ziet de berichtenbron als een ergodisch proces, een proces waarbij een rij symbolen wordt gevormd die tot op zekere hoogte onvoorspelbaar zijn.
Nu even met het hele spul naar Microsoft Office en dan verder kijken. Oneliner maar past niet:
CreateObject("DAO.DBEngine.36") _
.CreateDatabase("foondump_white.mdb",";LANGID=0x0409") _
.Execute "SELECT * INTO white_subscriber " _
& "FROM [Text;Database=.].[white_subscriber.txt]"
Ook Shannon, the toss of a biased coin, stel ik negeer niet die ene ‘id’ maar alle id’s?
Zakt de soufflé toch een beetje in. Want eenmaal in de database ‘SELECT DISTINCT’ doen op alles in de nieuwe tabel ‘white_subscriber’ behalve dan kolom ‘id’ levert 4306919 unieke vermeldingen, niet de 4381085 waar het mee begon.
Reken maar uit, dat waren dan 4381085 minus 4306919 loze DTG-vermeldingen ter waarde € 1086,58 inclusief btw.
Vanwaar dit verschil? Veel bijna lege records met alleen iets erin dat op een netnummer lijkt maar met een extra “0”, bijvoorbeeld 0010 0020 006 ... 00900
, nieuwe nummers als 0085 0087 0088
en “overheid”, 0112 014010 014040 ... 0144
.
Heel soms staat er dan ook nog iets in kolom ‘category’, bijv. “JUW05”. Het laatstgenoemde veld ook maar uitsluiten dan:
SELECT TOP 5 Count(*) FROM white_subscriber
GROUP BY alles behalve 'id' en 'category' ORDER BY Count(*) DESC;
Dit zijn ze dan:
aantal lastname streetname housenumber postalcode city phone
2906 0020
2553 0010
2466 006
2460 0070
2217 Ongediertebestrijding Rentokil 08006643343
Rentokil moet dan wel steeds 50 keer in elk van de ca. 40 papieren regiogidsen opgenomen zijn?
Daardoor neemt het aantal gevallen waarin sprake is van een liquidatie dan ook spectaculair toe?
In de wat lagere regionen veel thuiszorgorganisaties die misschien wel extra betalen om maar goed bereikbaar te zijn:
aantal lastname streetname housenumber postalcode city phone
162 Tzorg Hettenheuvelweg 4/6 1101BN Amsterdam 0206602060
141 Tzorg Broekheurnerplein 4 7544NZ Enschede 0534751820
129 Tzorg Laan van Westenenk 130 7336AV Apeldoorn 0555995977
96 Tzorg Geusseltweg 65/D 6225XS Maastricht 0433633108
94 Tzorg Druivenstraat 3 4816KB Breda 0765714465
Daaronder pas “diensten”:
aantal lastname streetname housenumber postalcode city phone
39 Belastingdienst 08000543
33 Veiligheidsregio Rotterdam-Rijnmond Brandweer 0104468900
21 GGD Rotterdam-Rijnmond Vliet 2 3224HE Hellevoetsluis 0104339966
20 Brandweer Boerendijk 34 3442AH Woerden 0888782300
16 Brandweer Dwarsweg 40 3241LB Middelharnis 0187488175
Behalve deze meervoudig vermelde organisaties zijn er ook nog eens vermeldingen met wel hetzelfde telefoonnummer maar waarin met de tenaamstelling geschoven is:
Fotografie Strack Jeroen Westfrankelandsestraat 134 3117AX Schiedam 0102730034
Strack Fotografie Jeroen Westfrankelandsestraat 134 3117AX Schiedam 0102730034
Ook weer vanwege het zoeken in papieren gidsen, in dit geval kan dit dan zowel onder “F” als onder “S”.
Om die vermeldingen ook met elkaar te kunnen vergelijken kan ik in Access het volgende procedé op het betrokken ‘lastname’-veld toepassen:
Function doSort(s)
Dim t() As String
t = Split(s)
WizHook.SortStringArray t
doSort = Join(t)
End Function
Op die manier worden de Jeroens in op telefoonnummer als dubbel gesorteerde vermeldingen weer Strack:
id sortedname lastname phone
1156211 Fotografie Jeroen Strack Fotografie Strack Jeroen 0102730034
3605770 Fotografie Jeroen Strack Strack Fotografie Jeroen 0102730034
Bovenop dat aantal echte dubbele vermeldingen dus nog eens een stuk of tienduizend vermeldingen van het slag oogmeting, wat ziet u hier, “Bert Kok Optiek” of “Optiek Kok Bert”. Bijpassende matrix:
Tweede bril gratis
Gratis tweede bril
Ga ik even voorbij aan de kwaliteit van de adresgegevens? Die bijvoorbeeld vergelijken met de landelijke basisregistratie adressen is een hoofdstuk apart.
Deze zgn. BAG is beschikbaar vanaf 2011 maar dat mocht niet baten voor een in De Telefoongids opgenomen adres als dit:
lastname streetname housenumber postalcode city phone
Buurt Uitleen Speelgoed 2e Reserveboezemstraat 42/B 3034VV Rotterdam 0102136351
De betreffende straatnaam werd al aan het begin van die periode ingetrokken:
De straten van Rotterdam
2e Reserveboezemstraat, officiële straatnaam van de gemeente Rotterdam bij beslissing van B&W sinds 17 mei 1918. De straat is in 2010 ‘opgehouden’ te bestaan.
versbeton.nl - voor de hardwerkende Rotterdammer - 4 juli 2013
DTG zal volhouden dat het afhankelijk is van de gegevens die providers leveren.
In dat geval, is dit dan ook foute invoer of wat:
firstname lastname
Zwaan Dick
Zwaan Ed
Zwaan Albert
Zwaan Cor
Zwaan Vincent
...
Zwier Robert
Zwier Harry
Of dit:
firstname infix lastname
Don Don
Kean van Kean
Marc Marc
Rachid Rachid
Toy Toy
Families die destijds door Napoleon voor het blok gezet werden, neem een achternaam, kan niet schelen welke of anders …
aantal infix lastname city
77 van Dongen Dongen
43 van Urk Urk
25 van Oss Oss
23 vd Made Made
20 van Rosmalen Rosmalen
Overtreffende trap, deze mensen hebben het helemaal voor elkaar, achternaam, straat- en plaatsnaam identiek:
id firstname infix lastname streetname housenumber postalcode city phone
957942 R van Driehuizen Driehuizen 20 1844KK Driehuizen 0299673036
3842669 K Veeningen Veeningen 45 7924PH Veeningen 0528391209
Suck-n-duck, deze vermelding staat er ook nog steeds tussen:
id firstname lastname streetname housenumber postalcode city phone
4129084 A T G M Weegbreepad Weegbreepad 8 6596AX Milsbeek 0485514129
Dhr. of mevr. Weegbreepad, zou ook een spookvermelding kunnen zijn die DTG er met opzet tussenzet:
id firstname lastname streetname housenumber postalcode city phone
3690134 Test IPFREE Herikerbergweg 88 1101CM Amsterdam 0204086190
Vakantiepret met spooknummers:
grep -f vingerafdrukken.txt *_subscriber.txt > spooknummers.txt
In “vingerafdrukken.txt” staan dan termen die DTG eerder in die namaakvermeldingen heeft gebruikt:
[0-9]+;[^;]*;[^;]*\.;
Condensatorweg;54/B;10
Herikerbergweg;88
Condensatorweg;54;10
Delflandlaan;15;10
;88;1101CM
Postbus;77863
;0202433613;
;02040861
;0204086180;
;02040864
;0204086400;
;0204086418;
;020408677
;0206225963;
;0206232113;
;0206855880;
;0302551460;
;0302559111;
;0306953666;
;0317620327;
;0610195936;
;06511345087;
;1014AX;
;1070LL;
;Testvermelding
Gewone vermeldingen met daarin “De Telefoongids”, “Telefoongids De” en “DTG” komen dan ook mee, die zou je nog kunnen uitsluiten.
Maar Jan Marco, tegen de tijd dat jij je project op poten hebt is dit ding van DTG wel gedoemd om zelf een spookgids te worden?