Hoe meisjesnamen negeren? (Nederlands probleem).

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 29-05 15:45
Dit is typisch een Nederlands probleem. Om die reden steek ik m'n licht hier op. Tussenvoegsels als "Van der", etc. zijn gebruikelijk in Nederland. In het buitenland zie je het niet vaak. Ik heb een PHP script ontwikkeld, welke kan detecteren of er een tussenvoegsel in een achternaam zit.

De PHP-script kan twee dingen doen:

1. Een achternaam retourneren, en een lege string dat de tussenvoegsel is.
2. Wanneer er een tussenvoegsel in achternaam bevindt, kan de tussenvoegsel uit achternaam gestript worden, en een achternaam (zonder tussenvoegsel) en tussenvoegsel retourneren.

Hoe de logica hierachter in elkaar zit? Een array bevat alle mogelijke varianten van tussenvoegsels.

De achternaam wordt vergeleken met de mogelijke matches in array. Wanneer er een positief resultaat is, wordt er gekeken bij welk positie van achternaam een positief resultaat (met de array van tussenvoegsels) oplevert, en daaruit de achternaam in twee delen gesplitst. Namelijk tussenvoegsel en achternaam.

In de dataset bevinden er echter ook achternamen als "Janssen Van der Bilt". Dan ontstaat er ook een match, en krijg ik als tussenvoegsel "Van der" en achternaam "Bilt" terug, wat niet de bedoeling is.

Ik heb gedacht om de vergelijking in match te laten beeïndigen bij de eerste spatie, maar dan loop je weer tegen het probleem aan dat sommige tussenvoegsels als "Van der" uit spaties kunnen bestaan.

Tevens zijn er ook achternamen in de dataset aanwezig die "Janssen-Van der Bilt" zijn, zodat match op spaties hier ook niet geheel opgaat.

Ik worstel dus met dergelijke uitzonderingen, en sta open voor manieren om hiermee om te gaan.

Alle reacties


Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 06-06 15:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dit heeft overigens in z'n geheel niets met meisjesnamen. En spaties mogen ook, al wordt dat afgeraden.
Aan een gecombineerde achternaam alléén is niet te zien of het om een man of een vrouw gaat, en ook niet welke van de twee achternamen de geboortenaam is en welke de 'aangetrouwde'. Alle combinaties zijn namelijk denkbaar. Stel dat de heer of mevrouw Oudewater getrouwd is met de heer of mevrouw Simons, dan kunnen zij elk in het dagelijks leven naar eigen inzicht kiezen uit een van de volgende namen:

Simons
Oudewater
Simons-Oudewater
Oudewater-Simons

[ Voor 58% gewijzigd door .oisyn op 19-04-2017 18:45 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • +1 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kun je, met behulp van wat voorbeeldinput en -output, laten zien welk probleem je probeert op te lossen?

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • +3 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Wat is je use case? Dit moet je volgens mij helemaal niet willen want je gaat zoveel verschillende uitzonderingen tegen komen dat het niet betrouwbaar gaat zijn.

Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Cartman! schreef op woensdag 19 april 2017 @ 18:48:
Dit moet je volgens mij helemaal niet willen want je gaat zoveel verschillende uitzonderingen tegen komen dat het niet betrouwbaar gaat zijn.
Dit kan ik beamen; ik heb hier een document liggen hoe de NID dat doet (heb er een project mee gedaan) maar dat is, helaas, overal voorzien van "vertrouwelijk". Ik kan je wél verklappen dat hier niet tegenaan te automatiseren valt (lees: bij ambiguïteit zijn er mensjes daar die dat handmatig 'corrigeren').

Een passage die ik wel wil quoten:
Over Namen zou een boek met uitzonderingen geschreven kunnen worden. Dat gaat echter voorbij aan het doel van deze [...] beschrijving. Zowel de vorige als ook de komende hoofdstukken van deze handleiding zijn inhoudelijk eenvoudig in vergelijking tot de complexiteit rond Namen. In de multi-culturele Nederlandse samenleving zijn er meer uitzonderingen dan regels rond Namen te bedenken.
Trust me: dit ga je nooit 100% (of ook maar in de buurt ervan) goed krijgen ;)
Hatsieflatsie schreef op woensdag 19 april 2017 @ 18:11:
Een array bevat alle mogelijke varianten van tussenvoegsels.
Als ik kijk naar de basis lijst kom ik op 14 tussenvoegsels als "van der", maar dan tel ik alle mogelijke permutaties ("v.d.", "v/d", "vd", "v d" etc.) nog niet eens mee (en die (complete) lijst heb ik overigens ook niet) ;) En hou je ook rekening met grapjes als "van Voorst tot Voorst" of "van Oldenbarneveld gen Tullingh" of "Voorst tot Voorst-Vennegoor of Hesselink"?

[ Voor 18% gewijzigd door RobIII op 19-04-2017 19:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12:15

Creepy

Tactical Espionage Splatterer

* Creepy moet elke keer weer denken aan iemand die als achternaam "Godoy van de Velde" heeft... tis een man voor de duidelijkheid ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • +8 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 06-06 20:37

P_Tingen

omdat het KAN

Ik MOET hier gewoon even linken naar deze fan-tas-tische post over foute aannames over namen:
http://www.kalzumeus.com/...mers-believe-about-names/

... en gaat over tot de orde van de dag


Acties:
  • +1 Henk 'm!

  • DutchKel
  • Registratie: Mei 2002
  • Laatst online: 06-06 22:02
Ik kan in het kort zeggen hoe wij de namen op ons werk opslaan:
-Voorletters
-Voornaam
-Tussenvoegsels
-Achternaam
-Tussenvoegsels partner
-Achternaam partner
-Keuze van de medewerker over hoe de achternaam weergegeven moet worden met de volgende opties: Achternaam, Achternaam - Achternaam partner, Achternaam partner - Achternaam, Achternaam partner

Dit dekt overigens niet de volledige lading, daar waar het mis gaat moeten we creatief denken en geloof mij, met een internationaal bedrijf gaat het gegarandeerd vaker dan 1 keer mis (vooral chinezen hebben lastige namen en vaak ook dezelfde voor en naam).

Don't drive faster than your guardian angel can fly.


Acties:
  • +1 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

De oplossing: de gebruiker zelf de velden juist in te laten vullen.

Maar belangrijk is om je doel precies te omschrijven. Hoewel het in Nederland gebruikelijk is om te sorteren op de eerste letter van de achternaam ná het voorvoegsel, kan je dit eigenlijk alleen goed laten werken als je het gedeelte waar niet op gesorteerd moet worden in een los veld op slaat. (handmatig).

Hoe ga je er mee om als ik mijn kindje Van de Vries noem. of Don Jansen. Terwijl het bij Elle don Bosco weer een tussenvoegsel is. Het is gebruikelijk om Voornamen of Achternamen met een - aan elkaar te knopen. Marie-Louise de Vries-Jansen. Maar doopnamen worden weer los geschreven. Robertus Maria Don Jansen-de Vries. En dan zijn er altijd nog mensen die prof. Robertus Maria Don Jansen-de Vries Jr. invullen.

Heb jij toch fijn Don in het tussenvoegsel veldje geplant.

De verantwoordelijkheid voor de naam moet bij de eigenaar liggen. Maar dan moet je hem wel de opties geven.

👑


Acties:
  • +3 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Nu online

The Eagle

I wear my sunglasses at night

In een gemiddeld systeem los je dit meestal procedureel op. Zolang iedereen het op de zelfde manier invoert kan het niet mis. Helaas is dat ook net zo vaak een utopie ;)

