Generación de nombres

10

Estoy haciendo un juego (o planeo hacerlo, al menos) y para hacerlo, necesito una forma de generar automáticamente nombres para los "jefes" de la APN (explicación larga e irrelevante aquí). Algo como esto es un buen ejemplo de lo que quiero decir.

Tengo la idea de que puedo construir una base de datos de nombres por nacionalidad, tal vez primer / último par, y asignarlos al azar, con una lista de nombres ignorados para que no obtenga algo como Homer Simpson y ser demandado o algo así.

El problema con eso es que necesitaría construir una base de datos masiva de nombres para que eso funcione. Tardaría una eternidad o costaría dinero, a menos que alguien tenga una lista de nombres disponible de forma gratuita.

Tengo otra idea en la que hago pares aleatorios de vocales y consonantes, volteo algunas y las sumo, pero un programa rápido que genera nombres como estos:

  • Seermeecpa
  • Cima
  • Ofmiahwumafi
  • Gozidi
  • Effawided

(Para cualquier persona interesada en el código, puede verlo aquí )

Estos son ... una especie de bocado. Bueno, excepto "Gozidi", ese podría funcionar. Aún así, la tasa de éxito claramente no es muy buena.

¿Hay algo que pueda hacer para que los nombres suenen mejor (ver más abajo), o debería comenzar a hacer esa lista? ¿Puedo imitar de alguna manera la forma en que los humanos deciden si un nombre es decente o no, con al menos algo de precisión? Preferiría algo como esto a una búsqueda en una gran lista.

Lo que quiero decir con "más agradable" es que, en lugar de combinaciones aleatorias de caracteres (que es, para ser justos), cosas que suenan como nombres reales. Pueden ser de cualquier cultura (o sonar como son), reales o imaginarios, cualquier cosa, siempre y cuando tu estereotípico estadounidense tonto y monolingüe como yo pueda decirlos sin demasiados problemas.

Si necesita una aclaración adicional, continúe y pregunte. No estoy realmente seguro de qué poner aquí.

Anexo: Hasta donde puedo decir, realmente no hay etiquetas que se ajusten tan bien a esta pregunta. Si alguien que ha estado aquí más tiempo puede recomendar algunos, sería increíble.

Fondo de la demanda de Mónica
fuente
Lamentablemente, su pregunta parece demasiado amplia en este momento. Los diferentes métodos de generación de nombres se adaptarán a diferentes tipos de nombres: realistas (¿también, qué cultura?), Fantasía, ciencia ficción, alias, etc. Cada método tiene sus propias fortalezas y debilidades: ¿está solicitando una comparación y con qué criterio ? ¿Cómo juzgas personalmente si un nombre suena "agradable"? Puede mejorar su pregunta reduciéndola a lo largo de estas líneas.
congusbongus
¡Gracias! Lo editaré para hacerlo más claro. Sin embargo, lo que quise decir era cualquier nombre, y pronunciable para el estadounidense promedio y monolingüe. Dame un momento y lo arrojaré.
Financia la demanda de Mónica el
@congusbongus Creo que lo arreglé.
Financia la demanda de Mónica el
podría intentar componer nombres usando varios prefijos y postfijos, por ejemplo, el 'i' de Smith podría hacer nombres como qith, hith, kith que suenan algo razonables y pronouncables, también podría obtener una lista de nombres y cortarlos por la mitad, luego reemplace con la otra mitad de otro nombre. Por ejemplo, Matt sería Ma, y Josh haría Mash
Matthew Pigram el
@MatthewPigram Eso todavía requiere compilar una lista de nombres, que es algo que quiero evitar. Aún así, es una buena idea, el bit pre / postfixes.
Financia la demanda de Mónica el

Respuestas:

14

La mayoría de los generadores de nombres funcionan a través de alguna variación de Markov Chain , que son construcciones bastante notables (re markov le?) Que tienen muchos usos en los juegos, así como otros dominios.

El enfoque básico invoca una lista de algún tipo. Estos no necesitan ser bastante grandes. El propósito de esta lista es simplemente informar al algoritmo qué sílabas se pueden emparejar juntas para una categoría de nombre determinada.

Esto le permite armar diferentes listas para, por ejemplo, nombres masculinos, femeninos, familiares o diferentes culturas / regiones / especies.

