ISSN: 1579-0223
 
Sentience Research
REDcientífica
· Misión de REDcientífica
· Contacto
· Condiciones de publicación
· Consultar todos los documentos
· Consultar todos los autores
· Acceso usuarios registrados
· English version


PORTADAS
40  41  42  43  44  45  46  47  48  49  50  51  52  53 

BOLETINES
40  41  42  43  44  45  46  47  48  49  50  51  52  53 

TEMAS



ENLACES

Generador de nombres propios aleatorios
(En castellano)

Patricia Alba Talaverano
Ingeniero Informatico de sistemas
 
ImprimirEnviar

Para comenzar, el generador, es un creador de nombres para un modulo de un juego online. Este juego se empezo a desarrollar hace unos años por un grupo de personas adictas a la programacion que dejaron volar su imaginacion, ... y se metieron en el desarrollo de un juego

Mi modulo parte del juego, creara de manera aleatoria los nombres de los muñecos del juego de MUG, segun su caracter y sexo, con esta introduccion espero haber aclarados algo



1.1 ¿como se forman la palabras?

Una palabra esta formada por silabas generalmente un nombre normal de la vida cotidiana tiene de 2 a 5 silabas en raros casos son monosílabos, o de mas de 5 silabas pudiéndolo haber pero en una mínima probabilidad por lo tanto para no complicar el tema se ha discriminado este tipo de nombres y se realizaran de 2 a 4 silabas los nombres que se van a generar, dentro del numero de silabas hay una ponderación puesto k hay mas nombres de 3 silabas k de 4 por ejemplo, esta ponderación falta por realizarse.

1.2 ¿que problemas propone la tensión de una palabra?

Existen palabras mas bruscas que otras, una palabra puede ser el resultado de muchas combinaciones de fonemas puesto k todos los fonemas se pueden combinar con todos pero lo que realmente decide esta combinación para que en el castellano sean bien sonante

es la tensión de la palabra y la complejidad de la articulación vocal, por lo tanto dentro

de los parámetros de entrada para generar una palabra será la tensión, en esta versión la hemos llamada carácter, que actualmente es un char, pero pasara a ser un int de 0..100 siendo 100 un carácter demasiado brusco, en nuestro juego seria un personaje muy malo, a partir de aquí generaría silabas según una grafica de tensiones [ver graficas 1], ya con las tensiones, elegidas según el carácter del muñeco hay que generar las silabas para ir

concatenando unas con otras hasta formar la palabra con la longitud elegida

1.3 ¿como se forman las silabas?

Una silaba esta formada por fonemas, todos los fonemas se pueden combinar con todos pero tenemos que hacer hincapié es que la silaba obtenida tenga significado dentro del léxico del castellano, para comenzar explicare que una silaba esta formada por el ataque, el núcleo y la coda, por ejemplo las siguientes silabas:

tra tr ataque, a núcleo, coda no tiene.

Nian n ataque, ia núcleo, n coda.

Dra dr ataque, a núcleo, coda no tiene.

Tuan t ataque , ua núcleo, n coda.

Bla bl ataque , a núcleo, coda no tiene.

la silaba esta formada por: ataque --> hasta 2 fonemas

núcleo --> hasta 3 fonemas

coda --> hasta 2 fonemas

El ataque y la coda esta formada por fonemas consonantes, y el núcleo por fonemas vocales por eso puede estar formado por hasta 3 vocales (triptongo), en cambio no puede haber mas de 2 consonantes seguidas x) la coda y el núcleo al estar formado por consonantes tienen una longitud máxima de 2.

Para resumir: una palabra esta formada por silabas y las silabas por fonemas.

PATRICIA = 3 silabas PA, tri, cia = 8 fonemas

= PA : ataque p, núcleo a

TRI: ataque tr, núcleo i

CIA: ataque c, núcleo ia

Otros ejemplos sacados del ejecutable del programa (ver prueba1.jpg, prueba2.jpg):

Dusakua = 3 silabas du, sa, kua= 7 fonemas

= du : ataque d, núcleo u

= sa : ataque s, núcleo a

= kua: ataque k, núcleo ua

Kodralion = 3 silabas ko, dra, lion = 9 fonemas

= ko : ataque k, núcleo o

= dra : ataque dr, núcleo a

= lion: ataque l, núcleo io, coda n

Es decir todos los fonemas se pueden combinar con todos pero siguiendo unas normas de composición de silabas ataque, núcleo y coda, y también un parser de gramática castellana por ejemplo esta claro que el ataque puede estar formado por 2 palabras por ejemplo: Draco, el ataque Dr de la silaba Dra pasaría el parser ortográfico puesto que se puede dar dentro del léxico, pero Dk por ejemplo no existe dentro de la gramática castellana por lo tanto seguiría las normas de formar un ataque en una silaba, pero no las normas ortográficas no se podría formar, por lo tanto el parser se debe de realizar a nivel de silabas (esta parte falta y también hay que buscar una forma de hacerla mas eficiente, y funcional). Dentro de una silaba hay más probabilidad de que aparezcan ciertos fonemas