Heb een paar jaar terug een klus gehad waarbij ik in een Europees ERP HR systeem 7 landen moest opnemen. Inclusief alle voorkomende naamvelden en op de juiste manier. Dus ook titel, voor- en tussenvoegsels bij achternamen, meisjesnamen, namen na trouwen, tweede namen (Spanje bijvoorbeeld heeft dat) en ook cateren voor naamswijzigingen na bijv trouwen of scheiden.
Klein voorbeeldje:
Baronesse Prof. Dr. Ir. Johanna Wilhelmina Cornelia Maria van Voorst - van Zwieten tot Altena meergenoemd Van der Velden - De Cock Buning. Roepnaam Janneke.

En ja, zoiets kan prima. Enige waar ik in bovenstaande niet zeker van ben is hoe om te gaan met de titel. Succes met je php script :P

Zit een heleboel logica achter, meer dan je ooit wilt zien, en dan nog heb je procedures nodig om er goed mee om te gaan. Uittreksel uit bevolkingsregister of een trouwcertificaat oid. Want terugdraaien is ook zoiets. Erg leuk trouwens, in de US is het niet toegestaan dat een man wanneer hij trouwt de achternaam van zijn vrouw aanneemt. Hier kan en mag dat gewoon en heb je dus een naamswijziging. Dus een "meisjesnaam" bij een man. Tot zover je logica om dat aan het geslacht te verbinden ;)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • +1 Henk 'm!

  • naitsoezn
  • Registratie: December 2002
  • Niet online

naitsoezn

Nait Soez'n!

Hoezo een Nederlands probleem? Hoe ga je dan met een willekeurige naam uit Azië om? Of namen van adel (om de Oranjes maar als niet-nederlands voorbeeld te nemen :P )? Of willekeurig andere namen die om wat voor reden dan ook niet te vangen zijn in *voornaam* *voorvoegsel* *achternaam*?

't Het nog nooit, nog nooit zo donker west, of 't wer altied wel weer licht


Acties:
  • +4 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

De hele reden waarom de gebruikersnaam is uitgevonden. Heerlijk, 1 veld. Waar de gebruiker een zelfgekozen naam kan invullen. Heb je van dat hele gedoe geen last.

Edit: En toen bedachten ze UTF-8. Zodat iedereen zijn naam kon invullen in z'n eigen schrift. En krijg je problemen als https://www.epic.com en https://www.xn--e1awd7f.com/

[ Voor 35% gewijzigd door ajakkes op 19-04-2017 22:30 ]

👑


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 12:03
Het is problematisch, bijv: Lucas Maillette de Buy Wenniger. In het voorbeeld van de TS gaat het hier waarschijnlijk niet goed. Denk dat je er van uit moet gaan dat mensen hun eigen naam (hopelijk) goed invullen. Het ligt er ook aan wat je uiteindelijke doel is :).

My favorite programming language is solder.


Acties:
  • +1 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 12:35
Herkenbaar probleem. Ik zou er geen tijd in steken want 100% goed ga je het nooit krijgen. En wie is dan verantwoordelijk? Juist, jij. Kan jij weer in de database die ene naam aan gaan zitten passen...
Dus in geval van in eigen beheer: invul formulier op de website (of whatever) aanpassen, of bij levering door derden het lekker bij hun leggen.

[ Voor 26% gewijzigd door sig69 op 20-04-2017 01:25 ]

Roomba E5 te koop


Acties:
  • +1 Henk 'm!

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Hatsieflatsie schreef op woensdag 19 april 2017 @ 18:11:
In de dataset bevinden er echter ook achternamen als "Janssen Van der Bilt". Dan ontstaat er ook een match, en krijg ik als tussenvoegsel "Van der" en achternaam "Bilt" terug, wat niet de bedoeling is.

Ik heb gedacht om de vergelijking in match te laten beeïndigen bij de eerste spatie, maar dan loop je weer tegen het probleem aan dat sommige tussenvoegsels als "Van der" uit spaties kunnen bestaan.
Los van alles hierboven; heb het idee dat je vraag simpeler bedoelt is dan wordt besproken. Als het je enkel gaat om de eerste match, strpos() === 0, klaar?

I'm really easy to get along with, once you people learn to worship me...


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Kut. Niet. Met namen.

Seriously. Je kunt dit letterlijk alleen maar fout doen.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Gaius
  • Registratie: September 2001
  • Niet online
Een betere vraag is denk ik: Waarom moet je weten of er een tussenvoegsel in de achternaam zit?

Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 06-06 15:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gaius schreef op donderdag 20 april 2017 @ 08:52:
Een betere vraag is denk ik: Waarom moet je weten of er een tussenvoegsel in de achternaam zit?
Om beter te kunnen sorteren. Van Hoorn sorteert nog altijd bij de H, niet de V.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 06-06 16:28
Er zijn zelfs namen zoals "In der Maur" als hele achternaam. "In der" is hierbij dus géén voorvoegsel. Of iemand met 'Van' als voornaam (vrij normale naam in Vietnam). Succes :+

Acties:
  • 0 Henk 'm!

  • skoozie
  • Registratie: September 2004
  • Laatst online: 06-06 15:20

skoozie

SCSI

En ik erger mij er aan dat ik volgens Amerikanen bv 'Devries' heet ipv 'de Vries' of dat zelfs enkel 'Vries'. als je gaat splitsen op tussen voegsel is 'el' (Arabische namen) ook een tussenvoegsel, of 'mc' (Schots/Iers/Amerikaans)?
en vind je 'op 't' (hof) of 'in 't' (veld) ook een tussenvoegsel?
ik vind het dan ook niet vervelend om mijn naam tussen de D te zoeken in een lijstje...

Diablo 3 | pc | Z.O.Z


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Zet anders gewoon een apart tussenvoegsel veld ertussen. Afgaande op wat er al is gezegd, denk ik niet dat je hiermee meer fouten oplost dan dat je ermee creëert.

Acties:
  • 0 Henk 'm!

  • Gaius
  • Registratie: September 2001
  • Niet online
.oisyn schreef op donderdag 20 april 2017 @ 08:58:
[...]

Om beter te kunnen sorteren. Van Hoorn sorteert nog altijd bij de H, niet de V.
Maar welk probleem lost dat op? Voor snel zoeken naar namen heb je andere oplossingen dan je data te transformeren op basis van allerlei aannames.

En als het echt om sortering gaat, zou ik kijken of je het op kunt lossen in het datamodel, aparte velden opnemen voor tussenvoegsel en achternaam, en de aanname doen dat de ingevoerde data klopt.

Acties:
  • 0 Henk 'm!

  • Destiny
  • Registratie: December 2002
  • Laatst online: 08:52
Ik denk dat je nog een ander probleem hebt. Hoewel het niet veel voorkomt zijn er ook mensen met een dubbele achternaam. (zoals Kammerlingh Onnes).Die zou je script moeten uitsluiten.

In de toekomst zou dit zelfs vaker kunnen gebeuren omdat het wellicht mogelijk wordt dat kinderen de achternaam van beide ouders kunnen aannemen (en dus een dubbele achternaam krijgen). Deze wet is er echter nog niet door.

[ Voor 38% gewijzigd door Destiny op 20-04-2017 09:40 ]


Acties:
  • +1 Henk 'm!

  • Low-Tech
  • Registratie: December 2001
  • Laatst online: 04-06 22:32
[beetje offtopic] Wat leesvoer betreffende namen: http://www.kalzumeus.com/...mers-believe-about-names/

