JohanBeytell commited on
Commit
b290e90
·
verified ·
1 Parent(s): 0073aa4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +102 -1221
app.py CHANGED
@@ -7,16 +7,53 @@ import pandas as pd
7
  import tensorflow as tf
8
  from valx import detect_profanity, detect_hate_speech
9
 
10
- def custom_pad_sequences(sequences, maxlen, padding='pre', value=0):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  """
12
- Pads sequences to the same length.
13
-
14
- :param sequences: List of lists, where each element is a sequence.
15
- :param maxlen: Maximum length of all sequences.
16
- :param padding: 'pre' or 'post', pad either before or after each sequence.
17
- :param value: Float, padding value.
18
- :return: Numpy array with dimensions (number_of_sequences, maxlen)
19
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  padded_sequences = np.full((len(sequences), maxlen), value)
21
  for i, seq in enumerate(sequences):
22
  if padding == 'pre':
@@ -32,7 +69,6 @@ def custom_pad_sequences(sequences, maxlen, padding='pre', value=0):
32
  return padded_sequences
33
 
34
  def generate_random_name(interpreter, vocab_size, sp, max_length=10, temperature=0.5, seed_text="", max_seq_len=12):
35
- # Get input and output tensors
36
  input_details = interpreter.get_input_details()
37
  output_details = interpreter.get_output_details()
38
  decoded_name = ''
@@ -47,40 +83,26 @@ def generate_random_name(interpreter, vocab_size, sp, max_length=10, temperature
47
  for _ in range(max_length - 1):
48
  token_list = sp.encode_as_ids(generated_name)
49
 
50
- # Handle empty token list case
51
  if len(token_list) == 0:
52
- continue # Skip the current iteration if the token list is empty
53
 
54
- # Pad to the correct length expected by the model
55
  token_list = custom_pad_sequences([token_list], maxlen=max_seq_len, padding='pre')
56
-
57
- # Convert token_list to FLOAT32 before setting the tensor
58
  token_list = token_list.astype(np.float32)
59
 
60
- # Set the input tensor
61
  interpreter.set_tensor(input_details[0]['index'], token_list)
62
-
63
- # Run inference
64
  interpreter.invoke()
65
 
66
- # Get the output tensor
67
  predicted = interpreter.get_tensor(output_details[0]['index'])[0]
68
-
69
- # Apply temperature to predictions
70
  predicted = np.log(predicted + 1e-8) / temperature
71
  predicted = np.exp(predicted) / np.sum(np.exp(predicted))
72
 
73
- # Sample from the distribution
74
  next_index = np.random.choice(range(vocab_size), p=predicted)
75
  next_index = int(next_index)
76
  next_token = sp.id_to_piece(next_index)
77
 
78
  generated_name = sp.decode_pieces(sp.encode_as_pieces(generated_name) + [next_token])
79
-
80
- # Decode the generated subword tokens into a string
81
  decoded_name = sp.decode_pieces(sp.encode_as_pieces(generated_name))
82
 
83
- # Stop if end token is predicted (optional)
84
  if next_token == '' or len(decoded_name) > max_length:
85
  break
86
 
@@ -88,21 +110,17 @@ def generate_random_name(interpreter, vocab_size, sp, max_length=10, temperature
88
  decoded_name = decoded_name.replace("</s>", "")
89
  decoded_name = decoded_name.replace("<unk>", "")
90
  decoded_name = decoded_name.replace("<s>", "")
91
- generated_name = decoded_name.strip()
92
-
93
- generated_name = generated_name.capitalize()
94
 
95
- # Split the name and check the last part
96
  parts = generated_name.split()
97
  if parts and len(parts[-1]) < 3:
98
  generated_name = " ".join(parts[:-1])
99
 
100
  return generated_name.strip()
101
 
102
- def generateNames(type, amount, max_length=30, temperature=0.5, seed_text=""):
103
  hate_speech = detect_hate_speech(seed_text)
104
  profanity = detect_profanity([seed_text], language='All')
105
- output = ''
106
 
107
  if len(profanity) > 0:
108
  gr.Warning("Profanity detected in the seed text, using an empty seed text.")
@@ -114,1202 +132,65 @@ def generateNames(type, amount, max_length=30, temperature=0.5, seed_text=""):
114
  elif hate_speech == ['Offensive Speech']:
115
  gr.Warning('Offensive speech detected in the seed text, using an empty seed text.')
116
  seed_text = ''
117
- # elif hate_speech == ['No Hate and Offensive Speech']:
118
-
119
- if type == "Terraria":
120
- max_seq_len = 12 # For skyrim = 13, for terraria = 12
121
- sp = spm.SentencePieceProcessor()
122
- sp.load("models/terraria_names.model")
123
- amount = int(amount)
124
- max_length = int(max_length)
125
-
126
- names = []
127
-
128
- # Define necessary variables
129
- vocab_size = sp.GetPieceSize()
130
-
131
- # Load TFLite model
132
- interpreter = tf.lite.Interpreter(model_path="models/dungen_terraria_model.tflite")
133
- interpreter.allocate_tensors()
134
-
135
- # Use the function to generate a name
136
- for _ in range(amount):
137
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
138
- stripped = generated_name.strip()
139
- hate_speech = detect_hate_speech(stripped)
140
- profanity = detect_profanity([stripped], language='All')
141
- name = ''
142
-
143
- if len(profanity) > 0:
144
- name = "Profanity Detected"
145
- else:
146
- if hate_speech == ['Hate Speech']:
147
- name = 'Hate Speech Detected'
148
- elif hate_speech == ['Offensive Speech']:
149
- name = 'Offensive Speech Detected'
150
- elif hate_speech == ['No Hate and Offensive Speech']:
151
- name = stripped
152
- names.append(name)
153
- return pd.DataFrame(names, columns=['Names'])
154
-
155
- elif type == "Skyrim":
156
- max_seq_len = 13 # For skyrim = 13, for terraria = 12
157
- sp = spm.SentencePieceProcessor()
158
- sp.load("models/skyrim_names.model")
159
- amount = int(amount)
160
- max_length = int(max_length)
161
-
162
- names = []
163
-
164
- # Define necessary variables
165
- vocab_size = sp.GetPieceSize()
166
-
167
- # Load TFLite model
168
- interpreter = tf.lite.Interpreter(model_path="models/dungen_skyrim_model.tflite")
169
- interpreter.allocate_tensors()
170
-
171
- # Use the function to generate a name
172
- for _ in range(amount):
173
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
174
- stripped = generated_name.strip()
175
- hate_speech = detect_hate_speech(stripped)
176
- profanity = detect_profanity([stripped], language='All')
177
- name = ''
178
-
179
- if len(profanity) > 0:
180
- name = "Profanity Detected"
181
- else:
182
- if hate_speech == ['Hate Speech']:
183
- name = 'Hate Speech Detected'
184
- elif hate_speech == ['Offensive Speech']:
185
- name = 'Offensive Speech Detected'
186
- elif hate_speech == ['No Hate and Offensive Speech']:
187
- name = stripped
188
- names.append(name)
189
- return pd.DataFrame(names, columns=['Names'])
190
-
191
- elif type == "Witcher":
192
- max_seq_len = 20 # For skyrim = 13, for terraria = 12
193
- sp = spm.SentencePieceProcessor()
194
- sp.load("models/witcher_names.model")
195
- amount = int(amount)
196
- max_length = int(max_length)
197
-
198
- names = []
199
-
200
- # Define necessary variables
201
- vocab_size = sp.GetPieceSize()
202
-
203
- # Load TFLite model
204
- interpreter = tf.lite.Interpreter(model_path="models/dungen_witcher_model.tflite")
205
- interpreter.allocate_tensors()
206
-
207
- # Use the function to generate a name
208
- for _ in range(amount):
209
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
210
- stripped = generated_name.strip()
211
- hate_speech = detect_hate_speech(stripped)
212
- profanity = detect_profanity([stripped], language='All')
213
- name = ''
214
-
215
- if len(profanity) > 0:
216
- name = "Profanity Detected"
217
- else:
218
- if hate_speech == ['Hate Speech']:
219
- name = 'Hate Speech Detected'
220
- elif hate_speech == ['Offensive Speech']:
221
- name = 'Offensive Speech Detected'
222
- elif hate_speech == ['No Hate and Offensive Speech']:
223
- name = stripped
224
- names.append(name)
225
- return pd.DataFrame(names, columns=['Names'])
226
-
227
- elif type == "WOW":
228
- max_seq_len = 16 # For skyrim = 13, for terraria = 12
229
- sp = spm.SentencePieceProcessor()
230
- sp.load("models/wow_names.model")
231
- amount = int(amount)
232
- max_length = int(max_length)
233
-
234
- names = []
235
-
236
- # Define necessary variables
237
- vocab_size = sp.GetPieceSize()
238
-
239
- # Load TFLite model
240
- interpreter = tf.lite.Interpreter(model_path="models/dungen_wow_model.tflite")
241
- interpreter.allocate_tensors()
242
-
243
- # Use the function to generate a name
244
- for _ in range(amount):
245
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
246
- stripped = generated_name.strip()
247
- hate_speech = detect_hate_speech(stripped)
248
- profanity = detect_profanity([stripped], language='All')
249
- name = ''
250
-
251
- if len(profanity) > 0:
252
- name = "Profanity Detected"
253
- else:
254
- if hate_speech == ['Hate Speech']:
255
- name = 'Hate Speech Detected'
256
- elif hate_speech == ['Offensive Speech']:
257
- name = 'Offensive Speech Detected'
258
- elif hate_speech == ['No Hate and Offensive Speech']:
259
- name = stripped
260
- names.append(name)
261
- return pd.DataFrame(names, columns=['Names'])
262
-
263
- elif type == "Minecraft":
264
- max_seq_len = 17 # For skyrim = 13, for terraria = 12
265
- sp = spm.SentencePieceProcessor()
266
- sp.load("models/minecraft_names.model")
267
- amount = int(amount)
268
- max_length = int(max_length)
269
-
270
- names = []
271
-
272
- # Define necessary variables
273
- vocab_size = sp.GetPieceSize()
274
-
275
- # Load TFLite model
276
- interpreter = tf.lite.Interpreter(model_path="models/dungen_minecraft_model.tflite")
277
- interpreter.allocate_tensors()
278
-
279
- # Use the function to generate a name
280
- for _ in range(amount):
281
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
282
- stripped = generated_name.strip()
283
- hate_speech = detect_hate_speech(stripped)
284
- profanity = detect_profanity([stripped], language='All')
285
- name = ''
286
-
287
- if len(profanity) > 0:
288
- name = "Profanity Detected"
289
- else:
290
- if hate_speech == ['Hate Speech']:
291
- name = 'Hate Speech Detected'
292
- elif hate_speech == ['Offensive Speech']:
293
- name = 'Offensive Speech Detected'
294
- elif hate_speech == ['No Hate and Offensive Speech']:
295
- name = stripped
296
- names.append(name)
297
- return pd.DataFrame(names, columns=['Names'])
298
-
299
- elif type == "Dark Souls":
300
- max_seq_len = 13 # For skyrim = 13, for terraria = 12
301
- sp = spm.SentencePieceProcessor()
302
- sp.load("models/dark_souls_names.model")
303
- amount = int(amount)
304
- max_length = int(max_length)
305
-
306
- names = []
307
-
308
- # Define necessary variables
309
- vocab_size = sp.GetPieceSize()
310
-
311
- # Load TFLite model
312
- interpreter = tf.lite.Interpreter(model_path="models/dungen_dark_souls_model.tflite")
313
- interpreter.allocate_tensors()
314
-
315
- # Use the function to generate a name
316
- for _ in range(amount):
317
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
318
- stripped = generated_name.strip()
319
- hate_speech = detect_hate_speech(stripped)
320
- profanity = detect_profanity([stripped], language='All')
321
- name = ''
322
-
323
- if len(profanity) > 0:
324
- name = "Profanity Detected"
325
- else:
326
- if hate_speech == ['Hate Speech']:
327
- name = 'Hate Speech Detected'
328
- elif hate_speech == ['Offensive Speech']:
329
- name = 'Offensive Speech Detected'
330
- elif hate_speech == ['No Hate and Offensive Speech']:
331
- name = stripped
332
- names.append(name)
333
- return pd.DataFrame(names, columns=['Names'])
334
-
335
- elif type == "Final Fantasy":
336
- max_seq_len = 14
337
- sp = spm.SentencePieceProcessor()
338
- sp.load("models/final_fantasy_names.model")
339
- amount = int(amount)
340
- max_length = int(max_length)
341
-
342
- names = []
343
-
344
- # Define necessary variables
345
- vocab_size = sp.GetPieceSize()
346
-
347
- # Load TFLite model
348
- interpreter = tf.lite.Interpreter(model_path="models/dungen_final_fantasy_model.tflite")
349
- interpreter.allocate_tensors()
350
-
351
- # Use the function to generate a name
352
- for _ in range(amount):
353
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
354
- stripped = generated_name.strip()
355
- hate_speech = detect_hate_speech(stripped)
356
- profanity = detect_profanity([stripped], language='All')
357
- name = ''
358
-
359
- if len(profanity) > 0:
360
- name = "Profanity Detected"
361
- else:
362
- if hate_speech == ['Hate Speech']:
363
- name = 'Hate Speech Detected'
364
- elif hate_speech == ['Offensive Speech']:
365
- name = 'Offensive Speech Detected'
366
- elif hate_speech == ['No Hate and Offensive Speech']:
367
- name = stripped
368
- names.append(name)
369
- return pd.DataFrame(names, columns=['Names'])
370
-
371
- elif type == "Elden Ring":
372
- max_seq_len = 18
373
- sp = spm.SentencePieceProcessor()
374
- sp.load("models/elden_ring_names.model")
375
- amount = int(amount)
376
- max_length = int(max_length)
377
-
378
- names = []
379
-
380
- # Define necessary variables
381
- vocab_size = sp.GetPieceSize()
382
-
383
- # Load TFLite model
384
- interpreter = tf.lite.Interpreter(model_path="models/dungen_elden_ring_model.tflite")
385
- interpreter.allocate_tensors()
386
-
387
- # Use the function to generate a name
388
- for _ in range(amount):
389
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
390
- stripped = generated_name.strip()
391
- hate_speech = detect_hate_speech(stripped)
392
- profanity = detect_profanity([stripped], language='All')
393
- name = ''
394
-
395
- if len(profanity) > 0:
396
- name = "Profanity Detected"
397
- else:
398
- if hate_speech == ['Hate Speech']:
399
- name = 'Hate Speech Detected'
400
- elif hate_speech == ['Offensive Speech']:
401
- name = 'Offensive Speech Detected'
402
- elif hate_speech == ['No Hate and Offensive Speech']:
403
- name = stripped
404
- names.append(name)
405
- return pd.DataFrame(names, columns=['Names'])
406
-
407
- elif type == "Zelda":
408
- max_seq_len = 15
409
- sp = spm.SentencePieceProcessor()
410
- sp.load("models/zelda_names.model")
411
- amount = int(amount)
412
- max_length = int(max_length)
413
-
414
- names = []
415
-
416
- # Define necessary variables
417
- vocab_size = sp.GetPieceSize()
418
-
419
- # Load TFLite model
420
- interpreter = tf.lite.Interpreter(model_path="models/dungen_zelda_model.tflite")
421
- interpreter.allocate_tensors()
422
-
423
- # Use the function to generate a name
424
- for _ in range(amount):
425
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
426
- stripped = generated_name.strip()
427
- hate_speech = detect_hate_speech(stripped)
428
- profanity = detect_profanity([stripped], language='All')
429
- name = ''
430
-
431
- if len(profanity) > 0:
432
- name = "Profanity Detected"
433
- else:
434
- if hate_speech == ['Hate Speech']:
435
- name = 'Hate Speech Detected'
436
- elif hate_speech == ['Offensive Speech']:
437
- name = 'Offensive Speech Detected'
438
- elif hate_speech == ['No Hate and Offensive Speech']:
439
- name = stripped
440
- names.append(name)
441
- return pd.DataFrame(names, columns=['Names'])
442
-
443
- elif type == "Dragon Age":
444
- max_seq_len = 16 # For skyrim = 13, for terraria = 12
445
- sp = spm.SentencePieceProcessor()
446
- sp.load("models/dragon_age_names.model")
447
- amount = int(amount)
448
- max_length = int(max_length)
449
-
450
- names = []
451
 
452
- # Define necessary variables
453
- vocab_size = sp.GetPieceSize()
454
-
455
- # Load TFLite model
456
- interpreter = tf.lite.Interpreter(model_path="models/dungen_dragon_age_model.tflite")
457
- interpreter.allocate_tensors()
458
-
459
- # Use the function to generate a name
460
- for _ in range(amount):
461
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
462
- stripped = generated_name.strip()
463
- hate_speech = detect_hate_speech(stripped)
464
- profanity = detect_profanity([stripped], language='All')
465
- name = ''
466
-
467
- if len(profanity) > 0:
468
- name = "Profanity Detected"
469
- else:
470
- if hate_speech == ['Hate Speech']:
471
- name = 'Hate Speech Detected'
472
- elif hate_speech == ['Offensive Speech']:
473
- name = 'Offensive Speech Detected'
474
- elif hate_speech == ['No Hate and Offensive Speech']:
475
- name = stripped
476
- names.append(name)
477
- return pd.DataFrame(names, columns=['Names'])
478
-
479
- elif type == "Fallout":
480
- max_seq_len = 13
481
- sp = spm.SentencePieceProcessor()
482
- sp.load("models/fallout_names.model")
483
- amount = int(amount)
484
- max_length = int(max_length)
485
-
486
- names = []
487
-
488
- # Define necessary variables
489
- vocab_size = sp.GetPieceSize()
490
-
491
- # Load TFLite model
492
- interpreter = tf.lite.Interpreter(model_path="models/dungen_fallout_model.tflite")
493
- interpreter.allocate_tensors()
494
-
495
- # Use the function to generate a name
496
- for _ in range(amount):
497
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
498
- stripped = generated_name.strip()
499
- hate_speech = detect_hate_speech(stripped)
500
- profanity = detect_profanity([stripped], language='All')
501
- name = ''
502
-
503
- if len(profanity) > 0:
504
- name = "Profanity Detected"
505
- else:
506
- if hate_speech == ['Hate Speech']:
507
- name = 'Hate Speech Detected'
508
- elif hate_speech == ['Offensive Speech']:
509
- name = 'Offensive Speech Detected'
510
- elif hate_speech == ['No Hate and Offensive Speech']:
511
- name = stripped
512
- names.append(name)
513
- return pd.DataFrame(names, columns=['Names'])
514
-
515
- elif type == "Darkest Dungeon":
516
- max_seq_len = 14
517
- sp = spm.SentencePieceProcessor()
518
- sp.load("models/darkest_dungeon_names.model")
519
- amount = int(amount)
520
- max_length = int(max_length)
521
-
522
- names = []
523
-
524
- # Define necessary variables
525
- vocab_size = sp.GetPieceSize()
526
-
527
- # Load TFLite model
528
- interpreter = tf.lite.Interpreter(model_path="models/dungen_darkest_dungeon_model.tflite")
529
- interpreter.allocate_tensors()
530
-
531
- # Use the function to generate a name
532
- for _ in range(amount):
533
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
534
- stripped = generated_name.strip()
535
- hate_speech = detect_hate_speech(stripped)
536
- profanity = detect_profanity([stripped], language='All')
537
- name = ''
538
-
539
- if len(profanity) > 0:
540
- name = "Profanity Detected"
541
- else:
542
- if hate_speech == ['Hate Speech']:
543
- name = 'Hate Speech Detected'
544
- elif hate_speech == ['Offensive Speech']:
545
- name = 'Offensive Speech Detected'
546
- elif hate_speech == ['No Hate and Offensive Speech']:
547
- name = stripped
548
- names.append(name)
549
- return pd.DataFrame(names, columns=['Names'])
550
-
551
- elif type == "Monster Hunter":
552
- max_seq_len = 15
553
- sp = spm.SentencePieceProcessor()
554
- sp.load("models/monster_hunter_names.model")
555
- amount = int(amount)
556
- max_length = int(max_length)
557
-
558
- names = []
559
-
560
- # Define necessary variables
561
- vocab_size = sp.GetPieceSize()
562
-
563
- # Load TFLite model
564
- interpreter = tf.lite.Interpreter(model_path="models/dungen_monster_hunter_model.tflite")
565
- interpreter.allocate_tensors()
566
-
567
- # Use the function to generate a name
568
- for _ in range(amount):
569
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
570
- stripped = generated_name.strip()
571
- hate_speech = detect_hate_speech(stripped)
572
- profanity = detect_profanity([stripped], language='All')
573
- name = ''
574
-
575
- if len(profanity) > 0:
576
- name = "Profanity Detected"
577
- else:
578
- if hate_speech == ['Hate Speech']:
579
- name = 'Hate Speech Detected'
580
- elif hate_speech == ['Offensive Speech']:
581
- name = 'Offensive Speech Detected'
582
- elif hate_speech == ['No Hate and Offensive Speech']:
583
- name = stripped
584
- names.append(name)
585
- return pd.DataFrame(names, columns=['Names'])
586
-
587
- elif type == "Bloodborne":
588
- max_seq_len = 12
589
- sp = spm.SentencePieceProcessor()
590
- sp.load("models/bloodborne_names.model")
591
- amount = int(amount)
592
- max_length = int(max_length)
593
-
594
- names = []
595
-
596
- # Define necessary variables
597
- vocab_size = sp.GetPieceSize()
598
-
599
- # Load TFLite model
600
- interpreter = tf.lite.Interpreter(model_path="models/dungen_bloodborne_model.tflite")
601
- interpreter.allocate_tensors()
602
-
603
- # Use the function to generate a name
604
- for _ in range(amount):
605
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
606
- stripped = generated_name.strip()
607
- hate_speech = detect_hate_speech(stripped)
608
- profanity = detect_profanity([stripped], language='All')
609
- name = ''
610
-
611
- if len(profanity) > 0:
612
- name = "Profanity Detected"
613
- else:
614
- if hate_speech == ['Hate Speech']:
615
- name = 'Hate Speech Detected'
616
- elif hate_speech == ['Offensive Speech']:
617
- name = 'Offensive Speech Detected'
618
- elif hate_speech == ['No Hate and Offensive Speech']:
619
- name = stripped
620
- names.append(name)
621
- return pd.DataFrame(names, columns=['Names'])
622
-
623
- elif type == "Hollow Knight":
624
- max_seq_len = 15
625
- sp = spm.SentencePieceProcessor()
626
- sp.load("models/hollow_knight_names.model")
627
- amount = int(amount)
628
- max_length = int(max_length)
629
-
630
- names = []
631
-
632
- # Define necessary variables
633
- vocab_size = sp.GetPieceSize()
634
-
635
- # Load TFLite model
636
- interpreter = tf.lite.Interpreter(model_path="models/dungen_hollow_knight_model.tflite")
637
- interpreter.allocate_tensors()
638
-
639
- # Use the function to generate a name
640
- for _ in range(amount):
641
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
642
- stripped = generated_name.strip()
643
- hate_speech = detect_hate_speech(stripped)
644
- profanity = detect_profanity([stripped], language='All')
645
- name = ''
646
-
647
- if len(profanity) > 0:
648
- name = "Profanity Detected"
649
- else:
650
- if hate_speech == ['Hate Speech']:
651
- name = 'Hate Speech Detected'
652
- elif hate_speech == ['Offensive Speech']:
653
- name = 'Offensive Speech Detected'
654
- elif hate_speech == ['No Hate and Offensive Speech']:
655
- name = stripped
656
- names.append(name)
657
- return pd.DataFrame(names, columns=['Names'])
658
-
659
- elif type == "Assassin's Creed":
660
- max_seq_len = 15
661
- sp = spm.SentencePieceProcessor()
662
- sp.load("models/assassins_creed_names.model")
663
- amount = int(amount)
664
- max_length = int(max_length)
665
-
666
- names = []
667
-
668
- # Define necessary variables
669
- vocab_size = sp.GetPieceSize()
670
-
671
- # Load TFLite model
672
- interpreter = tf.lite.Interpreter(model_path="models/dungen_assassins_creed_model.tflite")
673
- interpreter.allocate_tensors()
674
-
675
- # Use the function to generate a name
676
- for _ in range(amount):
677
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
678
- stripped = generated_name.strip()
679
- hate_speech = detect_hate_speech(stripped)
680
- profanity = detect_profanity([stripped], language='All')
681
- name = ''
682
-
683
- if len(profanity) > 0:
684
- name = "Profanity Detected"
685
- else:
686
- if hate_speech == ['Hate Speech']:
687
- name = 'Hate Speech Detected'
688
- elif hate_speech == ['Offensive Speech']:
689
- name = 'Offensive Speech Detected'
690
- elif hate_speech == ['No Hate and Offensive Speech']:
691
- name = stripped
692
- names.append(name)
693
- return pd.DataFrame(names, columns=['Names'])
694
-
695
- elif type == "Baldur's Gate":
696
- max_seq_len = 14
697
- sp = spm.SentencePieceProcessor()
698
- sp.load("models/baldurs_gate_names.model")
699
- amount = int(amount)
700
- max_length = int(max_length)
701
-
702
- names = []
703
-
704
- # Define necessary variables
705
- vocab_size = sp.GetPieceSize()
706
-
707
- # Load TFLite model
708
- interpreter = tf.lite.Interpreter(model_path="models/dungen_baldurs_gate_model.tflite")
709
- interpreter.allocate_tensors()
710
-
711
- # Use the function to generate a name
712
- for _ in range(amount):
713
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
714
- stripped = generated_name.strip()
715
- hate_speech = detect_hate_speech(stripped)
716
- profanity = detect_profanity([stripped], language='All')
717
- name = ''
718
-
719
- if len(profanity) > 0:
720
- name = "Profanity Detected"
721
- else:
722
- if hate_speech == ['Hate Speech']:
723
- name = 'Hate Speech Detected'
724
- elif hate_speech == ['Offensive Speech']:
725
- name = 'Offensive Speech Detected'
726
- elif hate_speech == ['No Hate and Offensive Speech']:
727
- name = stripped
728
- names.append(name)
729
- return pd.DataFrame(names, columns=['Names'])
730
-
731
- elif type == "Cyberpunk":
732
- max_seq_len = 11 # For skyrim = 13, for terraria = 12
733
- sp = spm.SentencePieceProcessor()
734
- sp.load("models/cyberpunk_names.model")
735
- amount = int(amount)
736
- max_length = int(max_length)
737
-
738
- names = []
739
-
740
- # Define necessary variables
741
- vocab_size = sp.GetPieceSize()
742
-
743
- # Load TFLite model
744
- interpreter = tf.lite.Interpreter(model_path="models/dungen_cyberpunk_model.tflite")
745
- interpreter.allocate_tensors()
746
-
747
- # Use the function to generate a name
748
- for _ in range(amount):
749
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
750
- stripped = generated_name.strip()
751
- hate_speech = detect_hate_speech(stripped)
752
- profanity = detect_profanity([stripped], language='All')
753
- name = ''
754
-
755
- if len(profanity) > 0:
756
- name = "Profanity Detected"
757
- else:
758
- if hate_speech == ['Hate Speech']:
759
- name = 'Hate Speech Detected'
760
- elif hate_speech == ['Offensive Speech']:
761
- name = 'Offensive Speech Detected'
762
- elif hate_speech == ['No Hate and Offensive Speech']:
763
- name = stripped
764
- names.append(name)
765
- return pd.DataFrame(names, columns=['Names'])
766
-
767
- elif type == "Mass Effect":
768
- max_seq_len = 13 # For skyrim = 13, for terraria = 12
769
- sp = spm.SentencePieceProcessor()
770
- sp.load("models/mass_effect_names.model")
771
- amount = int(amount)
772
- max_length = int(max_length)
773
-
774
- names = []
775
-
776
- # Define necessary variables
777
- vocab_size = sp.GetPieceSize()
778
-
779
- # Load TFLite model
780
- interpreter = tf.lite.Interpreter(model_path="models/dungen_mass_effect_model.tflite")
781
- interpreter.allocate_tensors()
782
-
783
- # Use the function to generate a name
784
- for _ in range(amount):
785
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
786
- stripped = generated_name.strip()
787
- hate_speech = detect_hate_speech(stripped)
788
- profanity = detect_profanity([stripped], language='All')
789
- name = ''
790
-
791
- if len(profanity) > 0:
792
- name = "Profanity Detected"
793
- else:
794
- if hate_speech == ['Hate Speech']:
795
- name = 'Hate Speech Detected'
796
- elif hate_speech == ['Offensive Speech']:
797
- name = 'Offensive Speech Detected'
798
- elif hate_speech == ['No Hate and Offensive Speech']:
799
- name = stripped
800
- names.append(name)
801
- return pd.DataFrame(names, columns=['Names'])
802
-
803
- elif type == "God Of War":
804
- max_seq_len = 12 # For skyrim = 13, for terraria = 12
805
- sp = spm.SentencePieceProcessor()
806
- sp.load("models/god_of_war_names.model")
807
- amount = int(amount)
808
- max_length = int(max_length)
809
-
810
- names = []
811
-
812
- # Define necessary variables
813
- vocab_size = sp.GetPieceSize()
814
-
815
- # Load TFLite model
816
- interpreter = tf.lite.Interpreter(model_path="models/dungen_god_of_war_model.tflite")
817
- interpreter.allocate_tensors()
818
-
819
- # Use the function to generate a name
820
- for _ in range(amount):
821
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
822
- stripped = generated_name.strip()
823
- hate_speech = detect_hate_speech(stripped)
824
- profanity = detect_profanity([stripped], language='All')
825
- name = ''
826
-
827
- if len(profanity) > 0:
828
- name = "Profanity Detected"
829
- else:
830
- if hate_speech == ['Hate Speech']:
831
- name = 'Hate Speech Detected'
832
- elif hate_speech == ['Offensive Speech']:
833
- name = 'Offensive Speech Detected'
834
- elif hate_speech == ['No Hate and Offensive Speech']:
835
- name = stripped
836
- names.append(name)
837
- return pd.DataFrame(names, columns=['Names'])
838
-
839
- elif type == "Last Of Us":
840
- max_seq_len = 5 # For skyrim = 13, for terraria = 12
841
- sp = spm.SentencePieceProcessor()
842
- sp.load("models/last_of_us_names.model")
843
- amount = int(amount)
844
- max_length = int(max_length)
845
-
846
- names = []
847
-
848
- # Define necessary variables
849
- vocab_size = sp.GetPieceSize()
850
-
851
- # Load TFLite model
852
- interpreter = tf.lite.Interpreter(model_path="models/dungen_last_of_us_model.tflite")
853
- interpreter.allocate_tensors()
854
-
855
- # Use the function to generate a name
856
- for _ in range(amount):
857
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
858
- stripped = generated_name.strip()
859
- hate_speech = detect_hate_speech(stripped)
860
- profanity = detect_profanity([stripped], language='All')
861
- name = ''
862
-
863
- if len(profanity) > 0:
864
- name = "Profanity Detected"
865
- else:
866
- if hate_speech == ['Hate Speech']:
867
- name = 'Hate Speech Detected'
868
- elif hate_speech == ['Offensive Speech']:
869
- name = 'Offensive Speech Detected'
870
- elif hate_speech == ['No Hate and Offensive Speech']:
871
- name = stripped
872
- names.append(name)
873
- return pd.DataFrame(names, columns=['Names'])
874
-
875
- elif type == "Factorio":
876
- max_seq_len = 8 # For skyrim = 13, for terraria = 12
877
- sp = spm.SentencePieceProcessor()
878
- sp.load("models/factorio_names.model")
879
- amount = int(amount)
880
- max_length = int(max_length)
881
-
882
- names = []
883
-
884
- # Define necessary variables
885
- vocab_size = sp.GetPieceSize()
886
-
887
- # Load TFLite model
888
- interpreter = tf.lite.Interpreter(model_path="models/dungen_factorio_model.tflite")
889
- interpreter.allocate_tensors()
890
-
891
- # Use the function to generate a name
892
- for _ in range(amount):
893
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
894
- stripped = generated_name.strip()
895
- hate_speech = detect_hate_speech(stripped)
896
- profanity = detect_profanity([stripped], language='All')
897
- name = ''
898
-
899
- if len(profanity) > 0:
900
- name = "Profanity Detected"
901
- else:
902
- if hate_speech == ['Hate Speech']:
903
- name = 'Hate Speech Detected'
904
- elif hate_speech == ['Offensive Speech']:
905
- name = 'Offensive Speech Detected'
906
- elif hate_speech == ['No Hate and Offensive Speech']:
907
- name = stripped
908
- names.append(name)
909
- return pd.DataFrame(names, columns=['Names'])
910
-
911
- elif type == "The Sims":
912
- max_seq_len = 4 # For skyrim = 13, for terraria = 12
913
- sp = spm.SentencePieceProcessor()
914
- sp.load("models/the_sims_names.model")
915
- amount = int(amount)
916
- max_length = int(max_length)
917
-
918
- names = []
919
-
920
- # Define necessary variables
921
- vocab_size = sp.GetPieceSize()
922
-
923
- # Load TFLite model
924
- interpreter = tf.lite.Interpreter(model_path="models/dungen_the_sims_model.tflite")
925
- interpreter.allocate_tensors()
926
-
927
- # Use the function to generate a name
928
- for _ in range(amount):
929
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
930
- stripped = generated_name.strip()
931
- hate_speech = detect_hate_speech(stripped)
932
- profanity = detect_profanity([stripped], language='All')
933
- name = ''
934
-
935
- if len(profanity) > 0:
936
- name = "Profanity Detected"
937
- else:
938
- if hate_speech == ['Hate Speech']:
939
- name = 'Hate Speech Detected'
940
- elif hate_speech == ['Offensive Speech']:
941
- name = 'Offensive Speech Detected'
942
- elif hate_speech == ['No Hate and Offensive Speech']:
943
- name = stripped
944
- names.append(name)
945
- return pd.DataFrame(names, columns=['Names'])
946
-
947
- elif type == "Fortnite":
948
- max_seq_len = 9 # For skyrim = 13, for terraria = 12
949
- sp = spm.SentencePieceProcessor()
950
- sp.load("models/fortnite_names.model")
951
- amount = int(amount)
952
- max_length = int(max_length)
953
-
954
- names = []
955
-
956
- # Define necessary variables
957
- vocab_size = sp.GetPieceSize()
958
-
959
- # Load TFLite model
960
- interpreter = tf.lite.Interpreter(model_path="models/dungen_fortnite_model.tflite")
961
- interpreter.allocate_tensors()
962
-
963
- # Use the function to generate a name
964
- for _ in range(amount):
965
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
966
- stripped = generated_name.strip()
967
- hate_speech = detect_hate_speech(stripped)
968
- profanity = detect_profanity([stripped], language='All')
969
- name = ''
970
-
971
- if len(profanity) > 0:
972
- name = "Profanity Detected"
973
- else:
974
- if hate_speech == ['Hate Speech']:
975
- name = 'Hate Speech Detected'
976
- elif hate_speech == ['Offensive Speech']:
977
- name = 'Offensive Speech Detected'
978
- elif hate_speech == ['No Hate and Offensive Speech']:
979
- name = stripped
980
- names.append(name)
981
- return pd.DataFrame(names, columns=['Names'])
982
-
983
- elif type == "League Of Legends":
984
- max_seq_len = 12 # For skyrim = 13, for terraria = 12
985
- sp = spm.SentencePieceProcessor()
986
- sp.load("models/league_of_legends_names.model")
987
- amount = int(amount)
988
- max_length = int(max_length)
989
-
990
- names = []
991
-
992
- # Define necessary variables
993
- vocab_size = sp.GetPieceSize()
994
-
995
- # Load TFLite model
996
- interpreter = tf.lite.Interpreter(model_path="models/dungen_league_of_legends_model.tflite")
997
- interpreter.allocate_tensors()
998
-
999
- # Use the function to generate a name
1000
- for _ in range(amount):
1001
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1002
- stripped = generated_name.strip()
1003
- hate_speech = detect_hate_speech(stripped)
1004
- profanity = detect_profanity([stripped], language='All')
1005
- name = ''
1006
-
1007
- if len(profanity) > 0:
1008
- name = "Profanity Detected"
1009
- else:
1010
- if hate_speech == ['Hate Speech']:
1011
- name = 'Hate Speech Detected'
1012
- elif hate_speech == ['Offensive Speech']:
1013
- name = 'Offensive Speech Detected'
1014
- elif hate_speech == ['No Hate and Offensive Speech']:
1015
- name = stripped
1016
- names.append(name)
1017
- return pd.DataFrame(names, columns=['Names'])
1018
-
1019
- elif type == "Among Us":
1020
- max_seq_len = 13 # For skyrim = 13, for terraria = 12
1021
- sp = spm.SentencePieceProcessor()
1022
- sp.load("models/among_us_names.model")
1023
- amount = int(amount)
1024
- max_length = int(max_length)
1025
-
1026
- names = []
1027
-
1028
- # Define necessary variables
1029
- vocab_size = sp.GetPieceSize()
1030
-
1031
- # Load TFLite model
1032
- interpreter = tf.lite.Interpreter(model_path="models/dungen_among_us_model.tflite")
1033
- interpreter.allocate_tensors()
1034
-
1035
- # Use the function to generate a name
1036
- for _ in range(amount):
1037
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1038
- stripped = generated_name.strip()
1039
- hate_speech = detect_hate_speech(stripped)
1040
- profanity = detect_profanity([stripped], language='All')
1041
- name = ''
1042
-
1043
- if len(profanity) > 0:
1044
- name = "Profanity Detected"
1045
- else:
1046
- if hate_speech == ['Hate Speech']:
1047
- name = 'Hate Speech Detected'
1048
- elif hate_speech == ['Offensive Speech']:
1049
- name = 'Offensive Speech Detected'
1050
- elif hate_speech == ['No Hate and Offensive Speech']:
1051
- name = stripped
1052
- names.append(name)
1053
- return pd.DataFrame(names, columns=['Names'])
1054
-
1055
- elif type == "Warframe":
1056
- max_seq_len = 13 # For skyrim = 13, for terraria = 12
1057
- sp = spm.SentencePieceProcessor()
1058
- sp.load("models/warframe_names.model")
1059
- amount = int(amount)
1060
- max_length = int(max_length)
1061
-
1062
- names = []
1063
-
1064
- # Define necessary variables
1065
- vocab_size = sp.GetPieceSize()
1066
-
1067
- # Load TFLite model
1068
- interpreter = tf.lite.Interpreter(model_path="models/dungen_warframe_model.tflite")
1069
- interpreter.allocate_tensors()
1070
-
1071
- # Use the function to generate a name
1072
- for _ in range(amount):
1073
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1074
- stripped = generated_name.strip()
1075
- hate_speech = detect_hate_speech(stripped)
1076
- profanity = detect_profanity([stripped], language='All')
1077
- name = ''
1078
-
1079
- if len(profanity) > 0:
1080
- name = "Profanity Detected"
1081
- else:
1082
- if hate_speech == ['Hate Speech']:
1083
- name = 'Hate Speech Detected'
1084
- elif hate_speech == ['Offensive Speech']:
1085
- name = 'Offensive Speech Detected'
1086
- elif hate_speech == ['No Hate and Offensive Speech']:
1087
- name = stripped
1088
- names.append(name)
1089
- return pd.DataFrame(names, columns=['Names'])
1090
-
1091
- elif type == "Call of Duty":
1092
- max_seq_len = 11 # For skyrim = 13, for terraria = 12
1093
- sp = spm.SentencePieceProcessor()
1094
- sp.load("models/call_of_duty_names.model")
1095
- amount = int(amount)
1096
- max_length = int(max_length)
1097
-
1098
- names = []
1099
-
1100
- # Define necessary variables
1101
- vocab_size = sp.GetPieceSize()
1102
-
1103
- # Load TFLite model
1104
- interpreter = tf.lite.Interpreter(model_path="models/dungen_call_of_duty_model.tflite")
1105
- interpreter.allocate_tensors()
1106
-
1107
- # Use the function to generate a name
1108
- for _ in range(amount):
1109
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1110
- stripped = generated_name.strip()
1111
- hate_speech = detect_hate_speech(stripped)
1112
- profanity = detect_profanity([stripped], language='All')
1113
- name = ''
1114
-
1115
- if len(profanity) > 0:
1116
- name = "Profanity Detected"
1117
- else:
1118
- if hate_speech == ['Hate Speech']:
1119
- name = 'Hate Speech Detected'
1120
- elif hate_speech == ['Offensive Speech']:
1121
- name = 'Offensive Speech Detected'
1122
- elif hate_speech == ['No Hate and Offensive Speech']:
1123
- name = stripped
1124
- names.append(name)
1125
- return pd.DataFrame(names, columns=['Names'])
1126
-
1127
- elif type == "Forza Horizon":
1128
- max_seq_len = 10 # For skyrim = 13, for terraria = 12
1129
- sp = spm.SentencePieceProcessor()
1130
- sp.load("models/forza_horizon_names.model")
1131
- amount = int(amount)
1132
- max_length = int(max_length)
1133
-
1134
- names = []
1135
-
1136
- # Define necessary variables
1137
- vocab_size = sp.GetPieceSize()
1138
-
1139
- # Load TFLite model
1140
- interpreter = tf.lite.Interpreter(model_path="models/dungen_forza_horizon_model.tflite")
1141
- interpreter.allocate_tensors()
1142
-
1143
- # Use the function to generate a name
1144
- for _ in range(amount):
1145
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1146
- stripped = generated_name.strip()
1147
- hate_speech = detect_hate_speech(stripped)
1148
- profanity = detect_profanity([stripped], language='All')
1149
- name = ''
1150
-
1151
- if len(profanity) > 0:
1152
- name = "Profanity Detected"
1153
- else:
1154
- if hate_speech == ['Hate Speech']:
1155
- name = 'Hate Speech Detected'
1156
- elif hate_speech == ['Offensive Speech']:
1157
- name = 'Offensive Speech Detected'
1158
- elif hate_speech == ['No Hate and Offensive Speech']:
1159
- name = stripped
1160
- names.append(name)
1161
- return pd.DataFrame(names, columns=['Names'])
1162
-
1163
- elif type == "Halo":
1164
- max_seq_len = 14 # For skyrim = 13, for terraria = 12
1165
- sp = spm.SentencePieceProcessor()
1166
- sp.load("models/halo_names.model")
1167
- amount = int(amount)
1168
- max_length = int(max_length)
1169
-
1170
- names = []
1171
-
1172
- # Define necessary variables
1173
- vocab_size = sp.GetPieceSize()
1174
-
1175
- # Load TFLite model
1176
- interpreter = tf.lite.Interpreter(model_path="models/dungen_halo_model.tflite")
1177
- interpreter.allocate_tensors()
1178
-
1179
- # Use the function to generate a name
1180
- for _ in range(amount):
1181
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1182
- stripped = generated_name.strip()
1183
- hate_speech = detect_hate_speech(stripped)
1184
- profanity = detect_profanity([stripped], language='All')
1185
- name = ''
1186
-
1187
- if len(profanity) > 0:
1188
- name = "Profanity Detected"
1189
- else:
1190
- if hate_speech == ['Hate Speech']:
1191
- name = 'Hate Speech Detected'
1192
- elif hate_speech == ['Offensive Speech']:
1193
- name = 'Offensive Speech Detected'
1194
- elif hate_speech == ['No Hate and Offensive Speech']:
1195
- name = stripped
1196
- names.append(name)
1197
- return pd.DataFrame(names, columns=['Names'])
1198
-
1199
- elif type == "Overwatch":
1200
- max_seq_len = 9 # For skyrim = 13, for terraria = 12
1201
- sp = spm.SentencePieceProcessor()
1202
- sp.load("models/overwatch_names.model")
1203
- amount = int(amount)
1204
- max_length = int(max_length)
1205
-
1206
- names = []
1207
-
1208
- # Define necessary variables
1209
- vocab_size = sp.GetPieceSize()
1210
-
1211
- # Load TFLite model
1212
- interpreter = tf.lite.Interpreter(model_path="models/dungen_overwatch_model.tflite")
1213
- interpreter.allocate_tensors()
1214
-
1215
- # Use the function to generate a name
1216
- for _ in range(amount):
1217
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1218
- stripped = generated_name.strip()
1219
- hate_speech = detect_hate_speech(stripped)
1220
- profanity = detect_profanity([stripped], language='All')
1221
- name = ''
1222
-
1223
- if len(profanity) > 0:
1224
- name = "Profanity Detected"
1225
- else:
1226
- if hate_speech == ['Hate Speech']:
1227
- name = 'Hate Speech Detected'
1228
- elif hate_speech == ['Offensive Speech']:
1229
- name = 'Offensive Speech Detected'
1230
- elif hate_speech == ['No Hate and Offensive Speech']:
1231
- name = stripped
1232
- names.append(name)
1233
- return pd.DataFrame(names, columns=['Names'])
1234
-
1235
- elif type == "Subnautica":
1236
- max_seq_len = 14 # For skyrim = 13, for terraria = 12
1237
- sp = spm.SentencePieceProcessor()
1238
- sp.load("models/subnautica_names.model")
1239
- amount = int(amount)
1240
- max_length = int(max_length)
1241
-
1242
- names = []
1243
-
1244
- # Define necessary variables
1245
- vocab_size = sp.GetPieceSize()
1246
-
1247
- # Load TFLite model
1248
- interpreter = tf.lite.Interpreter(model_path="models/dungen_subnautica_model.tflite")
1249
- interpreter.allocate_tensors()
1250
-
1251
- # Use the function to generate a name
1252
- for _ in range(amount):
1253
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1254
- stripped = generated_name.strip()
1255
- hate_speech = detect_hate_speech(stripped)
1256
- profanity = detect_profanity([stripped], language='All')
1257
- name = ''
1258
-
1259
- if len(profanity) > 0:
1260
- name = "Profanity Detected"
1261
- else:
1262
- if hate_speech == ['Hate Speech']:
1263
- name = 'Hate Speech Detected'
1264
- elif hate_speech == ['Offensive Speech']:
1265
- name = 'Offensive Speech Detected'
1266
- elif hate_speech == ['No Hate and Offensive Speech']:
1267
- name = stripped
1268
- names.append(name)
1269
- return pd.DataFrame(names, columns=['Names'])
1270
-
1271
- elif type == "Fantasy":
1272
- max_seq_len = 16 # For fantasy, 16
1273
- sp = spm.SentencePieceProcessor()
1274
- sp.load("models/fantasy_names.model")
1275
- amount = int(amount)
1276
- max_length = int(max_length)
1277
-
1278
- names = []
1279
-
1280
- # Define necessary variables
1281
- vocab_size = sp.GetPieceSize()
1282
-
1283
- # Load TFLite model
1284
- interpreter = tf.lite.Interpreter(model_path="models/dungen_fantasy_model.tflite")
1285
- interpreter.allocate_tensors()
1286
-
1287
- # Use the function to generate a name
1288
- for _ in range(amount):
1289
- generated_name = generate_random_name(interpreter, vocab_size, sp, seed_text=seed_text, max_length=max_length, temperature=temperature, max_seq_len=max_seq_len)
1290
- stripped = generated_name.strip()
1291
- hate_speech = detect_hate_speech(stripped)
1292
- profanity = detect_profanity([stripped], language='All')
1293
- name = ''
1294
-
1295
- if len(profanity) > 0:
1296
- name = "Profanity Detected"
1297
- else:
1298
- if hate_speech == ['Hate Speech']:
1299
- name = 'Hate Speech Detected'
1300
- elif hate_speech == ['Offensive Speech']:
1301
- name = 'Offensive Speech Detected'
1302
- elif hate_speech == ['No Hate and Offensive Speech']:
1303
- name = stripped
1304
- names.append(name)
1305
- return pd.DataFrame(names, columns=['Names'])
1306
 
1307
  demo = gr.Interface(
1308
  fn=generateNames,
1309
- inputs=[gr.Radio(choices=["Terraria", "Skyrim", "Witcher", "WOW", "Minecraft", "Dark Souls", "Final Fantasy", "Elden Ring", "Zelda", "Dragon Age", "Fallout", "Darkest Dungeon", "Monster Hunter", "Bloodborne", "Hollow Knight", "Assassin's Creed", "Baldur's Gate", "Cyberpunk", "Mass Effect", "God Of War", "Last Of Us", "Factorio", "The Sims", "Fortnite", "League Of Legends", "Among Us", "Warframe", "Call of Duty", "Forza Horizon", "Halo", "Overwatch", "Subnautica", "Fantasy"], label="Choose a model for your request", value="Terraria"), gr.Slider(1,100, step=1, label='Amount of Names', info='How many names to generate, must be greater than 0'), gr.Slider(10, 60, value=30, step=1, label='Max Length', info='Max length of the generated word'), gr.Slider(0.1, 1, value=0.5, label='Temperature', info='Controls randomness of generation, higher values = more creative, lower values = more probalistic'), gr.Textbox('', label='Seed text (optional)', info='The starting text to begin with', max_lines=1, )],
1310
- outputs=[gr.Dataframe(row_count = (2, "dynamic"), col_count=(1, "fixed"), label="Generated Names", headers=["Names"])],
 
 
 
 
 
 
 
 
 
 
1311
  title='Dungen - Name Generator',
1312
  description='A fun game-inspired name generator. For an example of how to create, and train your model, like this one, head over to: https://github.com/Infinitode/OPEN-ARC/tree/main/Project-5-TWNG. There you will find our base model, the dataset we used, and implementation code in the form of a Jupyter Notebook (exported from Kaggle).'
1313
  )
1314
 
1315
- demo.launch()
 
 
7
  import tensorflow as tf
8
  from valx import detect_profanity, detect_hate_speech
9
 
10
+ # Configuration dictionary mapping game names to their max_seq_len
11
+ MODEL_CONFIGS = {
12
+ "Terraria": 12, "Skyrim": 13, "Witcher": 20, "WOW": 16, "Minecraft": 17,
13
+ "Dark Souls": 13, "Final Fantasy": 14, "Elden Ring": 18, "Zelda": 15,
14
+ "Dragon Age": 16, "Fallout": 13, "Darkest Dungeon": 14, "Monster Hunter": 15,
15
+ "Bloodborne": 12, "Hollow Knight": 15, "Assassin's Creed": 15, "Baldur's Gate": 14,
16
+ "Cyberpunk": 11, "Mass Effect": 13, "God Of War": 12, "Last Of Us": 5,
17
+ "Factorio": 8, "The Sims": 4, "Fortnite": 9, "League Of Legends": 12,
18
+ "Among Us": 13, "Warframe": 13, "Call of Duty": 11, "Forza Horizon": 10,
19
+ "Halo": 14, "Overwatch": 9, "Subnautica": 14, "Fantasy": 16,
20
+
21
+ # New Models in version 1.4
22
+ "Animal Crossing": 14, "Civilization VI": 22, "Control": 22, "Cuphead": 24,
23
+ "Dead Space": 18, "Diablo": 20, "Dota 2": 27, "EVE Online": 24, "GTA": 23,
24
+ "Hades": 20, "Metroid": 28, "Portal": 28, "Resident Evil": 21, "RimWorld": 23,
25
+ "Slay the Spire": 18, "Stardew Valley": 19, "Stellaris": 23, "Valheim": 20
26
+ }
27
+
28
+ # Global dictionary to store loaded models in memory
29
+ MODEL_CACHE = {}
30
+
31
+ def get_loaded_models(game_type):
32
  """
