Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1516:generiertes_gedicht

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1516:generiertes_gedicht [2016/01/14 17:43]
noralehmann
ws1516:generiertes_gedicht [2016/06/11 15:08] (aktuell)
noralehmann
Zeile 8: Zeile 8:
  
 === Aufgaben: === === Aufgaben: ===
-  * Epochenwissen aneignen +  * Gedichtsammlung erstellen 
-  * Bob Dylan Projekt Code verstehen +  * Gedichte in Fragmente zerlegen und ins Wörterbuch abspeichern 
-  * Gedichte einlesen +  * Zufallssatz mit 2-gram Modell erzeugen 
-  * Wortwahrscheinlichkeiten aus den Texten ermitteln +  * Gedichtstruktur mit Versen und Strophen bilden 
-  * Versschema vorgeben+  * Extras einbauen 
 +  * Zufallssatz mit 2-gram Modell erzeugen
  
 == Verwendete Texte: == == Verwendete Texte: ==
 +  * Menschheitsdämmerung von Kurt Pinthus
 +  * selbsterstellte Gedichtesammlung von mehreren expressionistischen Künstlern
  
 === Protokolle: === === Protokolle: ===
Zeile 57: Zeile 60:
     werden sollen. ​     werden sollen. ​
            
-''​ """​Kleines Gedicht"""​+''​<​code>​ 
 + """​Kleines Gedicht"""​
 anfang=raw_input("​Geben Sie ein Wort ein!") anfang=raw_input("​Geben Sie ein Wort ein!")
 zufallssatz(anfang,​10) zufallssatz(anfang,​10)
Zeile 68: Zeile 72:
 zufallssatz(s,​5) zufallssatz(s,​5)
 print print
-zufallssatz(s,​3) ​ ''​+zufallssatz(s,​3) ​ 
 +</​code> ​''​
  
      Dabei kamen auch schon lustige kleine Gedichte zustande.      Dabei kamen auch schon lustige kleine Gedichte zustande.
Zeile 95: Zeile 100:
  
 == Protokoll vom 08.01.2016 == == Protokoll vom 08.01.2016 ==
 +      Ich hab noch ein bisschen mit der Zufallsatz probiert Gedichte zu erzeugen und versucht den gesamten Code zu 
 +      verbessern und zu strukturieren. Dann wusste ich nicht genau, was ich weiter machen sollte und habe dann 
 +      überlegt, wie ich endlich die Epoche ins Spiel bringen kann. Da jede Epoche besondere Schlagwörter hat,
 +      wollt ich damit anfangen. Die bestimmten Schlagwörter kommen dann auch am häufigsten in den Werken vor,
 +      deswegen kann man sie aus der eingelesenen Quelle ermitteln. Also habe ich eine if- schleife gemacht,
 +      die die häufig vorkommenden Wörter zählt. Die hab ich jedoch nicht ganz fertig bekommen.
  
 == Protokoll vom 14.01.2016 == == Protokoll vom 14.01.2016 ==
