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