Fractal Design Meshify S2, Asus ROG B550-F, AMD 3700x, 3080?, Corsair H115i Pro, G-Skill 3600-16 32GB Trident Z Neo


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 06-06 15:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gaius schreef op donderdag 20 april 2017 @ 09:14:
[...]


Maar welk probleem lost dat op?
Presentatie?
En als het echt om sortering gaat, zou ik kijken of je het op kunt lossen in het datamodel, aparte velden opnemen voor tussenvoegsel en achternaam, en de aanname doen dat de ingevoerde data klopt.
Thanks, captain hindsight! Als de TS een dergelijk datamodel had dan zat ie nu niet te kutten met detectie ;).

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 06-06 17:37
ajakkes schreef op woensdag 19 april 2017 @ 22:22:
[..]
Edit: En toen bedachten ze UTF-8. Zodat iedereen zijn naam kon invullen in z'n eigen schrift. En krijg je problemen als https://www.epic.com en https://www.xn--e1awd7f.com/
Zo.. meteen maar even mijn browser geupdate. Thanks for that! ;)

*sowieso


Acties:
  • +1 Henk 'm!

  • Gaius
  • Registratie: September 2001
  • Niet online
En wat wil je bereiken met de presentatie van die gegevens? Alleen "presentatie" is geen probleem dat om een dergelijke oplossing vraagt.
Thanks, captain hindsight! Als de TS een dergelijk datamodel had dan zat ie nu niet te kutten met detectie ;).
Problemen in je datamodel moet je niet oplossen in je UI.

Acties:
  • 0 Henk 'm!

  • maniak
  • Registratie: Augustus 2000
  • Laatst online: 05-06 13:27
Zal je nog een leuke meegeven: adellijke titels. Wij hadden een collega die Jonkheer is, hij was altijd een goeie test of de systemen goed werkten ;)

Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 06-06 15:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gaius schreef op donderdag 20 april 2017 @ 10:46:
[...]


En wat wil je bereiken met de presentatie van die gegevens? Alleen "presentatie" is geen probleem dat om een dergelijke oplossing vraagt.
Het ging helemaal niet om "een dergelijke oplossing". Jij vroeg waarom je ooit zou willen weten wat de tussenvoegsels waren, ik kwam met een voorbeeld. Dan kun je wel zeggen dat dat in je datamodel hoort, en hoewel ik het er daarmee eens ben, is het een beetje mosterd na de maaltijd als je nu over een model beschikt waarin het nog niet zit. Er moet dus een conversie plaatsvinden.
Problemen in je datamodel moet je niet oplossen in je UI.
Compleet irrelevante opmerking. De vraag van de TS is algoritmisch van aard. In welke laag je het ook oplost, je komt er niet omheen dat voor een aanpassing van je datamodel, je wellicht alsnog een geautomatiseerde conversie voor ogen hebt.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • +2 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 06-06 21:51

RM-rf

1 2 3 4 5 7 6 8 9

Destiny schreef op donderdag 20 april 2017 @ 09:38:

In de toekomst zou dit zelfs vaker kunnen gebeuren omdat het wellicht mogelijk wordt dat kinderen de achternaam van beide ouders kunnen aannemen (en dus een dubbele achternaam krijgen). Deze wet is er echter nog niet door.
het is niet eens nodig dat nederland deze wet krijgt, dat bv de spaanse naamswetgeving bestaat, die dat standaard heeft betekent dat mensen die spaanse staatsburger zijn dit ook nu al als naam hebben en deze naam ook in nederland geld.
Ook als je met een persoon uit een ander land trouwt kun je ook nu al onder de nederlandse burgerlijke wetgeving buitenlands naamrecht zelf laten toepassen.

Een voorbeeld is (was) bv de nederlands-spaanse actrice Yolanthe Cabau van Kasbergen (nu genaamd Sneijder-Cabau), die in spanje geboren is..
Voor haar huwelijk was ook in nederland haar officiele burgerlijke naam eentje met twee achternamen (en ik vermoed dat nu in sommige officiele documenten waarin ook de geboortenaam vermeld moet worden, ze vermeld moet worden als "Yolanthe Sneijder-Cabau, geboren Cabau van Kasbergen".


Ik denk dat je heel erg moet oppassen met te denken dat je formaten van naamsgeving zomaar automatisch kunt detecteren en hooguit 'een paar uitzonderingen' moet afvangen..
persoonlijk denk ik eerder dat je het andersom moet zien, een ingevulde naam is veelal enkel een presententionale waarde die je nooit mag gebruiken om op te koppelen en je beter verder niet kunt pogen te ontleden

[ Voor 14% gewijzigd door RM-rf op 20-04-2017 11:22 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • +1 Henk 'm!

  • Gaius
  • Registratie: September 2001
  • Niet online
.oisyn schreef op donderdag 20 april 2017 @ 11:00:
[...]

Het ging helemaal niet om "een dergelijke oplossing". Jij vroeg waarom je ooit zou willen weten wat de tussenvoegsels waren, ik kwam met een voorbeeld. Dan kun je wel zeggen dat dat in je datamodel hoort, en hoewel ik het er daarmee eens ben, is het een beetje mosterd na de maaltijd als je nu over een model beschikt waarin het nog niet zit. Er moet dus een conversie plaatsvinden.
"presentatie" is zo'n volstrekt algemene term, daar kun je niks mee. Als je iets aan het programmeren bent zit er een doel achter. Een probleem dat opgelost moet worden. Je laat gegevens zien omdat de gebruiker er iets mee moet kunnen.

Het kan prima zijn dat die namen voor wat de gebruiker er mee moet correct gesorteerd moeten zijn en dat daarvoor de tussenvoegsels eruit moeten. Het kan ook zijn (bijvoorbeeld) dat er na een bepaalde actie nog 3 namen over zijn waarbij de sorteren puur cosmetisch is, maar geen enkele praktische waarde toevoegt. En dan is het de vraag of je de uren die nodig zijn om dit goed op te lossen er überhaupt aan moet besteden.
Compleet irrelevante opmerking. De vraag van de TS is algoritmisch van aard. In welke laag je het ook oplost, je komt er niet omheen dat voor een aanpassing van je datamodel, je wellicht alsnog een geautomatiseerde conversie voor ogen hebt.
Nee, de vraag van de TS is hoe je het beste tussenvoegsels van achternamen kunt scheiden. Een algoritme is een manier om dat op te lossen, al is het gezien alle uitzonderingssituaties maar de vraag of dat mogelijk is. Een andere manier is om dat bij de bron te doen: het datamodel. En indien dat nog mogelijk is (weten we niet), dan heb je dat algoritme helemaal niet nodig om het probleem op te lossen.

Mocht aanpassing van het datamodel niet mogelijk zijn, heb ik de oplossingsrichting "Reguliere expressies" nog niet gezien trouwens. :P

Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 06-06 15:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gaius schreef op donderdag 20 april 2017 @ 11:19:
Het kan prima zijn dat die namen voor wat de gebruiker er mee moet correct gesorteerd moeten zijn en dat daarvoor de tussenvoegsels eruit moeten.
Fijn, dan zijn we het dus eens.
Nee, de vraag van de TS is hoe je het beste tussenvoegsels van achternamen kunt scheiden. Een algoritme is een manier om dat op te lossen
Ik hoop dat je zelf realiseert dat je zojuist twee keer hetzelfde zei ;). Een algoritme is het antwoord op de vraag van de TS. Dat maakt de vraag van de TS dus algoritmisch van aard, zoals ik al zei.

Óf het mogelijk is, is een tweede, maar dat maakt de vraag van de TS niet minder valide.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • +1 Henk 'm!

  • Gaius
  • Registratie: September 2001
  • Niet online
.oisyn schreef op donderdag 20 april 2017 @ 11:37:
[...]

Fijn, dan zijn we het dus eens.


[...]

Ik hoop dat je zelf realiseert dat je zojuist twee keer hetzelfde zei ;). Een algoritme is het antwoord op de vraag van de TS. Dat maakt de vraag van de TS dus algoritmisch van aard, zoals ik al zei.

