Какие-нибудь хорошие базы данных фамилий? - PullRequest
7 голосов
/ 13 июня 2011

Я хочу сгенерировать некоторые тестовые данные базы данных, в частности столбцы таблицы, содержащие имена людей. Чтобы получить хорошее представление о том, насколько хорошо работает индексация в отношении поиска по имени, я хочу максимально приблизиться к реальным именам и их истинному частотному распределению, например. множество разных имен с частотами, распределенными по некоторому степенному закону распределения.

В идеале я ищу свободно доступный файл данных с именами, за которыми следует одно значение частоты (или, что эквивалентно, вероятность) для каждого имени.

Имена, основанные на англосаксонском языке, были бы хороши, хотя имена из других культур также были бы полезны.

Ответы [ 3 ]

5 голосов
/ 14 июня 2011

Я нашел некоторые данные переписи населения США, которые соответствуют требованиям. Единственное предостережение в том, что в нем перечислены только имена, которые встречаются не менее 100 раз ...

Найдена в этой записи блога, которая также показывает кривую распределения степенного закона

В дополнение к этому вы можете сделать выборку из списка, используя Выбор колеса рулетки, например, (не проверено)

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.");
}
4 голосов
/ 13 июня 2011

Оксфордский университет предоставляет списки слов на общедоступном FTP-сайте в виде сжатых файлов .gz по адресу ftp: //ftp.ox.ac.uk/pub/wordlists/names/.

.
3 голосов
/ 22 ноября 2013

Вы также можете проверить проект jFairy. Он написан на Java и выдает поддельные данные (например, имена). 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...