examples - algorithms book
¿Cómo escribirías un programa para generar Haiku? (22)
"Transmitir el estado de ánimo en diecisiete sílabas es muy difícil ..." (El gran John Cooper Clarke Echa un vistazo a Beasley Street , uno de mis favoritos)
¿Cuánto más difícil es para una computadora? La lógica no conoce estados de ánimo :)
Computadora Haiku
¿Cómo escribirías un programa?
Para hacerlos para ti
Algunas personas aquí sugirieron usar un diccionario y generar secuencias de palabras usando una Cadena de Markov . Parece una solución teóricamente viable, especialmente si usa una cadena de Markov de alto orden (no biagramo o trigramas).
Pero creo que en la práctica funcionaría mejor si pudiera recopilar una base de datos de haikus existentes y cambiar selectivamente palabras sueltas en ellos (por ejemplo, cambiar una palabra dada por otra palabra semánticamente relacionada). Los haikus existentes te dan algún tipo de estructura y cohesión, y solo necesitas (ex) cambiar pequeñas partes en ellos para crear un nuevo haiku (una variación del antiguo).
Por supuesto que no serán haikus completamente nuevos con este método, pero al menos serán algo agradables para los lectores.
Analice los haikus existentes en un orden relacional, como la palabra xx utilizada después de yy n veces. Entonces, al crear, la posibilidad de que xx venga después de yy será (n / suma del recuento de todas las palabras usadas después de yy). De esta forma, se aleatorizará selectivamente y aún puede ser un haiku válido.
Buscaría programación sintáctica y lingüística e intentaré encontrar bibliotecas para la estructura gramatical. A partir de ahí, debería ser un simple paso agregar las restricciones de conteo de palabras y recuento de sílabas.
Comenzaría con algún tipo de archivo de diccionario que contenga un recuento de sílabas de cada palabra. A continuación, elija las palabras de esa suma para las sílabas / línea requeridas
En cuanto a hacerlo poesía, y no solo palabras aleatorias, no tengo idea.
Del suceso semántico de la historia se usa el muestreo y la transformación de Fourier. Elija partes significativas de alguna descripción detallada reducida en palabras sueltas y deje que el lector complete las lagunas con su propia imaginación
El algoritmo para tener una salida de computadora de alta calidad de haiku funciona de la siguiente manera:
Fase de configuración
loop:
find the email address of a world-renowned writer of haiku
confirm that this person is willing to generate haiku on demand
until sucker^H^H^H^H^H^Hwriter is found
Fase de ejecución
loop:
wait for a haiku request
when a haiku request is received, email the previously-stored master and ask for a haiku
wait for the haiku to return by reply
output haiku
Por supuesto, hay varias mejoras que se pueden hacer sobre esta arquitectura fundamental. Por ejemplo, la fase de configuración se puede ampliar para configurar un grupo de expertos en haiku. La fase de ejecución se puede utilizar para generar haiku durante tiempos de inactividad y almacenarlos en caché contra la demanda futura. Los detalles de tales ajustes se dejan como un ejercicio para el estudiante.
En Haiku Village , tenemos la tecnología para hacer esto fácilmente en una variedad de formas. Una idea es simplemente leer el feed global de Twitter y detectar haikus involuntarios. Como el back-end también tiene un diccionario, sería posible producir haikus cuestionables, pero creo que faltaría la calidad.
Creo que si tuviéramos un sistema de clasificación por estrellas, entonces supongo que el aprendizaje automático podría usarse para decidir qué es ''bueno''.
Escribe tu programa para generar Haiku en japonés. Será mucho más fácil medir tu recuento de sílabas, si te mantienes fiel al idioma original de la poesía. Si tiene flexibilidad con el proyecto, ¿por qué no hacer el japonés original? A continuación, muestre la traducción literal palabra por palabra literal a su lado. Se verá misterioso por decir lo menos.
De todos modos, solo una forma diferente de abordar el problema.
Los Haikus son fáciles, eso lo notaré
Soluciones bien documentadas y funciones de memoria
Son exagerados y cursi
Codificar demasiado fácil
Codifícame un limerick, luego votaré
// En realidad me gusta haikus
Me encanta esta pregunta Es muy imaginativo Responda abajo.
Mucha gente ha sugerido cadenas de Markov, pero realmente no creo que sea posible. Necesitas saber inteligentemente si la sílaba es un PHONEMES, entonces debes saber dónde termina la sílaba.
Si alguna vez hicieras esto, me sorprendería.
Medir sílabas
Comprender el flujo semántico
Tu objetivo se puede cumplir
No lo intentes
La poesía no se mezcla bien
Con metal y pedacitos
Más en serio, el buen haiku (e incluso el malo del haiku) es mucho más sobre condensar significado e imágenes que contar sílabas. En general, también se basa en temas recogidos de la naturaleza. La generación aleatoria de palabras y el conteo de sílabas te harán meditar un galimatías, pero no poesía ...
No todos los haikus tienen el mismo número de sílabas, pero es un buen lugar para comenzar.
En términos de realmente elegir las palabras, creo que las partes del discurso no serían el lugar donde comenzaría. En su lugar, miraría las cadenas de Markov y entrenaré tu vocabulario en haikus existentes.
Para hacerlo legible, separe el diccionario en sustantivos, verbos, adjetivos, con recuento de sílabas.
Vamos con algunas plantillas del formulario:
[Sustantivo] [Verbo] "s"
[Verbo] a (n) [Adjetivo] [Sustantivo]
[adjetivo] [sustantivo]
y recorta tus diccionarios a las bellas palabras.
Podrías, además de usar la idea de Ian contar las sílabas, también categorizar las palabras por parte del discurso y generar frases.
Primero, querrás mirar las cadenas de Markov , y segundo, hay un libro sobre poesía generada por computadora llamada Virtual Muse .
Secuencias de Markov
Una base de datos silábica
Tres líneas de pitón
Tu programa debe grok
Metáforas e imágenes
Y sé creativo.
implementar un algoritmo genético para generar haikus extraídos de un diccionario anotado con recuentos de sílabas, luego pagarle a la gente para que los lea y calificarlos como la función de acondicionamiento físico [turk mecánico ayudaría]. Con el tiempo, su programa debería evolucionar algunos buenos.
EDITAR:
una GA que necesitas
evoluciona a la velocidad de la CPU
si estás en forma, escucha
for (i is 0
and i is less than thirteen)
print s i plus plus
- contar las sílabas
- generar palabras al azar
- organizar con sensatez