Óf het mogelijk is, is een tweede, maar dat maakt de vraag van de TS niet minder valide.
Prima dat je er zo over denkt, maar ik vind de vraag waarom je uren wilt besteden aan een imperfecte oplossing die met iedere uitzonderingssituatie complexer en dus foutgevoeliger wordt veel interessanter.

Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Hou je er ook rekening mee dat mensen uit bepaalde landen bij "firstname" hun achternaam invullen en bij "lastname" hun voornaam.
Gewoon omdat dat in die landen zo is.
Tja, dan had je maar "givenname" en "surname" moeten gebruiken.

Niet de hele wereld is door Napoleon veroverd :)

[ Voor 14% gewijzigd door DJMaze op 20-04-2017 12:01 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • +1 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 11:35
Ik heb een dergelijke migratie ook eens gedaan met een oude database met enkele honderduizenden records. Inclusief dubbelingen... Hel. Zonder meer.

Belangrijke vraag aan TS: wat is je huidige input? Is dat een complete naam, of een achternaam inclusief tussenvoegsels? Je spreekt over het laatste, en dan kun je natuurlijk simpelweg kijken of de waarden in de tussenvoegsels-array aan het begin van de string staan. Dat maakt het verhaal natuurlijk een heel stuk simpeler.

Tjolk is lekker. overal en altijd.


Acties:
  • +1 Henk 'm!

  • PetervdM
  • Registratie: Augustus 2007
  • Niet online
áls je het al in de UI wil oplossen: dwing bij invoer één hoofdletter af, en sorteer op het betreffende woord.
zoals gezegd, je doet het nóóit goed. er zijn teveel uitzonderingen op uitzonderingen van uitzonderingen ...
heb mijn grote teen hier al eens 35 jaar geleden aan bezeerd met een scholenadministratie pakket .....

ik had daar toen ook een tabel voor, het keerpunt om dat los te laten was de achternaam l'argent. in het frans schrijf je alle achternamen in hoofdletters, maar in een gewone zin kan het ook voorkomen ( l'argent betekent het zilver of het geld ) en dan is het aan het begin van een zin "L'argent". sorteer je dat bij de L of de A?
en wat met het sorteren van IJ? is dat tussen I en J of in de buurt van Y?

[ Voor 39% gewijzigd door PetervdM op 20-04-2017 13:33 ]


Acties:
  • 0 Henk 'm!

  • Puch-Maxi
  • Registratie: December 2003
  • Laatst online: 12:03
Een ander idee: Je zou machine learning kunnen toepassen, gezien je al een dataset hebt. Een deel daarvan handmatig annoteren (IOB2 oid). Om daarmee een model te trainen en deze vervolgens los te laten op nieuwe data. Misschien dat je met Naive Bayes al een heel eind komt. Kun je weer als input gebruiken voor het trainen van een NN (bootstrapping) :P

[ Voor 0% gewijzigd door Puch-Maxi op 20-04-2017 14:17 . Reden: Misschien een beetje vergezocht ;) ]

My favorite programming language is solder.


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
.oisyn schreef op donderdag 20 april 2017 @ 08:58:
[...]

Om beter te kunnen sorteren. Van Hoorn sorteert nog altijd bij de H, niet de V.
Als het een Nederlander is wel, als het een Belg is niet, zie wikipedia. :9

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 11:35
In dat geval is het natuurlijk simpel. Neem hun paspoort in en zet ze over de grens. :+

Tjolk is lekker. overal en altijd.


Acties:
  • +2 Henk 'm!

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 10:22

johnwoo

3S-GTE

KabouterSuper schreef op donderdag 20 april 2017 @ 14:25:
[...]

Als het een Nederlander is wel, als het een Belg is niet, zie wikipedia. :9
En zulke verschillen maken elke poging om met 1 algoritme een (cultureel) gemengde dataset te verwerken, kansloos. Zoals al werd opgemerkt.

In plaats van te focussen op de naamconversie (wat één manier is om je doel te bereiken), kun je ook eens bij het begin beginnen en alleen concentreren op wat je doel nu precies is. Waarom moeten die namen gesplitst worden? Ervan uitgaand dat het doel is om zonder voorvoegsels of meisjesnaam te kunnen sorteren, en dat dit scheiden niet betrouwbaar geautomatiseerd kan, waarom zou je dan niet mensen zelf laten aangeven hoe ze gesorteerd willen worden? Sla de hele conversie over, en sorteer gewoon brutaal op achternaam, maar geef wel een optie waarmee mensen, als ze het daar niet mee eens zijn, zelf kunnen aangeven op welk deel van de achternaam gesorteerd moet worden.

Dit kost je wel een extra veld (sortingName oid), maar een veld toevoegen aan een bestaande grote dataset is eenvoudiger dan bestaande velden proberen te converteren. sortingName stel je initieel in op dezelfde waarde als het achternaam-veld, maar kan (door de betreffende personen zelf, of een medewerker wanneer het duidelijk is hoe er gesorteerd moet worden) gewijzigd worden in elke willekeurige substring van de achternaam (of wellicht enkel op substrings beginnend na een non-alfabetisch karakter om te voorkomen dat "de Vries" gesorteerd wil worden als "ries" ipv "Vries", maar dat kan misschien ook weer problemen geven met onbekende talen waar "alfabetische karakters" anders gedefinieerd kunnen zijn).

Specs | Toyota MR2 Turbo


Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 06-06 15:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

KabouterSuper schreef op donderdag 20 april 2017 @ 14:25:
[...]

Als het een Nederlander is wel, als het een Belg is niet, zie wikipedia. :9
Kijk eens naar de topictitel? :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • +1 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 07:52
.oisyn schreef op donderdag 20 april 2017 @ 14:57:
[...]
Kijk eens naar de topictitel? :P
Ja, dat zegt die nu, maar kan hij echt met 100% zekerheid zeggen dat alle mensen die in het systeem staan Nederlands zijn, of belangrijker, dat alle gebuikers van het systeem Nederlands zijn? Dat niet toevallig stiekem ook een Belg er tussen zit?

Ik zou mij er iig niet aan wagen. Wij slaan tussenvoegsels apart op, los van achternaam om het probleem te verhelpen, maar doen geen 'vertaalslag' als er door een externe applicatie (soms zelf gebouwd) er maar 1 achernaamveld is. Dat is gewoon kansloos om te proberen.

Ik heb overigens nog steeds niet gelezen waarom TS dit nou zou willen doen.

[ Voor 30% gewijzigd door Caelorum op 20-04-2017 15:22 ]


Acties:
  • +1 Henk 'm!

  • MSteverink
  • Registratie: Juni 2004
  • Laatst online: 30-05 00:24
kfaessen schreef op woensdag 19 april 2017 @ 21:53:
Ik kan in het kort zeggen hoe wij de namen op ons werk opslaan:
-Voorletters
-Voornaam
-Tussenvoegsels
-Achternaam
-Tussenvoegsels partner
-Achternaam partner
-Keuze van de medewerker over hoe de achternaam weergegeven moet worden met de volgende opties: Achternaam, Achternaam - Achternaam partner, Achternaam partner - Achternaam, Achternaam partner

