Geração de nome

10

Estou fazendo um jogo (ou planejando, pelo menos) e, para fazer isso, preciso de uma maneira de gerar automaticamente nomes para os "chefes" do NPC (explicação longa e irrelevante aqui). Algo como este é um bom exemplo do que quero dizer.

Eu tenho uma idéia de que eu posso apenas construir um banco de dados de nomes por nacionalidade, talvez o primeiro / último par, e atribuí-los aleatoriamente, com uma lista de nomes ignorados, para que eu não tenha algo como Homer Simpson e seja processado ou algo assim.

O problema disso é que eu precisaria criar um enorme banco de dados de nomes para que isso funcionasse. Isso levaria uma eternidade ou custaria dinheiro, a menos que alguém já tenha uma lista de nomes disponível gratuitamente.

Eu tenho outra ideia em que faço pares aleatórios de vogais e consoantes, viro algumas e as adiciono, mas um programa rápido que gera esses nomes:

  • Seermeecpa
  • Cime
  • Ofmiahwumafi
  • Gozidi
  • Effawided

(Para qualquer pessoa interessada no código, você pode vê-lo aqui )

Estes são ... meio que um bocado. Bem, exceto "Gozidi" - esse poderia funcionar. Ainda assim, a taxa de sucesso claramente não é muito boa.

Existe algo que eu possa fazer para tornar os nomes mais agradáveis ​​(veja abaixo) ou devo começar a fazer essa lista? Posso de alguma forma imitar a maneira como os humanos decidem se um nome é decente ou não, com pelo menos alguma precisão? Eu prefiro algo assim a uma pesquisa em uma grande lista.

O que quero dizer com "melhor" é que, em vez de combinações aleatórias de caracteres (o que é, para ser justo), coisas que soam como nomes reais. Eles podem ser de qualquer cultura (ou parecer que são), reais ou imaginários, qualquer coisa, desde que seu americano estereotipado, burro e monolíngue como eu possa dizê-los sem muita dificuldade.

Se você precisar de mais esclarecimentos, vá em frente e pergunte. Não tenho muita certeza do que colocar aqui.

Adendo: Até onde eu sei, realmente não existem tags que se encaixam nessa questão tão bem. Se alguém que está aqui há mais tempo pode recomendar alguns, isso seria incrível.

Fund Processo de Monica
fonte
Infelizmente, sua pergunta parece muito ampla no momento. Diferentes métodos de geração de nomes se adequam a diferentes tipos de nomes - realista (também, qual cultura?), Fantasia, ficção científica, pseudônimos etc. Cada método tem suas próprias forças e fraquezas - você está pedindo uma comparação e em que critério ? Como você julga pessoalmente se um nome soa "legal"? Você pode melhorar sua pergunta restringindo-a ao longo dessas linhas.
congusbongus
Obrigado! Vou editá-lo para torná-lo mais claro. O que eu quis dizer, porém, era apenas qualquer nome e pronunciável para o americano médio e monolíngue. Dê-me um momento e eu vou jogar isso lá dentro.
Fund Monica's Lawsuit
@congusbongus Acho que consertei.
Fund Monica's Lawsuit
você pode tentar compor nomes usando vários prefixos e pós-correções, por exemplo, o 'i-ésimo' de Smith pode criar nomes como qith, hith, kith, que todos parecem razoáveis ​​e pronunciáveis, você também pode obter uma lista de nomes e cortá-los ao meio, depois substitua pela outra metade de outro nome. Por exemplo Matt seria Ma, e Josh faria Mash
Matthew Pigram
@ MatthewPigram Isso ainda exige a compilação de uma lista de nomes, o que é algo que eu quero evitar. Ainda assim, é uma boa idéia, o bit de pré / pós-correção.
Fund Monica's Lawsuit

Respostas:

14

A maioria dos geradores de nomes funciona através de algumas variações da cadeia de Markov , que são construções bastante notáveis ​​(re markov le?) Que têm muitos usos em jogos, bem como em outros domínios.

A abordagem básica invoca uma lista de algum tipo. Estes não precisam ser razoavelmente grandes. O objetivo desta lista é apenas informar ao algoritmo quais sílabas provavelmente serão emparelhadas para uma determinada categoria de nome.

Isso permite que você crie listas diferentes para, por exemplo, nomes masculinos, femininos, sobrenomes ou nomes de diferentes culturas / regiões / espécies.

