| 
      
        Package schlachtfeld ::
        Module namen
      
     | 
    
      
     | 
  
  1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23  """Dieses Modul kapselt mehrere Namensgeneratoren.  
 24   
 25  Anwendung:  
 26   
 27  import namen 
 28   
 29  name = Name(anzahl=200,  quelle="yould", art="Englisch") 
 30   
 31  Möglichkeiten:  
 32   
 33  anzahl: yould und cfnamegen erstellen beide immer 500 namen auf einen Schlag, was bei Geschiwndigkeitstest berücksichtigt werden sollte.  
 34   
 35  quellen:  
 36          - yould: Namen auf Grundlage der Wahrscheinlichkeit, dass eine bestimmte Kombination in einem Wort auftaucht.  
 37          - pointon_phonetic: Einfacher Namensgenerator mit zufallsalgorythmus 
 38          - cfnamegen: Ähnlich ie pointon_phonetic. Auf Grundlage von Kontexctfreien Grammatiken  
 39   
 40  art: Wird bisher nur von yould verwendet. Esperanto oder Enlisch. Sonstige Werte werden als "Altenglisch" gewertet (default).  
 41   
 42  """ 
 43   
 44   
 45   
 46  import random_phonetic_name_generator_von_Pointon.random_phonetic_name_generator as phonetic_gen 
 47   
 48  import yould.yould as yould 
 49   
 50  import namegen.pycfnamegen.cfnamegen as cfnamegen 
 51   
 52  import string 
 53   
 54   
 55  from amov import Namensgrammatik, Versionsverwaltung 
 56   
 57   
 58   
 59   
 60   
 61   
 63 -    def __init__(self, art="Esperanto", familie="default", stimmung="default", anzahl=1, quelle="cfnamegen"):  
  64          """Container for all name-generation actions. Call it global, to be able to reuse it.""" 
 65           
 66          self.name = ""  
 67          self.names = []  
 68          self.art = art  
 69          self.familie = familie  
 70          self.stimmung = stimmung  
 71          self.anzahl = anzahl  
 72          self.anzahl_erzeugter_namen = 0  
 73          self.Quelle = quelle  
 74           
 75 -    def erzeuge(self,art="Esperanto", familie="default", stimmung="default"):  
  76          """Erzeuge die Namen. After 2500 names, always switch to the quick gen.""" 
 77          if self.anzahl_erzeugter_namen < 4500:  
 78              self.schnell = False 
 79          else:  
 80              self.schnell = True 
 81           
 82          if self.Quelle == "pointon_phonetic" or self.schnell:  
 83              return self.pointon_namen() 
 84          elif self.Quelle == "yould":  
 85              return self.yould_namen(art, familie, stimmung) 
 86          elif self.Quelle == "cfnamegen":  
 87              return self.cfnamegen_namen() 
 88       
 90          """Erzeuge besonderen Namen. Nimm dafür immer den besten Namensgenerator.""" 
 91          return self.yould_namen(art=art, familie=familie, stimmung=stimmung) 
 92           
 93 -    def yould_namen(self, art="Esperanto", familie="default", stimmung="default"):  
  94          """Hol die Namen aus dem Yould Namensgegerator.""" 
 95          if self.anzahl == 1:  
 96               
 97               
 98              if len(self.names) < 2:  
 99                   
100                  self.names = self.yould_aufrufen(anzahl=1000, art=art, familie=familie, stimmung=stimmung) 
101                  self.anzahl_erzeugter_namen += 500 
102              self.name = " ".join([self.names[0].capitalize(), self.names[1].capitalize()]) 
103               
104              del(self.names[0]) 
105              del(self.names[0]) 
106               
107              return self.name 
108          else:  
109              self.names = self.yould_aufrufen(self.anzahl * 2) 
110              names = [] 
111              for i in range(self.anzahl):  
112                  names.append(self.names[2*i].capitalize() + " " + self.names[(2*i)+1].capitalize()) 
113              return names 
114               
115 -    def yould_aufrufen(self, anzahl=1000, art="Esperanto", familie="default", stimmung="default"):  
 116          if art == "Esperanto":  
117              names = yould.generate_names(eval(open("yould/gutenberg_esperanto.prob").read()), 5, 12, 1000, 0, min_prob=0.000000001, max_prob=0.00001) 
118          if art == "Englisch":  
119              names = yould.generate_names(eval(open("yould/various_gutenberg.prob").read()), 5, 12, 1000, 0, min_prob=0.000000001, max_prob=0.00001) 
120          else:  
121              names = yould.generate_names(eval(open("yould/gutenberg_erotik_und_romantik.prob").read()), 5, 12, 1000, 0, min_prob=0.000000001, max_prob=0.00001) 
122          return names 
123       
125          """Hol die Namen aus dem Pointon Namensgenertor.""" 
126          if self.anzahl == 1:  
127              self.name = phonetic_gen.namegen() + " " + phonetic_gen.namegen() 
128              return self.name 
129          else:  
130              while self.anzahl > 0:  
131                  self.name = phonetic_gen.namegen() + " " + phonetic_gen.namegen() 
132                  self.names.append(self.name) 
133                  self.anzahl -= 1 
134              return self.names 
135               
137          """Hol die Namen aus dem CFNameGen Namensgenertor. TODO: Mehrere Namen auf einmal erzeugen.""" 
138          if self.anzahl == 1:  
139               
140              if len(self.names) == 0 or len(self.names) == 1:  
141                  self.names =  self.cfnamegen_aufrufen(anzahl=1000) 
142               
143              self.name = self.names[0] + " " + self.names[1] 
144              del self.names[0] 
145              del self.names[0] 
146              return self.name 
147          else:  
148               
149              grammatikObjekt = Namensgrammatik.Grammar() 
150              fooGrammar = grammatikObjekt.grammar 
151              names = [] 
152              self.names = self.cfnamegen_aufrufen(anzahl=self.anzahl*2) 
153              while self.anzahl != 0:  
154                  self.name = self.names[0] + " " + self.names[1] 
155                  del self.names[0] 
156                  del self.names[0] 
157                  names.append(self.name) 
158                  self.anzahl -= 1 
159              return names 
160           
162          grammatikObjekt = Namensgrammatik.Grammar() 
163          fooGrammar = grammatikObjekt.grammar 
164          foong = cfnamegen.CFNameGen(fooGrammar) 
165          names = [] 
166          while anzahl != 0:  
167              names.append(foong.getName()) 
168              anzahl -= 1 
169          return names 
170   
171           
172   
173   
174   
175   
176   
177  if __name__ == "__main__":  
178      print "Erzeuge Esperanto-Namen mit yould" 
179      name = Name(anzahl=20,  quelle="yould") 
180      namen = name.erzeuge() 
181      for i in namen:  
182          print i 
183      print "\nErzeuge Englische Namen mit yould" 
184      name = Name(anzahl=20,  quelle="yould", art="Englisch") 
185      namen = name.erzeuge() 
186      for i in namen:  
187          print i 
188      print "\nErzeuge erotische Namen mit yould" 
189      name = Name(anzahl=20,  quelle="yould", art="Martin Luther") 
190      namen = name.erzeuge() 
191      for i in namen:  
192          print i 
193      print "\nErzeuge die Namen mit pointon" 
194      name = Name(anzahl=20,  quelle="pointon_phonetic") 
195      namen = name.erzeuge() 
196      for i in namen:  
197          print i 
198      print "\nErzeuge die Namen mit cfnamegen" 
199      name = Name(anzahl=20,  quelle="cfnamegen") 
200      namen = name.erzeuge() 
201      for i in namen:  
202          print i 
203   
204   
205