Dit dekt overigens niet de volledige lading, daar waar het mis gaat moeten we creatief denken en geloof mij, met een internationaal bedrijf gaat het gegarandeerd vaker dan 1 keer mis (vooral chinezen hebben lastige namen en vaak ook dezelfde voor en naam).
Daarmee zeg je dus dat het tussenvoegsel GEEN deel uitmaakt van de achternaam? Dat kan, maar vervolgens kan de medewerker kiezen hoe de achternaam wordt weergegeven ZONDER het tussenvoegsel. De Vries wordt dus weergegeven als Vries.

Acties:
  • +1 Henk 'm!

Anoniem: 420461

Hatsieflatsie schreef op woensdag 19 april 2017 @ 18:11:Ik worstel dus met dergelijke uitzonderingen, en sta open voor manieren om hiermee om te gaan.
Even teruggaand naar je werkelijke vraag, en zonder alle mogelijke varianten van voornamen en titels waar je niet om vraagt, zou je volgens mij alleen moeten kijken naar die gevallen waar de match op "[tussenvoegsel][spatie]" helemaal aan het begin voorkomt.

Als je je array dan zo hebt ingericht dat je eerst "van der" krijgt, daarna "van de", en daarna weer "van" dan kun je bij de eerste match concluderen dat dat de correcte is.

Het zal hoogstwaarschijnlijk nooit 100% foutloos worden (is grotendeels afhankelijk van hoe consequent de achternamen gevuld zijn), maar het zal heel aardig kloppen.

En de meisjesnaam kun je dan verder negeren, want "van Veen-van der Poel" wordt alfabetisch als V (van Veen) gesorteerd.

Acties:
  • +2 Henk 'm!

  • Xanaroth
  • Registratie: September 2007
  • Laatst online: 06-06 18:07
Mooie uitleg is hier:
https://www.w3.org/International/questions/qa-personal-names


Je moet goed doorlezen, je onderdeel van tussenvoegels komst als voetnoot aan het einde. Er zijn namelijk zoveel problemen met namen en naamgevingen, dat tussenvoegsels eigenlijk niets voorstellen vergeleken bij de echte zooi die je gaat tegenkomen bij het verwerken van namen. Helemaal in de samenleving vandaag de dag.
Oh ja: er staat ook ergens nog een regeltje verstopt over o.a. franse namen, waarvoor een tussenvoegsel geen spatie maar ' typisch is. Voor het geval je nog niet aan opgeven dacht.


Grofweg komt het neer op werken met meerdere invoervelden van wat je wilt weten, er zijn teveel variaties en uitzonderingen om dit neer te kunnen pennen.

[ Voor 95% gewijzigd door Xanaroth op 20-04-2017 16:30 ]


Acties:
  • +1 Henk 'm!

  • DutchKel
  • Registratie: Mei 2002
  • Laatst online: 06-06 22:02
MSteverink schreef op donderdag 20 april 2017 @ 15:30:
[...]


Daarmee zeg je dus dat het tussenvoegsel GEEN deel uitmaakt van de achternaam? Dat kan, maar vervolgens kan de medewerker kiezen hoe de achternaam wordt weergegeven ZONDER het tussenvoegsel. De Vries wordt dus weergegeven als Vries.
Dit is de manier hoe het wordt opgeslagen, er zijn standaard 6 verschillende weergaves gemaakt waarbij rekening wordt gehouden met de keuze van de medewerker over hoe die het 't liefste ziet met partnernaam. Bij de weergaves wordt uiteraard het tussenvoegsel wel erbij gezet. Maar een van de weergaves is bijvoorbeeld: Vries, de, Jan. Sla je de tussenvoegsels niet apart op dan kun je deze samenvoeging niet meer maken want soms hebben mensen echt een dubbele achternaam.

Er is dus een verschil tussen hoe je het moet opslaan en hoe je het moet weergeven.

Edit: ik ken overigens mensen met als achternaam: "Jans - Beken" en nee die zijn niet getrouwd oid. Ook ken ik een man die de naam van zijn vrouw voert en zijn eigen achternaam als 2e achternaam. Beide Nederlands. Kortom een naam is niet te splitsen, je kunt die hooguit samenvoegen als je de onderdelen los hebt.

[ Voor 14% gewijzigd door DutchKel op 20-04-2017 18:32 ]

Don't drive faster than your guardian angel can fly.


Acties:
  • +1 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 06-06 20:37

P_Tingen

omdat het KAN

Het naamprobleem is zó groot dat het algoritmisch en database-technisch eigenlijk niet goed op te lossen is. De pagina http://www.kalzumeus.com/...mers-believe-about-names/ is al twee keer genoemd en ik adviseer je om die eens serieus te lezen, want ook al lijkt die pagina op het eerste gezicht vooral hilarisch, het is helaas wel iets om rekening mee te houden. Er zijn dus gewoon domweg mensen met de meest waanzinnige namen. Of géén naam. Of een situatie-afhankelijke naam, of maar één naam waarbij onduidelijk is of het een voor- of achternaam is (mononiem). Of nog gekker. Het kan. Er zijn mensen waarbij je de naam anders uitspreekt dan je hem schrijft :)

Daarnaast moet je je ook afvragen welk probleem je op wil lossen door voorletters, tussenvoegsels, voor- en achternamen allemaal apart op te willen slaan in je database. Wat wil je met die namen doen? Wil je het gebruiken om iemand post te sturen? Vraag de gebruiker dan simpelweg hoe hij/zij/anders de post wil ontvangen: "Stuur mij post onder de volgende naam: __________". Wil je iemand mail sturen? Vraag dan hoe je die persoon moet aanspreken: "Spreek mij in een mail aan als: ___________". Wil je de naam terug laten komen in een lijst? Vraag het gewoon.

Er zijn teveel variabelen om het goed op te kunnen lossen en in verreweg de meeste administratieve systemen worden de onderdelen van de naam alleen maar apart opgeslagen om ze later op verschillende manieren aan elkaar te kunnen plakken. Dit is een verouderd - en alleen op Nederland gericht - beeld van namen. We hebben meer en meer te maken met internationale namen en daar moet ons systeem rekening mee houden.

Als TS echter te maken heeft met bijvoorbeeld een groot tekstbestand waar alle namen voluit in staan genoemd, dan is hij fucked. Via scripting ga je dit maar zeer beperkt op lossen en tegen de tijd dat je script ongeveer 70% goed kan afhandelen, zul je voor elke toevoeging aan je source die 1 geval oplost, er weer een uitzondering bij moeten maken voor wat je breekt met je toevoeging.

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Tof dat @Hatsieflatsie ook nog reageert d:)b

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 10:35

Reptile209

- gers -

Mijn achternaam is Van 't Sant. Heb een keer peentjes staan zweten toen ik op de alfabetische (kamerzoek-) lijst niks bij de S kon vinden... en ook niet bij de V. Stond ik bovenaan de lijst (nog voor de A) als 't Sant, van :(.
En je wil niet weten hoe vaak ik pakjes krijg waar in het bestelformulier netjes om achternaam en tussenvoegsels wordt gevraagd, waarna je pakje geadresseerd wordt aan "Koen Sant". Geen tussenvoegsel te bekennen.
Alle programmeurs bij hun afstuderen een ingewikkelde naam geven met 3 niet-standaard tussenvoegsels (rot op met je drop-down van "acceptabele" tussenvoegsels), zodat ze hier wel fatsoenlijk over nadenken en op testen.
/rant :Y

Bottom line: vraag het de klant zelf. Plan B: zet er een student op om de boel (na 70% automatische herkenning) op de hand na te lopen. :)

Zo scherp als een voetbal!


