La Changa Poeta Poeta versión Python

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.

La Changa Poeta v1.1 (final)

Documentación de la Changa Poeta

¿Qué es la Changa Poeta?

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.

Guía rápida de comandos de la Changa Poeta v1+

Separar palabras

Para separar las palabras o frases se usa el signo:

  +

Tipos de palabras

Para solicitar una palabra por tipo (sustantivo, adjetivo, adverbio, etc) escribimos la abreviatura:

  s + adj

Número de sílabas

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/

Frases literales

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%

Variedades literales

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.

Acentuación de la palabra

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:

  • agu - Las palabras agudas son aquellas que tienen el acento prosódico en la última sílaba.
  • gra - Las palabras llanas (o graves) son aquellas que tienen el acento prosódico en la penúltima sílaba.
  • esd - Las palabras esdrújulas son aquellas que tienen el acento prosódico en la antepenúltima sílaba.
  • sob - Las palabras sobreesdrújulas son aquellas que tienen el acento prosódico en una sílaba anterior a la antepenúltima sílaba.
  • mente - Se trata de un adverbio de modo terminado en -mente (palabra con dos acentos).
  • prope - Esta es una forma verbal dada por la composición de dos pronombres personales átonos con una forma verbal menor (ej:trá-e-me-la, cómetelo).

Varios comandos para una palabra

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

Terminaciones y modificaciones comunes de las palabras

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:

  • feminizar |f
  • masculinizar |m
  • pluralizar |s
  • Primera letra mayúscula |c
  • CAPITALIZAR |k

Se pueden agregar varios comandos juntos seguidos para combinarlos.

  s, f, pl + adj, |cfs

Conjugaciones y terminaciones "inteligentes"

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

Memoria de palabras

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.

Modificación de los espacios entre las palabras

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 + "." 

Mayúscula al principio y CAPITALIZAR

El comando |c sirve para escribir la palabra empezando con mayúscula. Se puede usar el comando |k para CAPITALIZAR.

Comandos avanzados

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.

Rimas consonantes, comienzos y finales de palabras

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

Rimas asonantes

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.

Frecuencia de uso

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.

Verbos conjugados

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 (), _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 - Formas simples Indicativo Presente
      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 - Formas simples Indicativo Pretérito imperfecto
      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 - Formas simples Indicativo Futuro
      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 - Formas simples Indicativo Condicional
      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 - Formas simples Indicativo Pretérito perfecto simple
      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 - Formas simples Subjuntivo Presente
      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 - Formas simples Subjuntivo Pretérito imperfecto
      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 - Formas simples Subjuntivo Pretérito imperfecto (segunda versión)
      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 - Formas simples Subjuntivo Futuro
      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 - Formas simples Imperativo
      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 - Formas simples Infinitivo
      s_in => amar
  • s_ge - Formas simples Gerundio
      s_ge => amando
  • s_pp - Formas simples Participio pasivo
      s_pp => amado 
  • c_i_ppc - Formas compuestas Indicativo Pretérito perfecto compuesto
      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 - Formas compuestas Indicativo Pretérito pluscuamperfecto
      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 - Formas compuestas Indicativo Pretérito anterior
      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 - Formas compuestas Indicativo Futuro perfecto
      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 - Formas compuestas Indicativo Condicional perfecto
      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 - Formas compuestas Subjuntivo Pretérito pluscuamperfecto
      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 - Formas compuestas Subjuntivo Pretérito pluscuamperfecto (segunda versión)
      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 - Formas compuestas Subjuntivo Futuro perfecto
      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 - Formas compuestas Infinitivo compuesto
      c_in => haber amado
  • c_ge - Formas compuestas Gerundio compuesto
      c_ge => habiendo amado 

Verbos pronominales

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//

Volver a conjugar verbos en la memoria

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

¿Qué son y cómo usar los n-Gramas?

Qué son los n-Gramas

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.

Cómo usar n-gramas en la Changa Poeta

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
OJO: Los corchetes también se usan para otras funciones avanzadas como los verbos conjugados. El hecho de que se incluya un número del 1 al 5 inmediatamente después de abrir la llave es lo que indica a la Changa que se trata de una solicitud de n-grama y no otra cosa. Un número fuera de este rango o cualquier otro caracter hará pensar a Changa que se trata de un verbo conjugado, u otra cosa...

Indicar una palabra o parte de ella en alguna posición del n-grama

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.

Combinar propiedades de un n-grama

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.

Indicar un tipo de palabra posición del n-grama

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).

Tabla de comandos (c) para n-gramas
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.

Comandos especiales

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.

Llamar palabras con la nomenclatura de los n-gramas

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

N-Gramas Extendido

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

Ejemplos sin documentación

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.

Jalar un tuit e incorporarlo a una changa.

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+"."+

Contacto