-     ​Chronologisch gesehen, habe ich erst an den Schlagwörtern weiter gearbeitet. Mithilfe des Internets habe ich heraus gefunden, +     ​Chronologisch gesehen, habe ich erst an den Schlagwörtern weiter gearbeitet. Mithilfe des Internets habe ich  
-     wie man sich die 20 am häufigsten vorkommenden Wörter ermitteln lassen kann. Um Füllwörter ​+     heraus gefunden, wie man sich die 20 am häufigsten vorkommenden Wörter ermitteln lassen kann. Da ich keine 
 +     Füllwörter ​wie ein und das in meiner Liste der Schlagwörter haben wollte, habe ich noch eine Liste erstellt 
 +     mit Wörtern die nicht als Schlagwörter abgespeichert werden sollen. Mit ein bisschen Hilfe und Probieren hat  
 +     das dann auch geklappt und für den Text mit dem ich gerade arbeite, habe ich folgende Schlagwörter  
 +     ​ermittelt:​ 
 +        ['​ueber',​ '​dich',​ '​erde',​ '​nacht',​ '​welt',​ '​dein',​ '​gott',​ '​mensch',​ '​meine',​ '​herz',​ '​menschen',​ 
 +         '​augen',​ '​blut',​ '​auch',​ '​zeit',​ '​himmel',​ '​werden',​ '​immer',​ '​licht',​ '​liebe'​] 
 +      
 +     ​Außerdem habe ich noch an Alliterationen gearbeitet. Ich hab ein Wörterbuch erstellt, dass für jedes 
 +     Wort in der Textquelle alle Wörter mit dem gleichen Anfangsbuchstaben abspeichert. Somit kann man  
 +     ​später auf die Funktion zugreifen und sich mit random.choice für ein Wort aus dem angelegten 
 +     ​Alliterationswörterbuch ein zufälliges Wort anzeigen lassen, das den gleichen Anfangsbuchstaben  
 +     wie das ursprüngliche Wort hat. 
 +     ​Weitere Änderung: Das Wörterbuch,​ das zuvor für jedes '​Anfangswort'​ die darauffolgenden Wörter gespeichert hat, speichert  
 +     nun alle Wörter die vor dem '​Anfangswort'​ vorkommen. Deswegen musste ich auch die Funktion zufallsatz nochmal ändern. 
 +     Nun speichert sie alle Wörter die zufällig ausgewählt werden ausgehend vom Anfangswort in einem String. Da immer das  
 +     Wort was eigentlich vor dem Wort steht mit dem die Funktion startet, muss man den String am Ende noch umdrehen und  
 +     dann hat man wieder einen Zufallsatz. Diese Änderungen erleichtern später das Einfügen von Reimen. 
 +      
 +== Protokoll vom 21.01.2016 == 
 +     Heute habe ich noch die Alliterationen verbessert und erstmal beendet. Danach hab ich mir als neues '​Modul'​ 
 +     ​Assonanzen vorgenommen. Assonanzen sind Häufungen eines Vokals. Dafür habe ich für jeden Vokal ein  
 +     ​Wörterbuch angelegt. Die Wörter werden nach dem am ersten vorkommenden Vokal eingeordnet. Wenn man dann ein  
 +     ​bestimmtes Wort der neu erstellten Funktion assonanzen gibt, guckt die Funktion welcher Vokal in dem Wort als  
 +     ​erster steckt und sucht dann aus den entsprechenden Wörterbuch zufällig ein neues Wort aus. Am Ende habe ich  
 +     ​versucht alle '​Module',​ die ich bis jetzt erstellt habe, zu vereinen und ein erstes Gedicht zu erzeugen. 
 +     ​Jedoch erwies sich das als recht schwer und wird jetzt mein Ziel für die nächste Woche. 
 + 
 +== Protokoll vom 04.02.2016 == 
 +     ​Funktionen geschrieben,​ die die Verse und Strophenanzahl und mit zufälligen Wörter die Zufallsätze generieren. 
 +      
 +     ​Erstes Gedicht: 
 +     ​['​tuermen',​ '​aller',​ ':',​ '​heym',​ '​mit',​ '​seiner',​ '​taten'​] 
 +     ​['​der',​ '​vaeter',​ '​hassen',​ '​diese',​ '​abgrenzung',​ '​ge',​ '​schieden'​] 
 +     ​['​lasset',​ '​uns',​ '​im',​ '​schlaf',​ '​hypnotisieren',​ '​zwei',​ '​menschen'​] 
 +     ​['​halb',​ '​schon',​ '​mit',​ '​jenen',​ '​furchtbaren',​ '​bewusstsein',​ '​des'​] 
 +     ​['​regen',​ '​die',​ '​gaslaternen',​ '​und',​ '​wollen',​ '​wachen',​ '​ein'​] 
 +      
 +     ​['​was',​ '​ich',​ '​ich',​ '​will',​ '​sich',​ '​die',​ '​arbeit'​] 
 +     ​['​abschiednehmen',​ '​das',​ '​daliegen',​ '​in',​ '​dich',​ '​diese',​ '​blutet'​] 
 +     ​['​schatten',​ '​schwankt',​ '​ueber',​ '​musik',​ '​ein',​ '​mensch',​ '​in'​] 
 +     ​['​ueber',​ '​die',​ '​schneckenwindungen',​ '​des',​ '​gerechten',​ '​aber',​ '​wir'​] 
 +     ​['​himmel',​ '​doch',​ '​ueber',​ '​eine',​ '​inatter',​ '​wenn',​ '​ich'​] 
 +      
 +     ​['​die',​ '​schnur',​ '​boeses',​ '​tier',​ '​bricht',​ '​durch',​ '​roehricht'​] 
 +     ​['​nacht',​ '​freunde',​ '​nicht',​ '​verhaengnis',​ '​mehr',​ '​nein',​ '​erdhosen'​] 
 +     ​['​roten',​ '​fahnen',​ '​schwenken',​ '​isord',​ '​zieht',​ '​in',​ '​leidvoller'​] 
 +     ​['​geist',​ '​der',​ '​geheimnisse',​ '​verschlafenes',​ '​land',​ '​ihr',​ '​viel'​] 
 +     ​['​die',​ '​tempeljahre',​ '​die',​ '​schatten',​ '​halten',​ ':',​ '​toderschlagene'​] 
 +      
 +      
 +     ​Gedicht wird jetzt schöner ausgegeben:​ 
 +     arm des enzians durchsetzten beizenden geroell 
 +     welt so 
 +     rot (saemtlich vergriffen ) ich im vergifteten 
 +     aus der pfuetzen zwischen ihren werken verbunden dein 
 +     ​zischend der schiffe haengen verweste tiere stehn in die 
 +     ​augenbcdles umpulst den gefaengnissen 
 +      
 +     bin ich bin mir schreit tief meine stimmen : 
 +     ​welche stunde wie sie 
 +     mild wurden ploetzlich stand ich werde jetzt im traume ruehret 
 +      
 +     die ferne 
 +     die welt einschliessen herr und schaumluegenden Äusserungen der 
 +     sich die morgue die enge 
 +     ​vorbei als unfruchtbarer sand reibt aus den yebel menschenblut i 
 +     die taten sondern vereinigt wie grosse wolken
  
  