Acties:
  • +1 Henk 'm!

  • CurtPoindexter
  • Registratie: Februari 2017
  • Niet online
-

[ Voor 104% gewijzigd door CurtPoindexter op 19-10-2019 11:46 . Reden: Leeg ivm privacy ]


Acties:
  • 0 Henk 'm!

  • sdk1985
  • Registratie: Januari 2005
  • Nu online
Let op: In Oost Nederland zijn bestaan heel wat families met een dubbele achternaam (dus met een spatie ertussen, maar niet omdat iemand getrouwd is).

Hostdeko webhosting: Sneller dan de concurrentie, CO2 neutraal en klantgericht.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als elke uitzondering een post waard is, zou dit topic groter moeten zijn dan de gehele Coffee Corner reeks. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
sdk1985 schreef op donderdag 20 april 2017 @ 20:58:
Let op: In Oost Nederland zijn bestaan heel wat families met een dubbele achternaam (dus met een spatie ertussen, maar niet omdat iemand getrouwd is).
Daar zijn we inmiddels na een post of 50 wel achter; we zijn 't wel eens dat er meer uitzonderingen dan regels zijn. Misschien kunnen we ons nu gaan focussen op het daadwerkelijke probleem dat TS probeert op te lossen. Als hij nu de vele vragen om verduidelijking eens beantwoord...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • sdk1985
  • Registratie: Januari 2005
  • Nu online
Voutloos schreef op donderdag 20 april 2017 @ 21:09:
Als elke uitzondering een post waard is, zou dit topic groter moeten zijn dan de gehele Coffee Corner reeks. ;)
Oost Nederland niet een uitzondering maar een hele regio... Met andere woorden mijn punt (impliciet) is dat wat de TS wil niet mogelijk, dan wel onwenselijk is. Meisjes namen zijn niet altijd meisjes namen en of dat wel of niet zo is kun je niet uit een bestaande data set halen.

De enige manier is om vanaf moment één de data goed te verzamelen (dus aparte velden voor voornaam, tussenvoegsels en achternamen). Als dat al gebeurd is dan is de vraagstelling verkeerd zijn andere oplossingen makkelijker te implementeren.
RobIII schreef op donderdag 20 april 2017 @ 21:10:
[...]

Daar zijn we inmiddels na een post of 50 wel achter; we zijn 't wel eens dat er meer uitzonderingen dan regels zijn. Misschien kunnen we ons nu gaan focussen op het daadwerkelijke probleem dat TS probeert op te lossen. Als hij nu de vele vragen om verduidelijking eens beantwoord...
*snip* dat mag je achterwege laten. RobIII's post was geen kritiek op de jouwe

Inhoudelijk: het blijft nutteloos om te gaan verzinnen hoe je meisjes namen kunt negeren zolang een deel van de bevolking dubbele namen heeft vanaf zijn of haar geboorte en dat onderscheid überhaupt niet te maken is tenzij je het aan die persoon vraagt. Typisch een http://xyproblem.info/ waar iedereen vol op de induikt. Lokaal voorbeeldje: sdk1985 in "Bizar verbruik: 3600m³ gas op 70m² stookoppervlak" . (Wat dus, na circa 1 jaar, uiteindelijk wel de oplossing bleek te zijn). Vaak is het goed om eerst de vraagstelling eens kritisch te bekijken, scheelt een hoop verspilde moeite. Ook meteen een stuk minder problematisch als de TS dan niet binnen 24 uur reageert ;).

[ Voor 68% gewijzigd door .oisyn op 21-04-2017 01:03 ]

Hostdeko webhosting: Sneller dan de concurrentie, CO2 neutraal en klantgericht.


Acties:
  • 0 Henk 'm!

  • m-vw
  • Registratie: Mei 2013
  • Laatst online: 00:01

m-vw

GEZOCHT: De Kluts

KabouterSuper schreef op donderdag 20 april 2017 @ 14:25:
[...]

Als het een Nederlander is wel, als het een Belg is niet, zie wikipedia. :9
Bij ons op het werk is het outlook adresboek gevuld door twee verschillende it-afdelingen. Een belgische en een nederlandse. Drie keer raden wat je daarin tegenkomt.

Garmin FR245M + HRM-RUN


Acties:
  • +1 Henk 'm!

  • DG-COMSYS
  • Registratie: Februari 2005
  • Laatst online: 27-02-2023
Hatsieflatsie,

Veel mee geprogrammeerd, al in de jaren 80 als hobby.
Toen al, definieer 1 string, pleur daar maar in wat je (achter)naam ook is.
Desgewenst 1 string voor voorna(a)m(en), en laat de rest door de DB-afhandeling uitzoeken.

Ennu, definieer meisjesnaam? Euh, hoe zit dat dan met bijvoorbeeld: René, of Renee, deze wordt gebruikt voor zowel jongens- áls meisjesnaam :)
Hoe die uit elkaar te houden? Nou, met een variable in je record met: 'geslacht m/v', maar dan loop je vervolgens tegen mensen aan die later van geslacht veranderen, etc etc.

Hier kom je met normale programeertechnieken dus nooit uit, suc6 !

Overigens, naast tussenvoegsels, 'how to deal with' Drs. O. Rümçève (1988)?
(secretaris van de vereniging van Umlautdragers)
YouTube: Keek op de Week 12, 18-12-1988 - Van Kooten en De Bie

DG.

Acties:
  • +1 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 07:52
DG-COMSYS schreef op donderdag 20 april 2017 @ 23:50:
[...]
Ennu, definieer meisjesnaam? Euh, hoe zit dat dan met bijvoorbeeld: René, of Renee, deze wordt gebruikt voor zowel jongens- áls meisjesnaam :)
Hoe die uit elkaar te houden? Nou, met een variable in je record met: 'geslacht m/v', maar dan loop je vervolgens tegen mensen aan die later van geslacht veranderen, etc etc.[...]
Dat is niet hoe meisjesnaam hier wordt bedoeld :) (Zie tweede betekenis: http://www.vandale.nl/opz...ttern=meisjesnaam&lang=nn)

Acties:
  • 0 Henk 'm!

  • DG-COMSYS
  • Registratie: Februari 2005
  • Laatst online: 27-02-2023
Caelorum schreef op vrijdag 21 april 2017 @ 00:13:
[...]Dat is niet hoe meisjesnaam hier wordt bedoeld :) (Zie tweede betekenis: http://www.vandale.nl/opz...ttern=meisjesnaam&lang=nn)
Tegenwoordig kan en mag de vrouw kiezen welke achternaam als eerste wordt genoemd ... Wordt tog nog lastig 8)

DG.

Acties:
  • +1 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Gaius schreef op donderdag 20 april 2017 @ 11:19:
[...]
Nee, de vraag van de TS is hoe je het beste tussenvoegsels van achternamen kunt scheiden. Een algoritme is een manier om dat op te lossen, al is het gezien alle uitzonderingssituaties maar de vraag of dat mogelijk is. Een andere manier is om dat bij de bron te doen: het datamodel. En indien dat nog mogelijk is (weten we niet), dan heb je dat algoritme helemaal niet nodig om het probleem op te lossen.
Cool, dus als TS zijn datamodel aanpast dan gaat de inhoud van zijn database zichzelf corrigeren naar het nieuwe datamodel, welke Database is dat?

Want je datamodel veranderen helpt je totaal niets met alle bestaande data (en dat is hier zeer waarschijnlijk de issue, nieuwe data valt gewoon goed in te geven)



