Arquivo para dezembro \29\UTC 2010

Gerador de nomes pronunciáveis


Antes que o ano acabe, vou escrever aqui sobre um pequeno projeto em Python que fiz à dois dias atrás. A ideia é gerar palavras aleatórias, mas ao mesmo tempo “pronunciáveis”. Agora conta também com um gerador de Lorem Ipsum.

Basicamente você passa um arquivo contendo listas de fonemas separados do modo que você quiser com a probabilidade que cada lista deve ter.

Uma das listas existentes é a de vogais com a probabilidade de cada uma. Sem essa lista não dá para fazer nada.

Com isso, você pode definir fonemas como “ph_” que significa “pha”, “phe”, “phi”, “pho”, “phu” ou qualquer coisa que tenha sido definido como vogal, como “y”.

Também dá para definir coisas como ” *ç_-ei ” que significa que o cedilha não pode estar no início da palavra e o “_” não pode ser subtituído por “e” ou “i”, evitando “çe” ou “çi”.

Por fim, você pode fazer listas com nome “end_ALGUMACOISA” que significa que os elementos dessa seção não podem iniciar palavras, como seria feito com ” * “. No entanto, você pode colocar uma probabilidade alta para esses elementos e eles podem aparecer com mais frequência no fim da palavra.

Coloquei o arquivo .py e uma lista de fonemas no meu Dropbox, que pode ser acessado clicando na imagem abaixo (licença BSD):

Update: Adicionei um gerador de “Lorem Ipsum” tabajara ao programa. 🙂

O programa foi desenvolvido para Python 3, mas funciona em Python 2.6 ou 2.7 desde que você não se importe com acentuação errada (ou retire a lista de acentuação) :P, já que o símbolo de string unicode u“minha string não existe em Python 3 pois todas elas já são unicode por padrão.

Rodando o comando abaixo, onde 6 significa o número de letras e 5 o número de palavras geradas, você vai ter uma lista de palavras aleatórias, mas possíveis de serem ditas. Eventualmente, palavras reais aparecem.

~$ ./namegen.py 6 5

  zaraép
  carace
  coaiwi
  jegoãe
  czerab

Abaixo, um texto com 3 parágrafos gerados. Pode ser usado –lorem ou -l (L minúsculo) para isso.

~$ ./namegen.py --lorem 3

    Geraépeom phuraxoiao. Basaai 5 saczeiube! Êusoschuiac faiuveh gehotpe, zoou... ziamo, aetpeutqu. Ja e e voiauai chis fauoioioaee, dinh ënicze hotiafeo? Maeraraiouz gixarao. Hutfa, taçabanaaró quaphuiuerr: Quautqua czerrecoj talhe 69 ch jizoetpeumx chu laervalhu 23 ceçahat pib limeç cen, poiubihi rez.

    Jaz zazoc ke, psapovaoia! Psameoscz - íloiaõ, oczeruaru e, xyiaxaysum tioiaioosa: Tum íëumd, queat maer tegieoupo íczaeçapa czenaair éhotoise kez, zaãàaisaai, seenhaj, 5% gaoaülheiu énaízejaço, czewia... dauumoirara, riom. Darausoi, xeoucoero fezaaio ruzaousapa huta neum? E chapuuúpo nodisaiaos 9836.

    E chekodowoz fus eaixywoch, nebahatoiía hitiazelh moars sagelheha, jag. Óraoasessuu gageourreoo & chazioiai lagaviis loiaesbo deor xeraa, ciczai, hotraje & hat ga.

Observação:
A probabilidade é um valor inteiro qualquer que é o peso da seção. O cálculo é feito escolhendo um valor dentro da soma de todas as probabilidades (Não precisa somar 100%).

Ainda tem umas coisas para melhorar, como documentar as funções e classes, mas já foi bastante coisa para um projeto de um dia.

Possibilidades de utilização:
– Criar nomes inexistentes para projetos.
– Dificultar a leitura do seu programa, gerando o nome das variáveis assim.
– Fazer seu filho ser zoado no colégio, caso o nome dele seja Zaraép Jegoãe da Silva.

Até o ano que vem!

Anúncios