Qualche buon database di cognomi?
Domanda
Sto cercando di generare alcuni dati di test del database, in particolare colonne di tabelle contenenti i nomi delle persone.Per avere una buona indicazione di come funziona l'indicizzazione per quanto riguarda le ricerche basate sui nomi, voglio avvicinarmi il più possibile ai nomi del mondo reale e alla loro vera distribuzione di frequenza, ad es.molti nomi diversi con frequenze distribuite su alcune distribuzioni di leggi di potenza.
Idealmente sto cercando un file di dati liberamente disponibile con nomi seguiti da un singolo valore di frequenza (o equivalentemente una probabilità) per nome.
I nomi basati sull'anglo-sassone andrebbero bene, sebbene sarebbero utili anche nomi di altre culture.
Soluzione
Ho trovato alcuni dati del censimento statunitense che soddisfano i requisiti.L'unico avvertimento è che elenca solo i nomi che ricorrono almeno 100 volte ...
Trovato tramite questo post di blog che mostra anche la curva di distribuzione della legge di potenza
Oltre a questo puoi campionare dall'elenco utilizzando la selezione della ruota della roulette, ad es.(non testato)
struct NameEntry
{
public string _name;
public int _frequency;
}
int _frequencyTotal; // Precalculate this.
public string SampleName(NameEntry[] nameEntryArr, Random rng)
{
// Throw the roulette ball.
int throwValue = rng.NextDouble() * frequencyTotal;
int accumulator = 0.0;
for(int i=0; i<nameEntryArr.Length; i++)
{
accumulator += nameEntryArr[i]._frequency;
if(throwValue <= accumulator) {
return nameEntryArr[i]._name;
}
}
// If we get here then we have an array of zero fequencies.
throw new ApplicationException("Invalid operation. No non-zero frequencies to select.");
}
Altri suggerimenti
L'Università di Oxford fornisce elenchi di parole sul proprio sito FTP pubblico come file .gz compressi all'indirizzo ftp://ftp.ox.ac.uk/pub/wordlists/names/ .
Puoi anche dare un'occhiata al progetto jFairy.È scritto in Java e produce dati falsi (come ad esempio nomi). http://codearte.github.io/jfairy/
Fairy fairy = Fairy.create();
Person person = fairy.person();
System.out.println(person.firstName()); // Chloe
System.out.println(person.lastName()); // Barker
System.out.println(person.fullName()); // Chloe Barker