El tiempo que pasará ajustando un algoritmo que ensambla aleatoriamente sílabas inventadas de una manera agradable probablemente sea más de lo que pasaría simplemente generando una lista de nombres que cree que suenan bien y se ajustan a un tema común.

No son muchas listas de nombres disponibles. Descargue la última base de datos del censo de EE. UU. Para ver los nombres modernos fácilmente separados por edad, género y etnia, o tome listas de antiguos nombres nórdicos o similares. Todos estos son bastante fáciles de encontrar a través de Google; ese último enlace fue literalmente mi primer hit para "lista de nombres nórdicos".

Sean Middleditch
fuente
Esto y nuevamente esto. Las cadenas de Markov gobiernan los nombres, ya que se pueden entrenar con ejemplos (aliméntelos con una base de datos de nombres con los que desee sonar similar) e incluso son flexibles en la proximidad de los nombres de los ejemplos (cadenas de 2 letras? Cadenas de 3 letras? 4?).
Babis
1
+1 por el estúpido juego de palabras. También la gran respuesta, pero sobre todo por el juego de palabras. Veré el Censo y veré si no puedo hacer una lista de sílabas para usar. Probablemente voy a terminar aceptando esto, solo porque menciona la terminología, en lugar de solo describirla.
Financia la demanda de Mónica el
3

La mayoría de los nombres en idiomas siguen una serie de patrones. Por ejemplo, los nombres rusos o griegos pueden tener cinco o diez prefijos diferentes, por lo tanto, si encuentra un nombre que termina con -ov , puede sospechar que es ruso porque se ajusta un poco al patrón.

Si desea nombres reales (o reales), creo que debería comenzar a construir su lista (que no debería ser tan larga) porque no vale la pena analizar nombres reales de algunos idiomas, encontrar su patrón y crear un algoritmo para producir dichos nombres El esfuerzo en mi opinión.

Si desea nombres aleatorios que podrían ser un nombre en algún idioma, puede crear una pequeña lista de reglas a seguir (como un subconjunto de lo anterior). Lo que estás haciendo ya es eso: hiciste una regla sobre vocales y consonantes. Podría agregar algunos más como los apellidos deben terminar en estas 10 sílabas o algunas consonantes pueden ser seguidas solo por vocales como 'q' seguidas solo por 'u' y algunas otras pueden ser seguidas por otras consonantes como 's' seguidas de 't 'o' k '. Nuevamente, esto es más para crear algunas palabras que se pueden pronunciar y sentir un poco más real que crear nombres reales.

Algo que puede ser relevante es la forma en que "Documentos, por favor" genera nombres. http://papersplease.wikia.com/wiki/List_of_names

Exaila
fuente
Siento que esto es lo mejor que voy a obtener, solo por la gran complejidad del problema. Gracias por la ayuda, incluso si no es lo que estaba buscando.
Financia la demanda de Mónica el
En los Documentos, por ejemplo, es notable cómo la última entrada del registro de cambios no se trata de generar nombres, sino de cómo excluir algunos de los nombres generados, porque se parecen a nombres de personas reales (posiblemente no tan importante; aunque puede parecer un poco confuso para los usuarios, hay demasiadas personas reales algo conocidas como para excluir todos sus nombres), porque los nombres se parecen a palabras indeseables (también pueden ocurrir al combinar nombres y apellidos reales), o porque los nombres tienen derechos de autor (posiblemente muy relevante, según la legislación).
O Mapper
He cambiado la respuesta que acepté porque Sean proporcionó un enlace a una descripción más detallada, en lugar de una descripción general sin ella, y un enlace a una lista de nombres que podría ver. De todas formas, gracias por la ayuda.
Financia la demanda de Mónica el
0

Creo que la forma más fácil de hacer esto es usar un generador de nombres aleatorios existente o una lista existente de nombres aleatorios que cumplan con sus requisitos. Luego guárdelo en algún lugar como una lista. Cuando necesite un nombre aleatorio, simplemente elija de la lista existente al azar.

usuario55564
fuente
Eso es lo que estoy tratando de evitar. Quiero tener un sistema que pueda hacerlos sobre la marcha, en lugar de tener que tener una lista para elegir. Además, busqué una lista preexistente. La razón por la que dije que tendría que hacer uno es porque no pude encontrar uno gratis.
Financia la demanda de Mónica el