Dies ist eine alte Version des Dokuments!
von Nora Lehmann
Ein Gedicht erzeugen, das einer Epoche entspricht und ein Versschema aufweist.
Ich hab erstmal die Wiki angelegt. Auf der Gutenberg Seite hab ich mir eine Gedichte Sammlung heruntergeladen, die meine erste Datenbank wird. Zu zwei verschiedenen Epochen habe ich mich belesen, aber die Epochenauswahl werde ich erst später machen. Meine erster große Aufgabe wird sein, ein Wörterbuch anzulegen, das als key das Wort speichert und als value die darauffolgenden Wörter speichert. Dass ich also ein Wörterbuch erstelle, das sozusagen die Wahrscheinlichkeiten der Wortfolge speichert. Für diese Aufgabe hab ich mir den Code von der Bob Dylan Gruppe angeguckt und versucht zu verstehen. Außerdem hab ich mir verschiedene Quellen zu Computeranalyse von Linguistik angeguckt. Das Wörterbuch ist erfolgreich erstellt und speichert für ein Wort die darauffolgenden Wörter.
In der einen Stunden, die ich da war, habe ich versucht einen Zufallsatz zu erzeugen. Ich wollte, dass ich dem Computer ein Wort vorgebe und zufällig aus der gespeicherten Liste der nachfolgenden Wörter ein Wort ausgespuckt bekomme. Das hab ich auch hinbekommen, aber ein Satz hatte ich immer noch nicht. Ich hab es auf die unelegante Weise gelöst, dem Computer immer wieder ein Wort vorzugeben und er gab mir nachfolgendes Wort zurück. Das ist aber nicht unbedingt praktisch. Eine verbesserte Variante musste her.
Ich hab erneut an dem Zufallsatz gearbeitet und mit ein bisschen Rumprobieren, Hilfe und Nachlesen habe ich es geschafft eine rekursive Funktion zu programmieren. Der Funktion füttert man ein Wort und sie erstellt ein zufälligen Satz.
def zufallssatz(x,y):
„“„Erzeugt einen Zufallssatz, indem die Funktionen zufällig das darauffolgende
Wort aus dem Wörterbuch auswählt. Dieser Prozess wird y-mal wiederholt“„“
if y⇐10:
if x in wb:
x=random.choice(wb[x])
print x,
zufallssatz(x,y+1)
Danach hab ich schon mal kleine Gedichte erstellt, indem ich vorgegeben hab, wie viel Wörter pro Zeile eingesetzt werden sollen.
„“„Kleines Gedicht“„“
anfang=raw_input(„Geben Sie ein Wort ein!“)
zufallssatz(anfang,10)
print #fügt Leerzeile ein
s=raw_input(„“)
zufallssatz(s,5)
print
zufallssatz(s,3)
print
zufallssatz(s,5)
print
zufallssatz(s,3)
Dabei kamen auch schon lustige kleine Gedichte zustande. Beispiele: dunkle stimmen starben, narziss im mai als siebenter und brunnenraender, die abendglocke; schoen ist ein kanal rondel verflossen ist stimmen starben, narziss im laub; sanfte nonnen unter brunnenraender, die nacht das gesicht tropft schwarzer schnee; goldaeugige eulen blut vom maerchen gerne; auch weint im blick sich vom fenster ein sanftes schweigen des hains auf die augen in reinen haenden der tage hinsinkt o ihr und rot die mauern schimmern kastanien leise klingen die amsel glatt das gold der nachtwind wuehlt in all walks das laub faellt es ist dieses ist der graeber, das das dach aus den blauen fluss hinunter die das rohr im rauch gestalten aufgeloest hell verspruehn im brodem
Wird nachgeholt.
Chronologisch gesehen, habe ich erst an den Schlagwörtern weiter gearbeitet. Mithilfe des Internets habe ich heraus gefunden, wie man sich die 20 am häufigsten vorkommenden Wörter ermitteln lassen kann. Um Füllwörter
''# -*- coding: utf-8 -*- """ Created on Thu Nov 26 15:34:12 2015 @author: Nora Lehmann """ import random quelle=open("gedichte.txt") s=quelle.read() quelle.close() na=["www","txt","http://",".","_","?","iii","!","&","0","1","2","3","4","5","6","7","8","9","-","...","*",">","<","1.E.1"] s=s.lower() s=s.replace("\xe4","ae") s=s.replace("\xf6","oe") s=s.replace("\xdf","ss") s=s.replace("\xfc","ue") for x in na: s=s.replace(x," ") s=s.split() wb={} for i,x in enumerate (s): if i==len(s)-1: break if x not in wb: wb[x]=[s[i+1]] else: wb[x].append(s[i+1]) def zufallssatz(x,y): """Erzeugt einen Zufallssatz, indem die Funktionen zufällig das darauffolgende Wort aus dem Wörterbuch auswählt. Dieser Prozess wird y-mal wiederholt""" if y<=12: if x in wb: x=random.choice(wb[x]) print x, zufallssatz(x,y+1) """Kleines Gedicht """ anfang=raw_input("Geben Sie ein Wort ein!") zufallssatz(anfang,12) print #fügt Leerzeile ein s=raw_input("") zufallssatz(s,5) print zufallssatz(s,3) print zufallssatz(s,5) print zufallssatz(s,3) ''