33
+ Lazy-loads models into memory. If the model is already in the cache,
34
+ it returns it instantly. Otherwise, it loads it from disk, caches it, and returns it.
 
 
 
 
 
35
  """
36
+ if game_type not in MODEL_CACHE:
37
+ file_prefix = game_type.lower().replace(" ", "_").replace("'", "")
38
+
39
+ # Load SentencePiece Model
40
+ sp = spm.SentencePieceProcessor()
41
+ sp.load(f"models/{file_prefix}_names.model")
42
+
43
+ # Load TFLite model
44
+ interpreter = tf.lite.Interpreter(model_path=f"models/dungen_{file_prefix}_model.tflite")
45
+ interpreter.allocate_tensors()
46
+
47
+ # Store in cache
48
+ MODEL_CACHE[game_type] = {
49
+ "sp": sp,
50
+ "interpreter": interpreter,
51
+ "vocab_size": sp.GetPieceSize()
52
+ }
53
+
54
+ return MODEL_CACHE[game_type]
55
+
56
+ def custom_pad_sequences(sequences, maxlen, padding='pre', value=0):
57
  padded_sequences = np.full((len(sequences), maxlen), value)
58
  for i, seq in enumerate(sequences):
59
  if padding == 'pre':
 
69
  return padded_sequences
70
 
71
  def generate_random_name(interpreter, vocab_size, sp, max_length=10, temperature=0.5, seed_text="", max_seq_len=12):
 
72
  input_details = interpreter.get_input_details()
73
  output_details = interpreter.get_output_details()
74
  decoded_name = ''
 
83
  for _ in range(max_length - 1):
84
  token_list = sp.encode_as_ids(generated_name)
85
 
 
86
  if len(token_list) == 0:
87
+ continue
88
 
 
89
  token_list = custom_pad_sequences([token_list], maxlen=max_seq_len, padding='pre')
 
 
90
  token_list = token_list.astype(np.float32)
91
 
 
92
  interpreter.set_tensor(input_details[0]['index'], token_list)
 
 
93
  interpreter.invoke()
94
 
 
95
  predicted = interpreter.get_tensor(output_details[0]['index'])[0]
 
 
96
  predicted = np.log(predicted + 1e-8) / temperature
97
  predicted = np.exp(predicted) / np.sum(np.exp(predicted))
98
 
 
99
  next_index = np.random.choice(range(vocab_size), p=predicted)
100
  next_index = int(next_index)
101
  next_token = sp.id_to_piece(next_index)
102
 
103
  generated_name = sp.decode_pieces(sp.encode_as_pieces(generated_name) + [next_token])
 
 
104
  decoded_name = sp.decode_pieces(sp.encode_as_pieces(generated_name))
105
 
 
106
  if next_token == '' or len(decoded_name) > max_length:
107
  break
108
 
 
110
  decoded_name = decoded_name.replace("</s>", "")
111
  decoded_name = decoded_name.replace("<unk>", "")
112
  decoded_name = decoded_name.replace("<s>", "")
113
+ generated_name = decoded_name.strip().capitalize()
 
 
114
 
 
115
  parts = generated_name.split()
116
  if parts and len(parts[-1]) < 3:
117
  generated_name = " ".join(parts[:-1])
118
 
119
  return generated_name.strip()
120
 
121
+ def generateNames(game_type, amount, max_length=30, temperature=0.5, seed_text=""):
122
  hate_speech = detect_hate_speech(seed_text)
123
  profanity = detect_profanity([seed_text], language='All')
 
124
 
125
  if len(profanity) > 0:
126
  gr.Warning("Profanity detected in the seed text, using an empty seed text.")
 
132
  elif hate_speech == ['Offensive Speech']:
133
  gr.Warning('Offensive speech detected in the seed text, using an empty seed text.')
134
  seed_text = ''
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
 
136
+ if game_type not in MODEL_CONFIGS:
137
+ return pd.DataFrame([], columns=['Names'])
138
+
139
+ # Fetch max sequence length
140
+ max_seq_len = MODEL_CONFIGS[game_type]
141
+
142
+ # Fetch cached models (loads them instantly if already cached)
143
+ cached_data = get_loaded_models(game_type)
144
+ sp = cached_data["sp"]
145
+ interpreter = cached_data["interpreter"]
146
+ vocab_size = cached_data["vocab_size"]
147
+
148
+ amount = int(amount)
149
+ max_length = int(max_length)
150
+ names = []
151
+
152
+ for _ in range(amount):
153
+ generated_name = generate_random_name(
154
+ interpreter, vocab_size, sp,
155
+ seed_text=seed_text, max_length=max_length,
156
+ temperature=temperature, max_seq_len=max_seq_len
157
+ )
158
+ stripped = generated_name.strip()
159
+ item_hate_speech = detect_hate_speech(stripped)
160
+ item_profanity = detect_profanity([stripped], language='All')
161
+ name = ''
162
+
163
+ if len(item_profanity) > 0:
164
+ name = "Profanity Detected"
165
+ else:
166
+ if item_hate_speech == ['Hate Speech']:
167
+ name = 'Hate Speech Detected'
168
+ elif item_hate_speech == ['Offensive Speech']:
169
+ name = 'Offensive Speech Detected'
170
+ elif item_hate_speech == ['No Hate and Offensive Speech']:
171
+ name = stripped
172
+
173
+ names.append(name)
174
+
175
+ return pd.DataFrame(names, columns=['Names'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
 
177
  demo = gr.Interface(
178
  fn=generateNames,
179
+ inputs=[
180
+ gr.Radio(
181
+ choices=list(MODEL_CONFIGS.keys()),
182
+ label="Choose a model for your request",
183
+ value="Terraria"
184
+ ),
185
+ gr.Slider(1, 100, step=1, label='Amount of Names', info='How many names to generate, must be greater than 0'),
186
+ gr.Slider(10, 60, value=30, step=1, label='Max Length', info='Max length of the generated word'),
187
+ gr.Slider(0.1, 1, value=0.5, label='Temperature', info='Controls randomness of generation, higher values = more creative, lower values = more probalistic'),
188
+ gr.Textbox('', label='Seed text (optional)', info='The starting text to begin with', max_lines=1)
189
+ ],
190
+ outputs=[gr.Dataframe(row_count=(2, "dynamic"), col_count=(1, "fixed"), label="Generated Names", headers=["Names"])],
191
  title='Dungen - Name Generator',
192
  description='A fun game-inspired name generator. For an example of how to create, and train your model, like this one, head over to: https://github.com/Infinitode/OPEN-ARC/tree/main/Project-5-TWNG. There you will find our base model, the dataset we used, and implementation code in the form of a Jupyter Notebook (exported from Kaggle).'
193
  )
194
 
195
+ if __name__ == "__main__":
196
+ demo.launch()