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/07 15:17]
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 93: Zeile 98:
 == Protokoll vom 17.12.2015 == == Protokoll vom 17.12.2015 ==
      Wird nachgeholt.      Wird nachgeholt.
 +
 +== 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 ==
 +     ​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. 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
 +
  
 === Code === === Code ===
 +
 +<code python>
 ''#​ -*- coding: utf-8 -*- ''#​ -*- coding: utf-8 -*-
 """​ """​
Zeile 154: Zeile 241:
         ​         ​
         ''​         ''​
-    ​+</​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.1452176250.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)