2012-11-03 24 views
6

Ho una lista di nomi e ho bisogno di dividerli in nomi e cognomi. Poiché alcuni nomi contengono 2-3 spazi, una semplice divisione per uno spazio non verrà eseguita.La migliore strategia per suddividere i nomi in stile inglese in nome e cognome

Che tipo di euristica si usano per eseguire la suddivisione?

Si noti che questo non è un duplicato di domande che effettivamente chiedono come dividere in uno spazio; Sto cercando euristica e algoritmi, non un vero aiuto per il codice.

Aggiornamento: Sto limitando il problema impostato ai nomi in stile inglese. Questo è tutto ciò di cui ho bisogno di risolvere e probabilmente tutto quello che chiunque si avvicina a questa domanda (in inglese) avrà bisogno anche di questo.

+2

Questo è in genere risolto mantenendo i dati del nome e del cognome separati in ogni momento, perché è praticamente impossibile farlo correttamente per tutte le lingue/paesi/locali/ecc.Non è questo che ti aiuta. –

+1

Dipende molto dalla lingua: puoi provarlo con un dizionario di nomi? Presumo che non sia in cinese o giapponese, giusto? – dasblinkenlight

+3

Spaccare i nomi da soli in genere farà incazzare qualcuno. In che modo Bobby de Luca, o Bobbie Lee Jensen, si sono divisi i loro nomi? O Chow Yun-Fat, del resto? (Chow è il suo * ultimo * nome .. Beh ... è il primo, ma l'ultimo. Oh, diavolo, hai capito.) – cHao

risposta

5

ho letto un post molto interessante e completo su questo argomento:

http://www.w3.org/International/questions/qa-personal-names

Suggerisce anche chiedersi se si ha realmente bisogno campi separati per nome e cognome. Sembra dipendere dalle regioni di destinazione della tua applicazione.

+1

Potresti anche trovare http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ interessante. – rici

1

Diversi paesi e regioni hanno diversi formati per i nomi. Ad esempio, in Asia il nome della famiglia è di solito il primo e poi vengono dati i nomi. L'occidente, hai il nome e il nome, ma diventa complicato quando le persone raddoppiano, o includono i nomi secondari. E poi ad alcune regioni viene dato un solo nome.

Personalmente, non credo che ci sia un solo algoritmo in grado di darti risultati accurati al 100%, temo.

0

Quanto segue assume i cognomi in stile inglese. Se questo non è il tuo caso, ti preghiamo di aggiornare la tua domanda.

In genere è sicuro assumere che l'ultimo carattere di spazio segnali l'inizio del cognome di una persona. Ma dal momento che ci sono delle eccezioni, una strategia sarebbe quella di compilare un ampio database di cognomi a più parole noti da un'altra fonte. Potresti quindi verificare questi cognomi e trattarli come eccezioni.

3

Due approcci possono aiutare, anche se non risolvere completamente questo problema.

  1. Separare in modo programmatico quelli semplici, quelli che non sono facili vengono inseriti in un elenco diverso, "rimanenti da dividere". Ordina manualmente questa lista. Mentre si ordina manualmente, potrebbero emergere alcune euristiche che potrebbero essere codificate, riducendo ulteriormente le dimensioni dell'elenco rimanente. Se questa è una cosa da fare una sola volta, e la lista non è super-massiccia, questo farà il lavoro.
  2. Un problema strettamente correlato è quando un nome viene diviso, ma non si sa quale è il primo e quale è l'ultimo. Alcuni sistemi aggirano questo problema effettuando ricerche fuzzy in modo tale che se al primo tentativo non viene trovata alcuna corrispondenza, capovolgere il nome e il cognome e riprovare. Non hai detto perché devi dividere i nomi. Se si cerca di confrontare i dati di riferimento, si consideri una sorta di euristica di ricerca fuzzy simile che consente di provare divisioni diverse invece di cercare di ottenere la suddivisione corretta in anticipo.

Non proprio una risposta, ma in questo caso non c'è davvero una risposta perfetta.