¿Cómo escribirías un programa para generar Haiku? [cerrado]


78

Computer Haiku
¿Cómo escribirías un programa
para hacerlos para ti?


7
Contrata una cantidad infinita de monos. Además de las obras completas de Shakespeare, obtendrás un número infinito de Haikus.
Jon B

1
@Jon B: Pero eso llevaría muchísimo tiempo.
Bill the Lizard

+1 para la pregunta y los comentarios hasta ahora.
Michael Haren

1
@Bill, si tuvieras una cantidad infinita de tiempo, solo necesitarías contratar un mono muy saludable. Si contrata un número infinito de monos, su literatura se producirá a un ritmo limitado sólo por la velocidad de escritura de un mono particularmente brillante.
joeforker

1
@Darknight, bueno porque los Haikus, por definición, se componen de 17 moras y el número de moras (u ons) es finito. Por lo tanto, el número de combinaciones, que posiblemente sea menor que el número de Haikus reales, es número_de_moras ^ 17. Esto es solo en lo que respecta a la representación escrita del Haiku, no a su significado. (El número de significados podría ser infinito, incluso para un número mucho menor de haikus, sin embargo, no se solicitó escribir un programa que interprete un haiku, sino que solo lo escriba)
Unrazon

Respuestas:


19

No lo intentes La
poesía no se mezcla bien
Con metal y bits

Más en serio, un buen haiku (e incluso un mal haiku) se trata más de condensar significado e imágenes que de contar sílabas. Generalmente también se basa en temas extraídos de la naturaleza. La generación aleatoria de palabras y el recuento de sílabas te darán un galimatías medido, pero no poesía ...


6
No lo sé. La búsqueda de significado en la aleatoriedad parece profundamente humana. ¿Qué es un poema al que no se le ha dado ningún significado, sino sólo el significado que le ha quitado el lector? ¿Es un modelo de humanismo secular?
joeforker

"... contar sílabas te dará un galimatías mesurado, pero no poesía". ... pensé que decir la diferencia era de lo que se trataba "leer poesía".
Mizipzor

34

Medir las sílabas
Comprender el flujo semántico
Su objetivo se puede alcanzar



10
  • contar las sílabas
  • generar palabras al azar
  • arreglar con sensatez

Hubiera sido mucho mejor sin tu comentario. Eso es un poco como recordando que "La última frase, ya sabes, que era el remate. ¿Lo tienes?"
Mizipzor

ok, bien, borraré el comentario si borras el tuyo
Jason S

(La mía de FWIW fue la primera respuesta inteligente, así que tenía cuidado de no ser votado)
Jason S

9

Los haikus son fáciles, notaré
Soluciones bien documentadas y funciones de memoria
Son exageradas y cursis
Codificación demasiado fácil
Codifícame con un limerick, luego votaré

// De hecho, me gustan los haikus


1
+1 a la mejor poesía del mundo.
Fenton

¿Cuántas horas me tomó encontrar algo con que rimar notey vote?
new123456

@ new123456 abrigo? ¿foso? ¿citar? ¿bote? ¿cabra? ¿totalizador? ¿flotador? ¿Croata? (ok, el último es un tramo)
PaulMcG

@PaulMcGuire Está bien, pero el código no flota, ¿verdad? Quise decir algo que rima en contexto;).
new123456

Bueno, algo de código definitivamente cabra ;)
BenjaminRH

5

No todos los haikus tienen el mismo número de sílabas, pero es un punto de partida.

En términos de elegir realmente las palabras, creo que las partes del discurso no serían el lugar donde comenzaría. En cambio, miraría las cadenas de Markov y entrenaría su vocabulario sobre los haikus existentes.


cadena de markov en pares o más de palabras de haikus y otra poesía creo que sería bastante bueno!
nlucaroni

En realidad, los haikus tienen el mismo número de sílabas, esa es su definición: en.wikipedia.org/wiki/Haiku
Mnementh

Mmm, lee esto también: en.wikipedia.org/wiki/Haiku#Contemporary_English-language_haiku "Uso de tres (o menos) líneas de 17 o menos sílabas"
Jonik

3
¡Bah! ¿Haiku en inglés contemporáneo? que mierda.
Kevin

5

En Haiku Village , tenemos la tecnología para hacer esto fácilmente de varias maneras. Una idea es simplemente leer el feed global de Twitter y detectar haikus involuntarios. Dado que el back-end también tiene un diccionario, sería posible producir haikus cuestionables, pero creo que faltaría calidad.

Creo que si tuviéramos un sistema de clasificación por estrellas, supongo que el aprendizaje automático podría usarse para decidir qué es "bueno".


3
for (i is 0
and i is less than thirteen)
print s i plus plus

Creo que tienes un bucle infinito ahí.
Niklas B.

@bobobobo - ¡incorporado para resolver el bucle infinito!
Fenton

2

"Transmitir el estado de ánimo de uno en diecisiete sílabas es muy difícil..." (El gran John Cooper Clarke Echa un vistazo a Beasley Street , una de mis favoritas)

