Computer Haiku
Wie würden Sie ein Programm schreiben,
um sie für Sie zu erstellen?
Computer Haiku
Wie würden Sie ein Programm schreiben,
um sie für Sie zu erstellen?
Antworten:
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 ...
Erstens möchten Sie sich mit Markov-Ketten befassen , und zweitens gibt es ein Buch über computergenerierte Poesie namens Virtual Muse .
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
note
und vote
?
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.
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.
"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 :)
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.
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
Ihr Programm muss
Metaphern und Bilder enthalten
und kreativ sein.
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.
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.
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.
Markov-Sequenzen
Eine Silbendatenbank
Drei Python-Zeilen
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.
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
Der Algorithmus für die Ausgabe eines hochwertigen Haiku durch einen Computer funktioniert ungefähr so:
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
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.
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.