A zero-dependency way to generate fantasy character names in Python

Iniciado por joomlamz, Hoje at 22:00

Respostas: 1   |   Visualizações: 1

Tópico anterior - Tópico seguinte

0 Membros e 1 Visitante estão a ver este tópico.

**Título:** Uma Abordagem sem Dependências para Gerar Nomes de Personagens Fantásticos em Python

**Introdução:**
Olá, membros do webmastersmz.com! Hoje, estou aqui para discutir uma solução interessante para gerar nomes de personagens fantásticos em Python. Com base no artigo "A zero-dependency way to generate fantasy character names in Python", vamos explorar uma abordagem inovadora para criar nomes únicos e fascinantes para as suas criaturas.

**Pontos Principais:**

1. **Conceito de Gerador de Nomes:** O artigo apresenta um conceito de gerador de nomes que utiliza uma combinação de técnicas de processamento de linguagem natural e aleatoriedade para criar nomes de personagens fantásticos.
2. **Uso de Listas de Nomes:** O gerador utiliza listas de nomes pré-definidas para criar combinações únicas de nomes. Isso permite um controle mais preciso sobre o tipo de nomes gerados.
3. **Aleatoriedade:** O gerador utiliza aleatoriedade para criar variações nos nomes, garantindo que cada nome seja único.
4. **Flexibilidade:** O gerador é projetado para ser flexível e pode ser adaptado para gerar nomes de diferentes tipos, como nomes de pessoas, lugares ou objetos.

**Análise Técnica:**

O gerador de nomes apresentado é uma solução interessante para problemas de gerenciamento de dados em jogos de RPG ou outras aplicações que requerem nomes únicos e fascinantes. A combinação de técnicas de processamento de linguagem natural e aleatoriedade permite criar nomes que são ao mesmo tempo únicos e plausíveis.

No entanto, é importante notar que o gerador pode ser melhorado com a adição de mais recursos, como a capacidade de gerar nomes em diferentes idiomas ou a integração com outros sistemas de gerenciamento de dados.

**Conclusão:**

Em resumo, o gerador de nomes apresentado é uma solução inovadora e interessante para gerar nomes de personagens fantásticos em Python. Com sua combinação de técnicas de processamento de linguagem natural e aleatoriedade, ele é capaz de criar nomes únicos e fascinantes.

**Convite:**

Para garantir que os vossos projetos e fóruns rodam sem falhas, convido-vos a conhecer as soluções de alojamento de alta performance da AplicHost em https://aplichost.com. Nossa equipe de especialistas em tecnologia está aqui para ajudar a solucionar os problemas de infraestrutura e garantir que os vossos projetos estejam sempre on-line e seguro.

A zero-dependency way to generate fantasy character names in Python



Tópico: A zero-dependency way to generate fantasy character names in Python
Categoria: Tutoriais | Programação & Tecnologia
Idioma Principal: Português (Conteúdo de Tecnologia)

Descrição do Conteúdo / Informações:
-------------------------------------------------------------------------
Every test suite I write ends up needing throwaway names. Faker is great for "John Smith" and "Acme Inc", but the moment I'm seeding a game's NPC table or a fantasy-app fixture, real-world names look wrong next to a dwarf cleric. So I went down the rabbit hole of procedural name generation. You can get believable fantasy names with nothing but the standard library.

Here's the whole idea in a few lines.



The trick: stitch syllables, don't store names


A lookup table of pre-written names runs dry fast and feels repetitive. Instead you keep small pools of sound fragments per race and assemble a name from one start + optional middle + ending:

import random

ELF_START = ["Ae", "Fae", "Lael", "Cael", "Syl"]
ELF_MID   = ["", "la", "ri", "va", "thy"]
ELF_END   = ["riel", "wyn", "thas", "lor", "ndil"]

def elf_name(rnd=random.random):
pick = lambda pool: pool[int(rnd() * len(pool))]
return (pick(ELF_START) + pick(ELF_MID) + pick(ELF_END)).capitalize()

print(elf_name())   # -> 'Faewyn'

Five fragments per slot already gives you 5 x 5 x 5 = 125 combinations that read like elf names, because the constraint lives in the fragments, not in a giant list. Swap the pools and an orc reads like an orc:

ORC_START = ["Gr", "Mog", "Rok", "Dur", "Kra"]
# harsh consonant clusters, short endings -> 'Grukgor', 'Rokmash'

A couple of design notes that matter once you actually use this:

• Keep generate() pure. Pass the RNG in as a callable (rnd=random.Random(7).random) so you can seed it. Reproducible names mean your test fixtures don't churn the diff every run.

• Capitalize at the end, not per-fragment, or you get FaeWyn.

• An empty string in the middle pool is a cheap way to vary name length without a separate branch.



If you just want names, not a project


I packaged the full version as a pip install: seven races (human, elf, dwarf, orc, halfling, tiefling, dragonborn), masculine/feminine/any, still zero dependencies.

pip install dnd-name-generator

$ dnd-name-generator -r dwarf -g masculine -n 5
Thorin
Durgrim
Balek
Khazdin
Gimnor

Or from code:

from dnd_name_generator import generate, generate_many

generate("Tiefling", "Feminine")   # -> 'Kallieth'
generate_many(3, race="Orc")       # -> ['Grishnak', 'Moguk', 'Rokgor']

It's MIT and generate() takes the same rnd callable, so you can seed it for tests. Source and docs are on PyPI: https://pypi.org/project/dnd-name-generator/

Next time a fixture needs a half-orc barbarian instead of another "Test User 3", you've got options that don't pull in a single transitive dependency.


Joomlamz
Consultoria em Informática
-------------------------------------------------------
Especialista em Sistemas Web & Manutenção de Servidores.
A desenvolver o novo AplPortal com suporte a PHP 8.
Precisa de ajuda profissional? Contacte-me.

Tags: