Wie würden Sie ein Programm schreiben, um Haiku zu generieren? [geschlossen]


78

Computer Haiku
Wie würden Sie ein Programm schreiben,
um sie für Sie zu erstellen?


7
Mieten Sie unendlich viele Affen. Zusätzlich zu den vollständigen Werken von Shakespeare erhalten Sie unendlich viele Haikus.
Jon B

1
@ Jon B: Aber das würde unendlich lange dauern.
Bill the Lizard

+1 für die Frage und die bisherigen Kommentare.
Michael Haren

1
@ Bill, wenn du unendlich viel Zeit hättest, müsstest du nur einen sehr gesunden Affen mieten. Wenn Sie eine unendliche Anzahl von Affen einstellen, wird Ihre Literatur mit einer Geschwindigkeit produziert, die nur durch die Schreibgeschwindigkeit eines besonders brillanten Affen begrenzt ist.
Joeforker

1
@ Darknight, na ja, weil Haikus per Definition aus 17 Moras bestehen und die Anzahl der Moras (oder Ons) endlich ist. Daher ist die Anzahl der Kombinationen, die wohl geringer ist als die Anzahl der tatsächlichen Haikus, die Anzahl der Moras ^ 17. Dies betrifft nur die schriftliche Darstellung des Haiku, nicht seine Bedeutung. (Die Anzahl der Bedeutungen könnte tatsächlich unendlich sein, selbst für eine viel kleinere Anzahl von Haikus, es wurde jedoch nicht aufgefordert, ein Programm zu schreiben, das ein Haiku interpretiert, sondern nur schreibt.)
Unreason

Antworten:


19

Versuchen Sie
es nicht Poesie passt nicht gut
mit Metall und Bits

Im Ernst, beim guten Haiku (und sogar beim schlechten Haiku) geht es viel mehr darum, Bedeutung und Bildsprache zu verdichten, als Silben zu zählen. Es basiert in der Regel auch auf Themen aus der Natur. Durch zufällige Wortgenerierung und Silbenzählung erhalten Sie gemessenen Kauderwelsch, aber keine Poesie ...


6
Ich weiß es nicht. Die Suche nach Sinn in Zufälligkeit scheint zutiefst menschlich. Was ist ein Gedicht, dem keine Bedeutung beigemessen wurde, sondern nur die Bedeutung, die der Leser daraus gezogen hat? Ist es ein Modell des säkularen Humanismus?
Joeforker

"... Silbenzählung bringt dich dazu, Kauderwelsch zu messen, aber keine Poesie." ... Ich dachte, den Unterschied zu erkennen, war das, worum es beim "Lesen von Gedichten" ging.
Mizipzor

34

Silben messen
Semantischen Fluss verstehen
Ihr Ziel kann erreicht werden



10
  • Zähle die Silben
  • generiere zufällig Wörter
  • vernünftig arrangieren

Ohne Ihren Kommentar wäre es ach so viel besser gewesen . Das ist ein bisschen so, als würde man das Publikum daran erinnern, dass "der letzte Satz, weißt du, das war die Pointe. Hast du ihn verstanden?"
Mizipzor

ok, gut, ich werde den Kommentar löschen, wenn Sie Ihren löschen
Jason S

(FWIW meine war die erste kluge Antwort, also war ich vorsichtig, abgelehnt zu werden)
Jason S

9

Haikus sind einfach, ich werde feststellen, dass
Lösungen gut dokumentiert sind und funktionieren.
Sie sind übertrieben und kitschig.
Codierung viel zu einfach.
Codiere mir einen Limerick, dann werde ich abstimmen

// Ich mag eigentlich Haikus


1
+1 für die beste Poesie der Welt.
Fenton

Wie viele Stunden hat es gedauert , etwas zu finden , mit Reim noteund vote?
new123456

@ new123456 Mantel? Graben? Zitat? Boot? Ziege? Tasche? schweben? Kroatisch? (ok, der letzte ist eine Strecke)
PaulMcG

@PaulMcGuire Okay, aber der Code schwebt nicht, oder? Ich meinte etwas, das sich im Kontext reimt;).
new123456

Nun, einige Code definitiv Ziege s;)
BenjaminRH

5

Nicht alle Haikus haben die gleiche Anzahl von Silben, aber es ist ein Anfang.

In Bezug auf die tatsächliche Auswahl der Wörter denke ich, dass Teile der Sprache nicht der Ort sind, an dem ich anfangen würde. Stattdessen würde ich mir Markov-Ketten ansehen und Ihren Wortschatz auf vorhandenen Haikus trainieren.


Markov-Kette an Paaren oder mehr Wörtern aus Haikus und anderen Gedichten, die ich für verdammt gut halte!
Nlucaroni

Eigentlich haben Haikus die gleiche Anzahl von Silben, das ist ihre Definition: en.wikipedia.org/wiki/Haiku
Mnementh

Hmm, lesen Sie dies auch: en.wikipedia.org/wiki/Haiku#Contemporary_English-language_haiku "Verwendung von drei (oder weniger) Zeilen mit 17 oder weniger Silben"
Jonik

3
bah! Zeitgenössisch-englisches Haiku? Was für ein Mist.
Kevin

5

In Haiku Village verfügen wir über die Technologie, um dies auf verschiedene Weise zu tun. Eine Idee ist, einfach den globalen Twitter-Feed zu lesen und unbeabsichtigte Haikus zu erkennen. Da das Backend auch ein Wörterbuch hat, wäre es möglich, fragwürdige Haikus zu produzieren, aber ich denke, die Qualität würde fehlen.

Ich denke, wenn wir ein Sternebewertungssystem hätten, dann könnte maschinelles Lernen verwendet werden, um zu entscheiden, was „gut“ ist.


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

Ich denke, Sie haben dort eine Endlosschleife.
Niklas B.

@bobobobo - integriert, um die Endlosschleife zu lösen!
Fenton

2

"Es ist sehr schwierig, seine Stimmung in siebzehn Silben zu vermitteln." (Der großartige John Cooper Clarke Schauen Sie sich die Beasley Street an , einen meiner Favoriten)

Wie viel schwieriger für einen Computer? Logik kennt keine Stimmungen :)


Dann ist es viel einfacher - da es weniger Variablen geben würde, wenn es keine Stimmungen gibt. Sie müssen nur jedes Mal Gleichgültigkeit vermitteln.
Fenton

2

Um es lesbar zu machen, trennen Sie das Wörterbuch in Substantive, Verben, Adjektive mit Silbenzahl.

Überlegen Sie sich einige Vorlagen des Formulars:

[Nomen] [Verb] "s"

[Verb] a (n) [Adjektiv] [Nomen]

[Adjektiv] [Substantiv]

und schneiden Sie Ihre Wörterbücher auf die schönen Wörter.


2

Implementieren Sie einen genetischen Algorithmus, um Haikus aus einem Wörterbuch zu generieren, das mit Silbenzahlen versehen ist, und bezahlen Sie dann die Leute, um sie zu lesen und als Fitnessfunktion zu bewerten [mechanischer Türke würde helfen]. Im Laufe der Zeit sollte Ihr Programm einige gute entwickeln.

BEARBEITEN:

Ein GA, den Sie benötigen,
entwickelt sich mit CPU-Geschwindigkeit,
wenn Sie die Fitness beachten


Ich würde gerne eine Implementierung dieser sehen. Genetische Algorithmen faszinieren mich sehr ...
Erik Forbes


1

Ich würde nach syntaktischer Programmierung und Sprache suchen und versuchen, Bibliotheken für die grammatikalische Struktur zu finden. Von dort aus sollte es ein einfacher Schritt sein, die Einschränkungen für die Wortanzahl und die Silbenanzahl hinzuzufügen.


1

Einige Leute hier schlugen vor, ein Wörterbuch zu verwenden und Wortsequenzen mit einer Markov-Kette zu generieren . Dies scheint eine theoretisch praktikable Lösung zu sein, insbesondere wenn Sie eine Markov-Kette höherer Ordnung verwenden (keine Bi- oder Trigramme).

Aber ich denke in der Praxis würde es besser funktionieren, wenn Sie eine Datenbank vorhandener Haikus sammeln und einzelne Wörter darin selektiv ändern könnten (z. B. ein bestimmtes Wort in ein anderes, semantisch verwandtes Wort ändern). Die vorhandenen Haikus geben Ihnen eine Art Struktur und Zusammenhalt, und Sie müssen nur kleine Teile in ihnen (austauschen), um ein neues Haiku zu erstellen (eine Variation des alten).

Natürlich werden sie mit dieser Methode keine völlig neuen Haikus sein, aber zumindest werden sie für die Leser etwas angenehm sein.


1

Analysieren Sie vorhandene Haikus in einer relationalen Reihenfolge, wie das Wort xx, das nach yy n-mal verwendet wird. Beim Erstellen besteht also die Möglichkeit, dass xx nach yy kommt (n / Summe der Anzahl aller nach yy verwendeten Wörter). Auf diese Weise wird es selektiv randomisiert und kann immer noch ein gültiges Haiku sein.


Das ist eine anständige Beschreibung der Idee hinter Markov-Ketten. Wenn das Wort y 75% der Zeit in der Quelle nach dem Wort x steht, wird y 75% der Zeit in der Ausgabe ausgewählt.
Joeforker

Es funktioniert jedoch besser mit Sätzen von drei Wörtern: Welches Wort folgt diesen beiden Wörtern?
NUR MEINE korrekte MEINUNG

1

Schreiben Sie Ihr Programm, um Haikus auf Japanisch zu generieren. Es wird viel einfacher sein, Ihre Silbenzahl zu messen, wenn Sie der Originalsprache der Poesie treu bleiben. Wenn Sie Flexibilität mit dem Projekt haben, warum nicht das ursprüngliche Japanisch erstellen - dann zeigen Sie die englische wörtliche Übersetzung Wort für Wort an ihrer Seite. Es wird, gelinde gesagt, mysteriös aussehen.

Wie auch immer, nur eine andere Sicht auf das Problem.



0

Ich würde mit einer Art Wörterbuchdatei beginnen, die eine Silbenzahl jedes Wortes enthält. Wählen Sie dann Wörter aus, die sich zu den erforderlichen Silben / Zeilen addieren

Ich habe keine Ahnung, was Poesie und nicht nur zufällige Worte angeht.


Poesie gegen zufällige Wörter, wer kann den Unterschied erkennen? ;-)
Joeforker

Text-to-Speech-Programme werden mit aussprechenden Wörterbüchern geliefert.
Joeforker

0

Sie können nicht nur Ians Idee der Silbenzahl verwenden, sondern auch die Wörter nach einem Teil der Sprache kategorisieren und Phrasen generieren.


0

Verwenden Sie aus dem semantischen Bereich der Geschichte Sampling und Fourier-Transformation. Wählen Sie wichtige Teile einer detaillierten Beschreibung aus, die in einzelnen Worten reduziert ist, und überlassen Sie es einem Leser, Lücken mit ihrer eigenen Vorstellungskraft zu schließen


Bitte erläutern Sie, wie Sie eine Geschichte als Summe von Sinus- oder Cosinuswellen verschiedener Frequenzen dekonstruieren können.
Joeforker

Nun, was ist die Idee der Probenahme? Abtasten des Signals mit einer Frequenz, die mindestens doppelt so hoch ist wie die höchste Frequenz im interessierenden Bereich. Wenn Sie diskrete Informationen wie diese extrahiert haben, können Sie den Analogeingang ohne Verlust (im interessierten Bereich) rekonstruieren
Boris Pavlović

Analog dazu nehmen Sie wichtige Verben, Substantive und Adjektive auf, die in einigen Beschreibungen Eckpfeiler sind, und lassen alles andere übrig. Wenn Sie diese Wörter in aussagekräftigen Arrays zusammenstellen, erhalten Sie Haiku
Boris Pavlović

0

Der Algorithmus für die Ausgabe eines hochwertigen Haiku durch einen Computer funktioniert ungefähr so:

Einrichtungsphase

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

Ausführungsphase

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

Es gibt natürlich verschiedene Verbesserungen, die an dieser grundlegenden Architektur vorgenommen werden können. Zum Beispiel kann die Einrichtungsphase erweitert werden, um einen Pool von Haiku-Experten einzurichten . Die Ausführungsphase kann verwendet werden, um Haiku während Leerlaufzeiten zu generieren und sie gegen zukünftige Anforderungen zwischenzuspeichern. Die Einzelheiten einer solchen Optimierung bleiben dem Schüler als Übung überlassen.


-1

Ich liebe diese Frage. Es ist sehr einfallsreich. Antwort unten.


Viele Leute haben Markov-Ketten vorgeschlagen, aber ich glaube wirklich nicht, dass es möglich wäre. Sie müssen intelligent wissen, ob die Silbe ein PHONEM ist, dann müssen Sie wissen, wo die Silbe endet.

Wenn Sie dies jemals tun würden, wäre ich erstaunt.


Irgendwann möchten Sie vielleicht nachschlagen, was die von Ihnen verwendeten Wörter auf Englisch tatsächlich bedeuten.
NUR MEINE korrekte MEINUNG
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.