Zeile 164: Zeile 242:
         ''​         ''​
 </​code> ​   ​ </​code> ​   ​
 +
 +=== Code von 14.01.2016 ===
 +
 +<​code>​
 +# -*- coding: utf-8 -*-
 +"""​
 +Created on Thu Jan 14 17:23:24 2016
 +
 +@author: Nora Lehmann
 +"""​
 +
 +import random
 +
 +
 +quelle=open("​menschheitsdaemmerung.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("​\xc3\x84","​ae"​) ​   #Text '​reinigen'​
 +s=s.replace("​\xf6","​oe"​)
 +s=s.replace("​\xc3\x9f","​ss"​)
 +s=s.replace("​\xc3\xbc","​ue"​)
 +
 +for x in na:
 +    s=s.replace(x,"​ ")
 +s=s.split() ​                    #​String aller Wörter der Quelle
 +
 +wb={}
 +'''​wb speichert für jedes Wort die Wörter, die davor kamen'''​
 +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])
 +
 +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"""​
 +    satz=[x]
 +    for i in range(y):
 +        if x in wb:
 +            x=random.choice(wb[x])
 +            satz.append(x)
 +        else:
 +            break
 +    return satz[::-1]
 +
 +#​SCHLAGWÖRTER  ​
 +'''​zählt die am meisten vorkommenden Wörter in der Quelle'''  ​
 +fuellwoerter={'​sich',​ '​nicht','​oder',​ '​mich','​dass',​ '​mein','​herausgeber','​gibt',​ '​hier','​printed',​ '​herausgegeben',​ '​rowohlt','​verlag','​send',​ '​uerer',​ '​thus',​ '​antho',​ '​durch',​ '​da\xc3\x9f',​ '​\xc3\xbcber',​ '​sind',​ '​eine',​ '​noch',​ '​sein','​wenn','​alle',​ '​doch',​ '​euch',​ '​wird',​ '​nach',​ '​schon',​ '​aber',​ '​alle',​ '​doch',​ '​euch',​ '​wird',​ '​nach',​ '​schon',​ '​aber'​}  ​
 +wob={}
 +for wort in s:
 +    if wort in fuellwoerter:​
 +        continue
 +    if not wort in wob and len (wort) >= 4:
 +        wob[wort]=1 #Wort wird der Wert 1 zugeordnet ​
 +    if wort in wob:
 +        wob[wort]=wob[wort]+1 #Wert wird erhöht
 +    else:
 +        continue
 +import heapq 
 +schlagwoerter=heapq.nlargest(20,​ wob, key=wob.get)
 +
 +#​ALLITERATION
 +al={}
 +def alliteration(w):​
 +    for x in s:
 +        if w[0]==x[0]:
 +            if w in al:
 +                al[w].append(x)
 +            else:
 +                al[w]=[x]
 +alliteration ("​affe"​)
 +print al
 +#​alliteration("​gewünschtes Wort") und dann al anzeigen lassen oder random.choice(al)
 +</​code>​
 +
 +=== Code vom 21.01.2016 ===
 +<​code>​
 +''​ # -*- coding: utf-8 -*-
 +"""​
 +Created on Thu Jan 14 17:23:24 2016
 +
 +@author: Nora Lehmann
 +"""​
 +
 +import random
 +
 +
 +quelle=open("​menschheitsdaemmerung.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("​\xc3\xa4","​ae"​) ​   #Text '​reinigen'​
 +s=s.replace("​\xc3\xbc","​oe"​)
 +s=s.replace("​\xc3\x9f","​ss"​)
 +s=s.replace("​\xc3\x9c","​ue"​)
 +
 +for x in na:
 +    s=s.replace(x,"​ ")
 +s=s.split()
 +
 +wb={}
 +"""​wb speichert für jedes Wort die Woerter, die davor kamen"""​
 +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])
 +
 +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"""​
 +    satz=[x]
 +    for i in range(y):
 +        if x in wb:
 +            x=random.choice(wb[x])
 +            satz.append(x)
 +        else:
 +            break
 +    return satz[::-1]
 +
 +#​SCHLAGWÖRTER  ​
 +'''​zählt die am meisten vorkommenden Wörter in der Quelle'''  ​
 +fuellwoerter={'​sich',​ '​nicht','​oder',​ '​mich','​dass',​ '​mein','​herausgeber','​gibt',​ '​hier','​printed',​ '​herausgegeben',​ '​rowohlt','​verlag','​send',​ '​uerer',​ '​thus',​ '​antho',​ '​durch',​ '​da\xc3\x9f',​ '​\xc3\xbcber',​ '​sind',​ '​eine',​ '​noch',​ '​sein','​wenn','​alle',​ '​doch',​ '​euch',​ '​wird',​ '​nach',​ '​schon',​ '​aber',​ '​alle',​ '​doch',​ '​euch',​ '​wird',​ '​nach',​ '​schon',​ '​aber'​}  ​
 +wob={}
 +for wort in s:
 +    if wort in fuellwoerter:​
 +        continue
 +    if not wort in wob and len (wort) >= 4:
 +        wob[wort]=1 #Wort wird der Wert 1 zugeordnet ​
 +    if wort in wob:
 +        wob[wort]=wob[wort]+1 #Wert wird erhöht
 +    else:
 +        continue
 +import heapq 
 +schlagwoerter=heapq.nlargest(20,​ wob, key=wob.get)
 +
 +#​ALLITERATION
 +al={}
 +def alliteration(w):​
 +    for x in s:
 +        if w[0]==x[0]:
 +            if w in al:
 +                al[w].append(x)
 +            else:
 +                al[w]=[x]
 +g="​wort"​
 +#print g
 +alliteration (g)
 +"""​alliteration("​gewünschtes Wort") und dann al anzeigen lassen oder random.choice(al)"""​
 +#print random.choice(al[g])
 +
 +
 +#ASSONANZEN
 +avokal=[]
 +evokal=[]
 +ivokal=[]
 +ovokal=[]
 +uvokal=[]
 +
 +for din in wb:
 + for x in din:
 + if x=="​a":​
 + avokal.append(din)
 + break
 + if x=="​e":​
 + evokal.append(din)
 + break
 + if x=="​i":​
 + ivokal.append(din)
 + break
 + if x=="​o":​
 + ovokal.append(din)
 + break
 + if x=="​u":​
 + uvokal.append(din)
 + break
 + else:
 + continue
 +
 +
 +def assonanzen(a):​
 + """​Häufung eines Vokals. Funktion ermittelt für eine gegebene Funktion ein Wort mit den gleichen Vokal.
 + Das zweite Wort sollte als value vom ersten Wort in wb gespeichert sein."""​
 + vokale={"​a","​e","​i","​o","​u"​}
 + asso="​ "
 + for x in a:
 + if x in vokale:
 + if x=="​a":​
 + asso=asso+random.choice(avokal)
 + asso=asso+random.choice(avokal)
 + return asso
 + break
 + if x=="​e":​
 + return random.choice(evokal)
 + break
 + if x=="​i":​
 + return random.choice(ivokal)
 + break
 + if x=="​o":​
 + return random.choice(ovokal)
 + break
 + if x=="​u":​
 + return random.choice(uvokal)
 + break
 +
 + else:
 + continue
 + print a
 +
 +#GEDICHT
 +"""​1.Assonanzen beachten
 + 2.Alliterationen
 + 3.Schlagwörter
 + Rest auffüllen"""​
 +
 +#1.Strophe
 +
 +print zufallssatz(assonanzen("​a"​),​5)
 +print zufallssatz("​zarter",​5)
 +print zufallssatz(assonanzen("​a"​),​5)
 +print zufallssatz(assonanzen("​a"​),​5)
 +print zufallssatz(assonanzen("​a"​),​5)
 +</​code>''​
ws1516/generiertes_gedicht.1452789807.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)