2011-06-13 4 views
7

나는 사람들의 이름을 담고있는 테이블 열들과 같은 데이터베이스 테스트 데이터를 생성하려고한다. 이름 기반 검색과 관련하여 색인 생성이 얼마나 잘 작동하는지 잘 알기 위해 가능한 실제 세계 이름과 실제 빈도 분포 (예 : 몇몇 힘 법 배급에 배부 된 주파수를 가진 다른 이름의 제비.좋은 성 데이터베이스가 있습니까?

이상적으로 이름 당 하나의 빈도 값 (또는 동일하게 확률)이 오는 자유롭게 사용할 수있는 데이터 파일을 찾고 있습니다.

Anglo-saxon 기반 이름은 괜찮 으면 좋겠지 만 다른 문화권의 이름도 유용 할 것입니다.

+0

구글의 첫 번째 히트 : http://www.surnamedb.com/ – PengOne

+0

@PengOne 난 당신이 비록 자신의 데이터 집합을 다운로드 할 수 있다고 생각하지 않습니다, 그것은 주파수 이름의 기원이 아니다. – Rup

+0

@Rup : 나는 그것을별로 보지 않았고, 왜 그것이 코멘트인지 대답이 아닌지를 보았습니다. 나는 그것이보고 시작할 곳이 될 것이라고 생각했다. – PengOne

답변

5

요구 사항에 맞는 일부 미국 인구 조사 데이터를 찾았습니다. 단주의해야 할 점은 ... 그것은 적어도 100 회 발생한 경우에만 이름을 나열한다는 것입니다 또한 전원 법 분포 곡선을 보여줍니다이 블로그 항목을 통해 찾을 수

이 외에도 Roulette Wheel Selection을 사용하여 목록에서 샘플링 할 수 있습니다. (테스트되지 않음)

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."); 
} 
+0

뒤늦은 시각에서 누적 주파수 목록에서 이진 검색 방법을 사용하는 것이 더 효율적이지만, 고정 된 샘플 수에 대해서는 확률 론적 샘플링 (http://en.wikipedia.org/wiki/Stochastic_universal_sampling) – redcalx

+1

이 답변의 링크는 더 이상 유효하지 않습니다. 1990 이름 데이터를 사용할 수 있습니다 : http://www.census.gov/topics/population/genealogy/data/1990_census/1990_census_namefiles.html –

4

Oxford University는 공개 FTP 사이트의 압축 된 .gz 파일로 단어 목록을 ftp://ftp.ox.ac.uk/pub/wordlists/names/에 제공합니다.

+0

감사합니다. 여기에 빈도 데이터가 없지만보다 현실적인 테스트 데이터를 제공하기 위해 적절한 목록으로 주어진 목록에서 샘플링 할 수 있습니다. – redcalx

3

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 
관련 문제