Opzich zijn namen niet zo giga-moeilijk te ontleden hoor, mits je dataset maar genoeg info bevat (en dat is over het algemeen het probleem)
Het is heel leuk dat er in dit topic geschermd wordt met de meest exotische uitzonderingen als je enkel maar een naams veld hebt.

Echter heb ik in het verleden wel eens meegewerkt aan een onderzoek waarbij 1 van de bronnen onder andere een genealogie database was en dan is het opeens heel erg goed te doen voor 96+% van de westerse / oud-romeinse landen.
Want daaruit bleek gewoon dat je heel veel regelsetjes nodig had voor heel specifieke locaties waardoor het wel veel werk was maar niet moeilijk werk.
Het was veelal gewoon zoiets van achternaam opgeschreven in plaats a dan volgde het dat regelsetje, verhuisde de familie 100 jaar daarna naar plaats b dan had het een grote kans om te veranderen in regelsetje b voor bepaalde tussenvoegsels uit set a.

Mensen uit plaats x gebruikten gewoon allemaal het tussenvoegsel "van het" terwijl mensen uit plaats y het tussenvoegsel "van 't" gebruikten, het toenmalige vermoeden van ons (als niet genealogie studenten of naamskundigen of iets, slechts simpele ict'ers) was gewoon dat waarschijnlijk er per locatie maar 1 schrijver was en die bepaalde gewoon hoe een uitgesproken naam opgeschreven werd. En eenmaal opgeschreven dan veranderde het vrij weinig.

Alleen tja, de meeste mensen hebben geen toegang tot die genealogie database en tja, dan heb je dus niet de voorkennis dat pietje uit Amsterdam eigenlijk zijn naam heeft gekregen 300 jaar terug in Marseille waardoor je niet de Amsterdamse regels moet pakken maar die uit Marseille.

Wel 1 "kleine" kanttekening, de 96+% werd alleen behaald op de data die ook in de genealogie database te vinden was, daarbuiten ging het vrij hard omlaag omdat we daar dus ook de nodige data misten

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 06-06 20:37

P_Tingen

omdat het KAN

RobIII schreef op donderdag 20 april 2017 @ 21:10:
[...]

Daar zijn we inmiddels na een post of 50 wel achter; we zijn 't wel eens dat er meer uitzonderingen dan regels zijn. Misschien kunnen we ons nu gaan focussen op het daadwerkelijke probleem dat TS probeert op te lossen. Als hij nu de vele vragen om verduidelijking eens beantwoord...
Het feit dat we het er kennelijk over eens zijn dat er meer uitzonderingen dan regels zijn, kan volgens mij alleen maar leiden tot de conclusie dat het maken van een werkend script net zo moeilijk is als het maken van een script dat vrede in het Midden Oosten op zal leveren.

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 29-05 15:45
Door werk en prive kwesties die doorheen speelden, heb ik nog geen eerdere mogelijkheid gehad om hierop uitgebreid op in te kunnen gaan. Excuses hiervoor, en dank voor alle reacties. Ik zal m'n usecase even toelichten.
Gaius schreef op donderdag 20 april 2017 @ 08:52:
Een betere vraag is denk ik: Waarom moet je weten of er een tussenvoegsel in de achternaam zit?
Men wilt een verdeling van ongegroepeerde gegevens in initialen/voornaam, tussenvoegsel en achternaam.
ajakkes schreef op woensdag 19 april 2017 @ 21:54:
De oplossing: de gebruiker zelf de velden juist in te laten vullen.
Dat was ook m'n eerste gedachte.

Het betreft echter een bestaand dataset van ruim 970.000 unieke en voornamelijk Nederlandse persoonsgegevens, die door meerdere partijen al aangeleverd is. Men is bewust van de inconsistentie in de dataset, en wij zijn er juist voor om hierin een oplossing te vinden.
Ger schreef op donderdag 20 april 2017 @ 12:25:
Belangrijke vraag aan TS: wat is je huidige input? Is dat een complete naam, of een achternaam inclusief tussenvoegsels? Je spreekt over het laatste, en dan kun je natuurlijk simpelweg kijken of de waarden in de tussenvoegsels-array aan het begin van de string staan. Dat maakt het verhaal natuurlijk een heel stuk simpeler.
Dat heb ik in eerste instantie ook zo gedaan. Er bleken echter teveel inconsistentheden te zijn, waardoor ik onbetrouwbare data terugkreeg. Zo valt een achternaam als Verschuur ook in definitie van tussenvoegsel, aangezien het een tussenvoegsel ("Ver)" bevat. Wanneer je vervolgens als regel opneemt, dat tussenvoegsels met spaties eindigen, blijken er nog een aantal tussenvoegsels zonder spaties geschreven te zijn.
CodeCaster schreef op woensdag 19 april 2017 @ 18:48:
Kun je, met behulp van wat voorbeeldinput en -output, laten zien welk probleem je probeert op te lossen?
Cartman! schreef op woensdag 19 april 2017 @ 18:48:
Wat is je use case? Dit moet je volgens mij helemaal niet willen want je gaat zoveel verschillende uitzonderingen tegen komen dat het niet betrouwbaar gaat zijn.
De gegevens zijn als volgt opgebouwd, fictieve namen:

Piet Verschuur
Piet de Visser
G.A. Janssen Van der Bilt


De bovenstaande gegevens moeten ingedeeld worden in initialen, eventuele tussenvoegsels en achternamen, als volgt:

Voornaam/InitialenTussenvoegselAchternaam
PietVerschuur
PietdeVisser
G.A.Janssen Van der Bilt


Initialen worden netjes door m'n script herkend en ingedeeld in nieuwe tabel. Tussenvoegsels worden ook netjes ingedeeld.
Het gaat echter mis wanneer men gecombineerde achternamen heeft, waarvan de 'aangetrouwde' achternaam een tussenvoegsel bevat.

Aangezien het om een bestaand dataset gaat, kan ik de tussenvoegsels niet afvangen in invoer. Tevens is de dataset vrij inconsistent. Ik tref namelijk verschillende schrijfwijzen voor tussenvoegsels aan, te denken valt aan:
"G.A. Janssen vd Bilt"
"G.A. Janssen v.d. Bilt"
"G.A. Janssen v d Bilt"
"G.A. Janssen-van der Bilt" .

En sommige voornamelijk exotische achternamen, zijn ook moeilijk in te delen: (te denken valt aan El-Mounir of s'La Roche Capelle).

[ Voor 216% gewijzigd door Hatsieflatsie op 21-04-2017 18:17 ]


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 29-05 15:45
Destiny schreef op donderdag 20 april 2017 @ 09:38:
Ik denk dat je nog een ander probleem hebt. Hoewel het niet veel voorkomt zijn er ook mensen met een dubbele achternaam. (zoals Kammerlingh Onnes).Die zou je script moeten uitsluiten.
Dan wordt het ingedeeld als 1 achternaam. Ik zie niet in waarom het een probleem moet zijn.

Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 29-05 15:45
Caelorum schreef op donderdag 20 april 2017 @ 15:20:
[...]

Ja, dat zegt die nu, maar kan hij echt met 100% zekerheid zeggen dat alle mensen die in het systeem staan Nederlands zijn, of belangrijker, dat alle gebuikers van het systeem Nederlands zijn? Dat niet toevallig stiekem ook een Belg er tussen zit?

Ik zou mij er iig niet aan wagen. Wij slaan tussenvoegsels apart op, los van achternaam om het probleem te verhelpen, maar doen geen 'vertaalslag' als er door een externe applicatie (soms zelf gebouwd) er maar 1 achernaamveld is. Dat is gewoon kansloos om te proberen.

Ik heb overigens nog steeds niet gelezen waarom TS dit nou zou willen doen.
Zo koffiedik bekeken, is er inderdaad een aardige hoeveelheid buitenlandse achternamen aanwezig in de dataset. En tja... of het kansloos is... de opdracht heb ik nu eenmaal gekregen, ik heb het uiteraard ook anders gewild. Tevens is er ook aan de klant meegedeeld dat z'n dataset te inconsistent is, maar dat is de situatie zoals het nu is.

[ Voor 15% gewijzigd door Hatsieflatsie op 21-04-2017 18:19 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Jouw oplossing is "Ik ga tussenvoegsels in een aparte kolom opslaan". Ik probeer erachter te komen welk probleem je dáármee wil oplossen, om te kijken of er wellicht een handiger of logischer oplossing voorhanden is. :)

Gaat het zoals hiervoor geopperd om sorteren, of moet je de data in dit formaat aanleveren aan een ander systeem, of ...

[ Voor 18% gewijzigd door CodeCaster op 21-04-2017 18:46 ]

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

  • Osxy
  • Registratie: Januari 2005
  • Laatst online: 09:56

Osxy

Holy crap on a cracker

Als man zijnde de naam van je vrouw als 2e naam aannemen geeft ook leuke effecten kan ik verzekeren.

Banken, vervoerders etc allemaal problemen ermee. Allemaal op hun eigen manier, leukste tot nu toe was dat door de dubbele naam met streepje als scheiding ik als vrouw werd aangeschreven.

"Divine Shields and Hearthstones do not make a hero heroic."


Acties:
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
DG-COMSYS schreef op donderdag 20 april 2017 @ 23:50:
Hoe die uit elkaar te houden? Nou, met een variable in je record met: 'geslacht m/v', maar dan loop je vervolgens tegen mensen aan die later van geslacht veranderen, etc etc.
Je bedoelt dit zeker: https://qntm.org/gay

Maak je niet druk, dat doet de compressor maar


Acties:
  • +2 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Hatsieflatsie schreef op vrijdag 21 april 2017 @ 17:44:
Dat was ook m'n eerste gedachte.

Het betreft echter een bestaand dataset van ruim 970.000 unieke en voornamelijk Nederlandse persoonsgegevens, die door meerdere partijen al aangeleverd is. Men is bewust van de inconsistentie in de dataset, en wij zijn er juist voor om hierin een oplossing te vinden.
Ok, geef de verkoper een rotschop. Wees eerlijk tegen de klant en zeg dat je bijna zeker geen oplossing gaat kunnen bouwen. Of dat het heel duur gaat zijn omdat er een grote handmatige stap in gaat zitten.

Alhoewel ik het zoals genoemd het in het verleden weleens bijna succesvol gedaan heb was dat geen commerciele opdracht. Commercieel had dat er nooit uitgekund vanwege het feit dat die genealogie database redelijk onbetaalbaar zou zijn (begreep ik) en aan het einde van de rit werd alsnog elk record 2x handmatig nagekeken en gefixed, een proces wat alsnog maanden duurde.

Wat ik als eerste zou doen is een voor-analyse van de records te maken en die met de klant door te nemen. Dat kan je wel met je huidige script doen.

Dus dat je een soort analyse krijgt die zegt :
50.000 records bestaan uit 1 woord, klant wat wil je hiermee
300.000 records bestaan uit 2 woorden, klant ben je het ermee eens dat we dit per definitie in voornaam-achternaam opdelen (je hebt buiten handmatige controle geen idee of dit juist is, maar daarom moet de klant het zwart op wit bevestigen)
200.000 records bestaan uit 3 woorden met het middelste woord een bekend tussenvoegsel, klant ben je het ermee eens dat we dit opdelen in voornaam-tussenvoegsel-achternaam
50.000 records bestaan uit 3 woorden met een onbekend middelste woord met een lengte kleiner dan 5 tekens, hier gaan we nog eens naar kijken of we er geen tussenvoegsels uit kunnen halen die we nog niet kennen zodat ze in de vorige categorie gaan vallen en anders mag de klant zeggen of hij alles per definitie een tussenvoegsel vind of niet
100.000 records bestaan uit 3 woorden met een onbekend middelste woord met een lengte van 5 of groter, klant mag bepalen hoe dit ingedeeld mag worden of dat dit handmatig uitgezocht mag worden
etc. etc.

Op deze manier creeer je geen accuraatheid, daarop kan je dus ook niet aangesproken worden, je creëert alleen regels waar de klant mee moet instemmen.

Acties:
  • 0 Henk 'm!

  • Xanaroth
  • Registratie: September 2007
  • Laatst online: 06-06 18:07
Hatsieflatsie schreef op vrijdag 21 april 2017 @ 18:14:
[...]

Zo koffiedik bekeken, is er inderdaad een aardige hoeveelheid buitenlandse achternamen aanwezig in de dataset. En tja... of het kansloos is... de opdracht heb ik nu eenmaal gekregen, ik heb het uiteraard ook anders gewild. Tevens is er ook aan de klant meegedeeld dat z'n dataset te inconsistent is, maar dat is de situatie zoals het nu is.
Wees gewoon eerlijk naar wie die opdracht heeft gegeven. Met alle bronnen die hier genoemd zijn, kun je overduidelijk kenbaar maken dat het onmogelijk is. Er zijn teveel problemen met teveel variabelen, waardoor het gewoon niet te programmeren valt.
Letterlijk niemand op deze aardkloot die die dataset kan redden. Simpelweg omdat er teveel variabelen zijn, waardoor je nooit op 1 vaste definitie uit kunt komen en het dus niet te programmeren valt.

Even een voorbeeld:
Een beetje ongelukkige naam met 3 spaties (= 4 woorden) betekend al dat je, wat zal het zijn, 24 (?) mogelijke naamgevingen hebt voor de keuzes wat betreft. Net afhankelijk van hoe het is ingevoerd en wat voor naam diegene heeft (1 of meerdere achternamen, wel/geen tussenvoegsels, 1 of meerdere voornamen). Daar komt dan nog bovenop dat de volgorde van invoer niet per definitie vast staat omdat de opbouw per cultuur verschilt, en gezien de data van meerdere plekken afkomstig is mogelijk ook variatie in de dataset zelf bevat kwa opbouw.
Oh, en natuurlijk de kans dat iemand überhaupt geen voornaam of achternaam heeft in de dataset, foutjes gebeuren. Maakt in elk geval al minstens 26 mogelijkheden nu voor een en dezelfde naam.


Wat je zou kunnen proberen is kopieën van ID's te vinden, en deze handmatig 1-op-1 vergelijken. Dat is ongeveer het snelste wat je kunt doen, als je niet de personen zelf wilt aanschrijven om hun naam opnieuw in te voeren.


En nog 1 leuke trap naar je originele vraag over meisjesnamen:
'Meisjesnaam' kan ook inhouden dat een vrouw haar voornaam heeft aangepast door de jaren heen, en dus als volwassen vrouw iets anders gebruikt dan vroeger als meisje. Vaak heeft dit veel raakvlakken met met roepnamen en/of doopnamen. Bijvoorbeeld 'Nicole' heten maar vroeger altijd 'Nikky' gebruikt hebben, ook formeel op papier. Of formeel 'Griet' heten maar altijd 'Grietje' gebruiken, want zo werd ze van kinds af aan genoemd.

Dus technisch gezien is niet alleen je dataset ruk en de opdracht an sich onmogelijk, maar is je opdracht ook op meerdere manieren te interpreteren. :9

[ Voor 68% gewijzigd door Xanaroth op 26-04-2017 21:56 ]

Pagina: 1