La segunda versión de la @ChangaPoeta (http://changa.lengua.la) no está diseñada para funcionar en línea. Con una interfaz mucho más fácil de usar y muchas funciones interesantes nuevas para “escribir clickando” y buscar textos en la biblioteca infinita, la Changa se muda a Python. Podría correr online si alguien nos presta un server que corra Django ;)
La versión 1.1 de la changa (online) puede generar una variedad de alrededor de 10^12 (un billón) de frases diferentes de hasta 140 caracteres. La nueva versión logra generar variedades del orden de 10^24 (y aumentando), esto es un billón de billones de variedades. Según nuestras estadísticas serán razonables sólo un 0.001% a 0.01% del total, lo que nos deja algo así como 10^20 o “cien millones de billones” de frases de hasta 140 caracteres razonablemente legibles y gramatical y semánticamente correctas. Se trata de una bliblioteca “potencial” del orden de 10^18 cuartillas. Si ordenaramos los resultados por simple fecha de “aparición” en volúmenes de 400 páginas, como proponía Borges, estaríamos hablando de 10^16 volúmenes: “diez mil billones de libros”. Según Google en el mundo hay alrededor de 150,000,000 de libros distintos en este momento de la historia. Por supuesto se trata sólo de libros editados y registrados. Supongamos que hay diez mil veces más libros diferentes “no registrados”, esto nos da un total del orden de 10^12. La nueva @ChangaPoeta podrá (potencialmente) escribir un millón de veces más libros de los que existen. Twitter ha enviado cerca de un billón de tweets desde su aparición en marzo del 2006 (no forzosamente diferentes), la Changa Poeta versión Python puede escribir cien millones de veces más, algo así como mil años de tuiteo al ritmo actual.
Si estás interesado en probarla escribe un chuirer solicitando el enlace de descarga a @Sanxofon o a @GrupoLaLengua.
Requieres Windows7 a 64bit para poder correrla o saber usar un programa python desde la consola.
Ver introducción al uso de la Changa Poeta que es la mejor forma de empezar a usar la changa.
“Un millón de changos con computadoras pueden escribir el Quijote en un millón de años”, typeó al azar en 1981 un bonobo en la máquina de escribir del Detective Salvaje #4.
Si no conoces la Changa Poeta clicka aquí, donde hay una breve descripción de lo que es y cómo se usa http://changa.lengua.la/intro.php.
Para separar las palabras o frases se usa el signo:
+
Para solicitar una palabra por tipo (sustantivo, adjetivo, adverbio, etc) escribimos la abreviatura:
s + adj
Solicitamos en número de sílabas que deberá tener una palabra escribiendo el número (nunca más de 10: otorrinolaringología).
3 + 4
Puedes establecer rangos de mínimo y máxim (inclusive) usando la diagonal. Si se omite el mínimo se considera 1, si se omite el máximo se considera 10.
2/4 + 4/
Podemos pedirle que incluya cualquier texto definido por nosotros entrecomillándolo:
"Estoy" + "pensando en algo"
Los signos de puntuación ;:,-.!? no anteponen un espacio. Para forzar este comportamiento se puede usar el signo de * tanto al principio como al final de la palabra. Los signos de apertura ¿¡ deben de ir seguidos de un asterisco * para eliminar el espacio posterior ya que este comportamiento no es automático.
"Hola, " + s + ". Quería que nos" + {s_s_pi_n} + "¿*" + {s_i_p_t},|c + "el por qué de ese"+ adj,v + "?"
Usando un asterisco sólo unir dos palabras.
%ta + "*" + ta%
Podemos pedirle que incluya cualquier texto al azar de una variedad definida por nosotros de la siguiente forma:
"|perro|gato|ratón" => gato "|perro|gato|ratón" => ratón
Se debe incluir una barra después de las comillas y entre cada elemento de la variedad. Devolverá solo un elemento al azar de esa variedad.
Para pedirle palabras según su acentuación (grave, aguda, esdrújula, etc) simplemente escribimos su abreviatura
agu + esd
Los valores que el tipo de palabra puede tomar son:
Podemos usar la coma , para solicitar palabras con varias características y combinar propiedades:
2, v + "la" + gra, s, f + 4, adj, f
Algunos comandos, sin embargo, se combinan internamente y no mediante comas. Este es el caso de la barra |. Si queremos capitalizar |k una palabra al mismo tiempo que tratar de convertirla en plural |s esto sería incorrecto:
INCORRECTO: s, |k, |s CORRECTO: s, |ks
Para un changueo un poco más avanzado podemos usar el signo de barra | y solicitar la modificación de una palabra de algunas formas básicas:
"La" + 3, s, |f + 4, adj, |k
Los valores que puede tomar este comando son:
Se pueden agregar varios comandos juntos seguidos para combinarlos.
s, f, pl + adj, |cfs
Puedes intentar conjugar o agregar terminaciones “inteligentes” con el signo de =. La Changa intentará “embonar” el final de la palabra con la terminación/conjugación señalada. Para esto tal vez necesite eliminar unas letras del final de la palabra antes de unirla con la terminación.
s, =osa + v, =adora
De forma experimental se pueden usar dos signos de igual seguidos para intentar “comer más letras” al final de la palabra a la que queremos añadir alguna dicencia o terminación.
v, ==ó + "su" + v, ==adera
La Changa tiene una excelente memoria y le podemos solicitar que repita cualquier palabra anterior:
2, v, *é + "la" + 3, s, |f + ". Dije:" + (1) + (-3), |s
El conteo se realiza por los signo de + aunque en el caso de literales pueda tratarse de más de una palabra. Se contará siempre de izquierda a derecha desde el principio excepto en el caso de números negativos, donde se contará para atrás desde la posición actual.
Como nota final agregaré que cada palabra se separará con un espacio. Sin embargo podemos escribir signos de puntuación: ”; : , . -” y el espacio anterior a ellos será eliminado si se encuentran al principio de una palabra o frase entrecomillada. La Changa también eliminará el espacio de separación si encuentra un asterisco * al principio o al final de una palabra o frase entrecomillada. Note el comportamiento en el siguiente ejemplo:
v, 3, |c + ". Esa" + adj, f + s, |f + "ultra*" + 3,adj,f + "."
El comando |c sirve para escribir la palabra empezando con mayúscula. Se puede usar el comando |k para CAPITALIZAR.
Estos comandos tienen sus propios vericuetos y son un poco más complicados de usar así que los presentaré en esta sección, más abajo de los comandos comúnes.
Con el signo porcentual % podemos indicar con qué letras deberá empezar y/o terminar una palabra. No se toman en cuenta acentos:
%or + a%o/a
La primera palabra terminará en or y la segunda empezará en a y terminará en o o en a. Ejemplo:
prendedor azotehuela
Podemos hacer lo mismo pero con la escritura fonética de la palabra usando dos veces signo porcentual %%. Para hacerlo debemos considerar la siguiente tabla de conversión:
Original | Fonétiko |
---|---|
ce, ci | se, si |
ca, co, cu | ka, ko, ku |
que, qui | ke, ki |
z | s |
v | b |
h | desaparece |
ch | ch |
ll | y |
y al final | i |
Se le pueden solicitar palabras a la Changa con determinadas vocales. Sólo las últimas tres (3) de cada palabra. Para lograr esto usamos los paréntesis cuadrados:
[u] + [i/e] + [o | i] + [o | o | a/e/i], s
La Changa escribirá cuantro (4) palabras. En la 1ª una palabra con u como última vocal. Esto no forzosamente significa que la palabra en sí termine en u. En la 2ª palabra la Changa devolverá una terminada en i o en e. La 3ª palabra será una con una i en la última vocal y una o en la penúltima. La 4ª y última palabra será un sustantivo con o en la antepenúltima vocal, o en la penúltima y a,e o i en la última. Ejemplo:
tragaluz culiche psicosis xoconoxtle
Se pueden solicitar diptongos [ui]. No hace caso a acentos, para eso use los comandos de acentuación.
Es posible indicar qué tan común debe ser una palabra mediante el comando n/m:
20/200,s
Por default todas las palabras que devuelve la changa van en el rango de 0 a 999. Siendo 0 las palabras poco comunes y 999 las muy comunes. En el ejemplo, el rango 20/200 nos devolverá una palabra (un sustantivo) relativamente común pero (ojalá) no demasiado.
Puedes modificar el rango de frecuencia de uso de todas las palabras siguiendo la opción de configuración que tiene el signo de un engrane.
Estos valores se obtuvieron a través de los textos subidos por los autores de la Tortilleria Editorial.
Podemos solicitar un verbo conjugado mediante la siguiente estructura: { Tipo_de_conjugación | x % y }, donde x es uno o más caracteres que debe contener el verbo al inicio y y al final (ambos en infinitivo).
{s_i_p_y},|c + "," + {s_i_p_y|%er} + "lo que tú" + {s_i_p_t|co%},*.
Note que debemos agregar la persona de la conjugación al final: _y (yo), _t (tú), _e (él), _n (nosotros), _v (vosotros), _l (ellos).
Tipo_de_conjugación puede tomar uno de los valores de la lista siguiente.
s_i_p_y => (yo) amo s_i_p_t => (tú) amas s_i_p_e => (él) ama s_i_p_n => (nosotros) amamos s_i_p_v => (vosotros) amáis s_i_p_l => (ellos) aman
s_i_pi_y => (yo) amaba s_i_pi_t => (tú) amabas s_i_pi_e => (él) amaba s_i_pi_n => (nosotros) amábamos s_i_pi_v => (vosotros) amabais s_i_pi_l => (ellos) amaban
s_i_f_y => (yo) amaré s_i_f_t => (tú) amarás s_i_f_e => (él) amará s_i_f_n => (nosotros) amaremos s_i_f_v => (vosotros) amaréis s_i_f_l => (ellos) amarán
s_i_c_y => (yo) amaría s_i_c_t => (tú) amarías s_i_c_e => (él) amaría s_i_c_n => (nosotros) amaríamos s_i_c_v => (vosotros) amaríais s_i_c_l => (ellos) amarían
s_i_pps_y => (yo) amé s_i_pps_t => (tú) amaste s_i_pps_e => (él) amó s_i_pps_n => (nosotros) amamos s_i_pps_v => (vosotros) amasteis s_i_pps_l => (ellos) amaron
s_s_p_y => (yo) ame s_s_p_t => (tú) ames s_s_p_e => (él) ame s_s_p_n => (nosotros) amemos s_s_p_v => (vosotros) améis s_s_p_l => (ellos) amen
s_s_pi_y => (yo) amara s_s_pi_t => (tú) amaras s_s_pi_e => (él) amara s_s_pi_n => (nosotros) amáramos s_s_pi_v => (vosotros) amarais s_s_pi_l => (ellos) amaran
s_s_pi2_y => (yo) amase s_s_pi2_t => (tú) amases s_s_pi2_e => (él) amase s_s_pi2_n => (nosotros) amásemos s_s_pi2_v => (vosotros) amaseis s_s_pi2_l => (ellos) amasen
s_s_f_y => (yo) amare s_s_f_t => (tú) amares s_s_f_e => (él) amare s_s_f_n => (nosotros) amáremos s_s_f_v => (vosotros) amareis s_s_f_l => (ellos) amaren
s_im_y => ama (tú) s_im_e => ame (él, usted) s_im_n => amemos (nosotros) s_im_v => amad (vosotros) s_im_l => amen (ellos, ustedes)
s_in => amar
s_ge => amando
s_pp => amado
c_i_ppc_y => (yo) he amado c_i_ppc_t => (tú) has amado c_i_ppc_e => (él) ha amado c_i_ppc_e => (él) hay amado c_i_ppc_n => (nosotros) hemos amado c_i_ppc_v => (vosotros) habéis amado c_i_ppc_l => (ellos) han amado
c_i_ppl_y => (yo) había amado c_i_ppl_t => (tú) habías amado c_i_ppl_e => (él) había amado c_i_ppl_n => (nosotros) habíamos amado c_i_ppl_v => (vosotros) habíais amado c_i_ppl_l => (ellos) habían amado
c_i_pa_y => (yo) hube amado c_i_pa_t => (tú) hubiste amado c_i_pa_e => (él) hubo amado c_i_pa_n => (nosotros) hubimos amado c_i_pa_v => (vosotros) hubisteis amado c_i_pa_l => (ellos) hubieron amado
c_i_fp_y => (yo) habré amado c_i_fp_t => (tú) habrás amado c_i_fp_e => (él) habrá amado c_i_fp_n => (nosotros) habremos amado c_i_fp_v => (vosotros) habréis amado c_i_fp_l => (ellos) habrán amado
c_i_cp_y => (yo) habría amado c_i_cp_t => (tú) habrías amado c_i_cp_e => (él) habría amado c_i_cp_n => (nosotros) habríamos amado c_i_cp_v => (vosotros) habríais amado c_i_cp_l => (ellos) habrían amado
c_s_ppl_y => (yo) hubiera amado c_s_ppl_t => (tú) hubieras amado c_s_ppl_e => (él) hubiera amado c_s_ppl_n => (nosotros) hubiéramos amado c_s_ppl_v => (vosotros) hubierais amado c_s_ppl_l => (ellos) hubieran amado
c_s_ppl_y => (yo) hubiese amado c_s_ppl_t => (tú) hubieses amado c_s_ppl_e => (él) hubiese amado c_s_ppl_n => (nosotros) hubiésemos amado c_s_ppl_v => (vosotros) hubieseis amado c_s_ppl_l => (ellos) hubiesen amado
c_s_fp_y => (yo) hubiere amado c_s_fp_t => (tú) hubieres amado c_s_fp_e => (él) hubiere amado c_s_fp_n => (nosotros) hubiéremos amado c_s_fp_v => (vosotros) hubiereis amado c_s_fp_l => (ellos) hubieren amado
c_in => haber amado
c_ge => habiendo amado
Para solicitar un verbo pronominal simplemente debemos agregar un punto ”.” sin las comillas inmediatamente después de abrir la llave ”{”.
{.s_ge} => poltronizándose //* Comete errores de ortografía//
Es posible usar un verbo conjugado anteriormente y mediante la memoria de la changa solicitarle que lo repita conjugado de otra manera. Para esto usamos el signo de ! e inmediatamente después ponemos el comando de la nueva conjugación.
{s_ge}+s,f+(1),!{c_s_ppl_n}+(2),|s => acaparando aldea hubiéramos acaparado aldeas => gayando espiga hubiéramos gayado espigas
Los n-Gramas son básicamente grupos de 2 a 5 palabras ordenadas. Se obtienen generando un corpus de textos en un idioma, tratando de que el corpus sea lo suficienctemente grande y “balanceado”. Se dividen todos los textos en frases de 2, 3, 4 y 5 palabras. Se cuentan las repeticiones de estas frases y se ordenan desde el n-grama más común, por ejemplo: “de la”, en el caso de 2 palabras o “desde el punto de vista”, en el caso de 5 palabras; hasta algo menos común como “grandes sectores del pueblo argentino”. En nuestro caso la Changa ha aprendido los 50,000 n-gramas más comunes de 2, 3, 4 y 5 palabras del mal llamado “Corpus del Español”. Esto hace un total de 200,000 frases, propiamente, n-gramas de 2, 3, 4 y 5 palabras.
Puedes solicitar n-gramas de muchas formas distintas. Si deseas un n-grama al azar de los 200,000 disponibles puedes usar algo tan simple como:
{1}
Si quisieras uno al azar de 4 palabras y otro de 3 puedes usar:
{4}+{3}
Se usan los corchetes o llaves {} y deben incluir adentro de ellas un número del 1 al 5:
{1 … } | Un n-grama al azar de entre 2 y 5 palabras |
{2 … } | Un n-grama al azar de 2 palabras |
{3 … } | Un n-grama al azar de 3 palabras |
{4 … } | Un n-grama al azar de 4 palabras |
{5 … } | Un n-grama al azar de 5 palabras |
Si usamos el comando p podemos indicar que el n-grama solicitado deberá contener la palabra:
{4p=mundo}
Esto solicitará a la Changa un n-grama de 4 palabras (4-grama) y que alguna de ellas sea mundo.
También podemos solicitar un n-grama de 5 palabras y que una de ellas termine en ojo con el caracter de comodín %:
{5p=%ojo}
O que empiece con anti:
{5p=anti%}
Podemos indicar en qué lugar específico del n-grama debe aparecer la palabra:
{5p1=yo}
En el ejemplo anterior se mostrará un 5-grama cuya primera palabra será yo.
Podemos solicitar varias características con el signo de barra | de la siguiente forma:
{5p1=yo|p2=no}
Lo anterior nos mostrará un 5-grama cuya primera palabra sea yo y la segunda no.
Podemos solicitar un tipo de palabra en alguna posición de forma similar usando el comando c en vez de p:
{5p1=yo|c5=i}
El ejemplo anterior nos mostrará un 5-grama que comience por yo y acabe en un verbo intransitivo (indicado por la letra i).
m | masculino |
f | femenino |
p | plural |
s | singular |
3 | tercera persona |
n | sustantivo (noun) |
l | artículo |
v | verbo |
i | verbo intransitivo |
* Más comandos próximamente.
Cuando solicitamos un n-grama de 2 a 5 palabras al azar con el índice 1 podemos indicar sobre la última y penúltima palabras (no importando cuántas palabras tenga el n-grama resultado) con los sibíndices 6 y 7 respectivamente.
El siguiente ejemplo mostrará un n-grama de 2 a 5 palabras donde la última sea quiero:
{1p6=quiero}
El siguiente ejemplo intentará encontrar un n-grama de 2 a 5 palabras donde la penúltima palabra sea no y la última quiero:
{1p7=no|p6=quiero}
Combina las posibilidades:
{1c1=l|p=ojo|c6=n},|c,*. => El ojo del huracán. => El mal de ojo. => Un ojo.
Se puede solicitar una palabra como si fuera un n-grama señalando un 0 después de la llave:
{0c1=vr}+{0c1=nn} => comer pinole
Tabla 1
Letra | Descripción | Ejemplo | Explicación |
---|---|---|---|
p | Define una palabra | p1=pero | La primera palabra será pero |
p (%) | Define parte de una palabra | p1=%ar | La primera palabra acabará en ar |
c | Características semánticas | c1=v | La primera palabra será un verbo (v. Características) |
c | Características completas | c1=vif-1p | Verbo conjugado en Indicativo Futuro de la 1ª persona del plural |
c (%) | Características variadas | c1=v%1p | La primera palabra será un verbo conjugado en 1ª persona del plural |
s | Número de sílabas | s2=3 | La segunda palabra será de 3 sílabas |
a | Acentuación | a1=3 | La primera palabra será esdrújula (v. Tabla 2) |
z | Última vocal | z4=a | La última vocal de la cuarta palabra será a |
y | Penúltima vocal | y2=e | La penúltima vocal de la segunda palabra será e |
x | Antepenúltima vocal | x2=o | La antepenúltima vocal de la segunda palabra será o |
f | Palabras finales | f5 | La quinta palabra será terminante |
t | Total de sílabas | t=12 | El n-grama tendrá un total de 12 sílabas |
Tabla 2
Num | Acentuación | Ejemplo | Explicación |
---|---|---|---|
1 | Aguda | a1=1 | La primera palabra será aguda |
2 | Grave | a2=2 | La segunda palabra será grave |
3 | Esdrújula | a1=3 | La primera palabra será esdrújula |
4 | Sobreesdrújula | a3=4 | La tercera palabra será sobreesdrújula |
5 | Adverbio-mente | a1=5 | La primera palabra será un adverbio acabado en -mente |
6 | Doble acento | a1=6 | La primera palabra será formada por una composición de dos pronombres personales átonos |
La changa sabe hacer cosas raras, algunas de ellas desconocidas incluso para mi. Acá pondré ejemplos de changas que generan resultados interesantes con la esperanza de irlos agregando a la documentación.
Para “jalar” uno de los últimos 10 tuits de cualquier cuenta de twitter basta con escribir su tag:
@changapoeta
Podemos tratarlo como una parte más de nuestra changa, por ejemplo:
{1p6=dijo},|c+":"+@changapoeta+"."+