Alguma base de dados de Apelidos?

Estou a tentar gerar alguns dados de testes de base de dados, especificamente colunas de tabelas contendo nomes de pessoas. A fim de obter uma boa indicação de como a indexação funciona bem no que diz respeito às pesquisas com base no nome eu quero chegar o mais perto possível dos nomes do mundo real e sua distribuição de frequência verdadeira, por exemplo, lotes de nomes diferentes com frequências distribuídas por alguma distribuição da lei de energia.

Idealmente, procuro um ficheiro de dados disponível, com nomes seguidos de um único. valor de frequência (ou equivalente a uma probabilidade) por nome.

nomes baseados Anglo-saxões seria bom, embora nomes de outras culturas também seria útil.

Author: redcalx, 2011-06-13

3 answers

Encontrei alguns dados do Censo dos EUA que correspondem às necessidades. A única ressalva é que ele lista apenas Nomes que ocorrem pelo menos 100 vezes...

Encontrado neste blog que também mostra a curva de distribuição da lei do poder

Para além disso, pode tirar amostras da lista usando Selecção Da Roda da roleta, por exemplo (não testada)

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.");
}
 5
Author: redcalx, 2016-02-05 13:13:38
A Universidade de Oxford fornece listas de palavras no sítio FTP público como comprimidas .ficheiros gz em ftp://ftp.ox.ac.uk/pub/wordlists/names/.
 4
Author: Russell, 2011-06-13 15:28:38

Também podes verificar o projecto jFairy. É escrito em Java e produz dados falsos (como por exemplo nomes). 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
 3
Author: Jakub Kubrynski, 2015-02-10 20:01:08