¿Cuánto más difícil para una computadora? La lógica no conoce estados de ánimo :)


Entonces es mucho más fácil, ya que habría menos variables si no hay estados de ánimo. Solo necesitas transmitir indiferencia cada vez.
Fenton

2

Para hacerlo legible, separe el diccionario en Sustantivos, Verbos, Adjetivos, con el conteo de sílabas.

Crea algunas plantillas del formulario:

[Sustantivo] [Verbo] "s"

[Verbo] a (n) [Adjetivo] [Sustantivo]

[adjetivo] [sustantivo]

y recorta tus diccionarios a las hermosas palabras.


2

implementar un algoritmo genético para generar haikus extraídos de un diccionario anotado con recuentos de sílabas, luego pagar a las personas para que los lean y calificarlos como la función de aptitud [Mechanical Turk ayudaría]. Con el tiempo, su programa debería desarrollar algunos buenos.

EDITAR:

un GA que necesita
evoluciona a la velocidad de la CPU
si presta atención a la aptitud


Me encantaría ver una implementación de este. Los algoritmos genéticos me intrigan mucho ...
Erik Forbes


1

Buscaría programación sintáctica y lingüística y trataría de encontrar bibliotecas para la estructura gramatical. A partir de ahí, debería ser un paso simple agregar las restricciones de conteo de palabras y conteo de sílabas.


1

Algunas personas sugirieron usar un diccionario y generar secuencias de palabras usando una cadena de Markov . Esa parece una solución teóricamente viable, especialmente si usa una cadena de Markov de alto orden (no bi o trigramas).

Pero creo que en la práctica funcionaría mejor si pudieras recopilar una base de datos de haikus existentes y cambiar selectivamente palabras individuales en ellas (por ejemplo, cambiar una palabra dada por otra palabra relacionada semánticamente). 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 anterior).

Por supuesto, no serán haikus completamente nuevos con este método, pero al menos serán algo agradables para los lectores.


1

Analice los haikus existentes en un orden relacional, como la palabra xx usada 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 manera, se aleatorizará de forma selectiva y aún puede ser un haiku válido.


Esa es una descripción decente de la idea detrás de las cadenas de Markov. Si la palabra y viene después de la palabra x el 75% del tiempo en la fuente, se elegirá y el 75% del tiempo en la salida.
joeforker

Sin embargo, funciona mejor con conjuntos de tres palabras: qué palabra sigue a estas dos palabras.
SOLO MI OPINIÓN correcta

1

Escriba su programa para generar Haiku en japonés. Será mucho más fácil medir el recuento de sílabas, ya que se mantendrá fiel al idioma original de la poesía. Si tiene flexibilidad con el proyecto, ¿por qué no hacer el japonés original? Luego, muestre la traducción literal en inglés palabra por palabra al lado. Se verá misterioso por decir lo menos.

De todos modos, solo una visión diferente del problema.



0

Comenzaría con algún tipo de archivo de diccionario que contenga un recuento de sílabas de cada palabra. Luego elija palabras que sumen las sílabas / línea requeridas

En cuanto a hacerlo poesía, y no solo palabras al azar, no tengo idea.


Poesía versus palabras al azar, ¿quién puede notar la diferencia? ;-)
joeforker

Los programas de conversión de texto a voz vienen con diccionarios de pronunciación.
joeforker

0

Además de utilizar la idea de Ian sobre el conteo de sílabas, podrías categorizar las palabras por parte del discurso y generar frases.


0

Desde el sude semántico de la historia, use muestreo y transformación de Fourier. Elija partes significativas de una descripción detallada reducida en palabras simples y deje que un lector llene los espacios con su propia imaginación


Explique cómo se puede deconstruir una historia como una suma de ondas seno o coseno de varias frecuencias.
joeforker

bueno, ¿cuál es la idea de muestreo? muestrear la señal con una frecuencia que sea al menos el doble de la frecuencia más alta en el rango de interés. si tiene información discreta extraída de esta manera, puede reconstruir la entrada analógica sin ninguna pérdida (en el rango interesado)
Boris Pavlović

De manera análoga a esto, coge verbos, sustantivos y adjetivos significativos que son piedras angulares en alguna descripción y deja todo lo demás. componga estas palabras en matrices significativas y obtendrá haiku
Boris Pavlović

0

El algoritmo para hacer que una computadora genere un haiku de alta calidad funciona así:

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 realizar en esta arquitectura fundamental. Por ejemplo, la fase de configuración se puede extender para configurar un grupo de expertos en haiku. La fase de ejecución se puede utilizar para generar haiku durante los tiempos de inactividad y almacenarlos en caché contra la demanda futura. Los detalles de tales ajustes se dejan como ejercicio para el estudiante.


-1

Amo 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 FONEMAS, entonces tienes que saber dónde termina la sílaba.

Si alguna vez hicieras esto, me sorprendería.


En algún momento, es posible que desee buscar qué significan realmente las palabras que usa en inglés.
SOLO MI OPINIÓN correcta
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.