por ejemplo es mas probable si se selecciona una coda que salga n a que salga z por ejemplo: camión en la ultima silaba la coda es n, lápiz la coda de la silaba piz es z, pero hay mas probabilidad de que existan dentro del diccionario silabas con codas terminadas en n que en z, por lo tanto esto es otra parte que falta por realizar, la ponderación de los fonemas dentro de la silaba a la hora de formarse, teniendo en cuenta el carácter del muñeco puesto que al seleccionar palabras bruscas 100% seguro que esta probabilidad de que la palabra termine en n aumenta, si la palabra es el nombre de un jugador bueno puede k las silabas no tengan coda fuertes o estén ausentes de la misma para no poner gravedad en la palabra.

¿como se combinan las silabas?

la silabas bien formadas ( que estén dentro de las normas de construcción, explicado anteriormente, y que pasen un parser ortográfico) se pueden combinar todas con todas pero para mejorar el resultado de la construcción de una palabra se podía hacer la siguiente mejora, encontrar una manera de ponderar la silaba siguiente por ejemplo si tenemos una palabra de 3 silabas y obtenemos la primera silaba (to) ¿cual es la siguiente silaba? podemos tener en cuenta que hay mas probabilidades de k la siguiente silaba sea , ma , por ejemplo, que do, es decir hay mas palabras en nuestro diccionario con tomaxxxx, que con todoxxxx,

toma+te, toma+lo, toma+la, toma+re, toma+ton, toma+me

todo+???

si se elige ma después de to se pueden formar mas palabras por lo tanto tiene mas probabilidad de aparecer que do x)), esta ponderación seria totalmente dinámica y renovable dependiendo en cada momento de la silaba en cuestión y del grado de tensión.

1.4 ¿cual es el problema?

Actualmente forma nombres con fonemas bien formados pero sin ponderaciones todavía realizadas ni en cuanto a long. de palabra, ni a cuantas consonantes en coda o ataque , ni cuantas vocales en núcleo, tampoco esta hecho el parser ortográfico aunque no es un gran problema respecto a lo que es la manera de encontrar eficientemente una ponderación dinámica, y para finalizar falta la mejora realizada en el pto anterior.

1.5 Ideas

Realmente es difícil encontrar una estructura que contenga todo y también un controlador que lleve en cada momento que probabilidad se va a calcular, y mucho menos una estructura ordenada que no sea difícil para el entendimiento de cualquier otro programador.

Unas de mis ideas las describo en grafica, purgar una grafica de dos ejes grado de tensión y, y numero de silabas x, cada posición dentro de una palabra tiene un montón de silabas que están en la grafica, y según el carácter del muñeco se genera un grafico, una línea como las de color roja, azul verde, lila o otra según el % del carácter introducido entonces se realiza una simple formula matemática del pto mas cercano a la línea para ver la silaba que va mas acorde con el carácter, en el caso del grafica2, la idea es meter por parámetros por ejemplo hombre y malo, generar una línea parecida a la roja de grafica2 y encontrar los ptos mas cercanos a esa línea por ejemplo las silabas ca, ma, le, on formando la palabra CAMALEON. A partir de aquí me surgen el único problema es plasmar esto a la realidad y encontrar una relación entre ponderación, carácter, y tipo de fonema (oclusivo, bilabial, nasal, ...).

Otra idea para no perder tiempo en el parse ortográfico de las silabas, se puede realizar de varias formas:

1. generar todas las silabas y pasar el parser a todo.

2. generar silaba y después el parse.

3. generar y parsear silaba mientras se construye.

Estudiando las tres posibilades opto por el pto 3 es la mejor opción, puesto que se podía prorrogar indefinidamente la generación si nunca generara silabas léxicas correctas, la 3 opción se realizaría de la siguiente forma una vez k se ha indicado cuanto de ataque, núcleo, y coda, por ejemplo si tiene de ataque 2, dar un grado de probabilidad a t, d, g, b, l, c, puesto k pueden ir con otra consonante en el ataque, en cambio si se ha seleccionado ataque 2 y el primer fonema de la silaba es j pues tiene probabilidad 0 de ser elegida, dentro de las elegidas como posibles, hay que hacer una probabilidad de cual puede ser según el numero max de palabras en el diccionario con ese tipo de ataque, dentro del diccionario castellano existen mas palabras con gl que con ll, por lo tanto g tendría mas probabilidad que l, pero ocurre otro problema hay que calcular tb la probabilidad de que en el segundo fonema de un ataque con g sea l o r ---> glaciar, gramo, !% calcular tb esas probabilidades¡

Por: Patricia Alba

GRAFICA1.JPG

GRAFICA2.JPG

PRUEBA1.JPG

PRUEBA2.JPG



...GENERADOR (agradecimientos)...


Agradeceria todos aquellos que aporten una idea mandarme un e-mail.

Gracias a todos a los que me leen y a los que no.

Gracias a gente de MUG.

Gracias a mis amigos de hispano y terra x).

Gracias a los que se me olvidan y a los que "no se me olvidan".



© Copyright 2002-2004 Patricia Alba Talaverano.
© Copyright 2002-2004 REDcientífica.
Todos los derechos reservados.


[Evaluar este artículo]








              Misión de REDcientífica              Condiciones de publicación              E-mail de contacto



  Bookmark and Share