O tempo que você gastará aprimorando um algoritmo que reúne aleatoriamente sílabas inventadas de uma maneira agradável provavelmente será mais do que você gastaria apenas gerando uma lista de nomes que você acha que soa bem e se encaixam em um tema comum.

Não são muitas listas de nomes disponíveis. Faça o download do mais recente banco de dados de censo dos EUA para nomes modernos, facilmente separados por idade, sexo e etnia, ou pegue listas de nomes antigos nórdicos ou similares. Tudo isso é muito fácil de encontrar via Google; esse último link foi literalmente meu primeiro hit para "lista de nomes nórdicos".

Sean Middleditch
fonte
Isso e novamente isso. As cadeias de Markov dominam os nomes, pois elas podem ser treinadas com exemplos (alimentam-no com um banco de dados de nomes com os quais você deseja soar semelhante) e são flexíveis em quão próximo elas correspondem aos nomes dos exemplos (cadeias de 2 letras? Cadeias de 3 letras? 4?).
Babis
1
+1 pelo trocadilho estúpido. Também a ótima resposta, mas principalmente pelo trocadilho. Vou dar uma olhada no Censo e ver se não consigo fazer uma lista de sílabas para usar. Provavelmente, acabarei aceitando isso, apenas porque menciona a terminologia, em vez de apenas descrevê-la.
Fund Monica's Lawsuit
3

A maioria dos nomes nos idiomas segue uma série de padrões. Por exemplo, nomes russos ou gregos podem ter cinco ou dez prefixos diferentes; portanto, se você encontrar um nome terminado com -ov, poderá suspeitar que seja russo porque ele se encaixa no padrão.

Se você quiser nomes reais (ou reais), acho que você deve começar a criar sua lista (que não deve ser tão longa) porque analisar nomes reais de algumas linguagens, encontrar seu padrão e criar um algoritmo para produzir esses nomes não vale a pena. o esforço na minha opinião.

Se você quiser nomes aleatórios que possam ser um nome em algum idioma, crie uma pequena lista de regras a seguir (como um subconjunto do acima). Já, o que você está fazendo é o seguinte: você fez uma regra sobre vogais e consoantes. Você pode adicionar um pouco mais de sobrenome, que deve terminar nessas 10 sílabas ou algumas consoantes podem ser seguidas apenas por vogais como 'q', seguidas apenas de 'u' e outras podem ser seguidas por outras consoantes como 's', seguidas de 't 'ou' k '. Novamente, isso é mais para criar algumas palavras que podem ser pronunciadas e parecem um pouco reais do que criar nomes reais.

Algo que pode ser relevante é a maneira como "Documentos, por favor" gera nomes. http://papersplease.wikia.com/wiki/List_of_names

Exaila
fonte
Eu sinto que isso é o melhor que vou conseguir, apenas pela pura complexidade do problema. Obrigado pela ajuda, mesmo que não fosse o que eu estava procurando.
Fund Monica's Lawsuit
Nos Artigos, Por exemplo, é digno de nota como a entrada mais recente no registro de alterações não é sobre a geração de nomes, mas sobre como excluir alguns dos nomes gerados, porque se assemelham a nomes de pessoas reais (possivelmente não tão importantes; embora possa parecer um pouco confuso para os usuários, existem muitas pessoas reais conhecidas para excluir todos os seus nomes), porque os nomes se assemelham a palavras indesejáveis ​​(também podem acontecer quando se combina apenas o nome e o sobrenome reais) ou porque os nomes são protegidos por direitos autorais (possivelmente muito relevante, dependendo da legislação).
OR Mapper
Alterei a resposta que aceitei porque Sean forneceu um link para uma descrição mais detalhada, em vez de uma visão geral sem ela, e um link para uma lista de nomes que eu poderia procurar. Obrigado pela ajuda de qualquer maneira.
Fund Monica's Lawsuit
0

Acho que a maneira mais fácil de fazer isso é usar um gerador de nome aleatório existente ou uma lista existente de nomes aleatórios que atendam aos seus requisitos. Depois guarde-o em algum lugar como uma lista. Quando você precisar de um nome aleatório, basta escolher a lista existente aleatoriamente.

user55564
fonte
É isso que estou tentando evitar. Quero ter um sistema que possa torná-los dinâmicos, em vez de precisar de uma lista para escolher. Além disso, procurei uma lista preexistente. A razão pela qual eu disse que teria que fazer um é que não consegui encontrar um de graça.
Funds Monica's Lawsuit