JohanBeytell commited on
Commit
e05402d
·
verified ·
1 Parent(s): 7bf4639

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +398 -2
app.py CHANGED
@@ -332,6 +332,402 @@ def generateNames(type, amount, max_length=30, temperature=0.5, seed_text=""):
332
  names.append(name)
333
  return pd.DataFrame(names, columns=['Names'])
334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  elif type == "Fantasy":
336
  max_seq_len = 16 # For fantasy, 16
337
  sp = spm.SentencePieceProcessor()
@@ -370,10 +766,10 @@ def generateNames(type, amount, max_length=30, temperature=0.5, seed_text=""):
370
 
371
  demo = gr.Interface(
372
  fn=generateNames,
373
- inputs=[gr.Radio(choices=["Terraria", "Skyrim", "Witcher", "WOW", "Minecraft", "Dark Souls", "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, )],
374
  outputs=[gr.Dataframe(row_count = (2, "dynamic"), col_count=(1, "fixed"), label="Generated Names", headers=["Names"])],
375
  title='Dungen - Name Generator',
376
- description='A fun game-inspired name generator. For an example of how to create, and train your model, similar to 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).'
377
  )
378
 
379
  demo.launch()
 
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/dark_souls_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 == "Fantasy":
732
  max_seq_len = 16 # For fantasy, 16
733
  sp = spm.SentencePieceProcessor()
 
766
 
767
  demo = gr.Interface(
768
  fn=generateNames,
769
+ 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", "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, )],
770
  outputs=[gr.Dataframe(row_count = (2, "dynamic"), col_count=(1, "fixed"), label="Generated Names", headers=["Names"])],
771
  title='Dungen - Name Generator',
772
+ 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).'
773
  )
774
 
775
  demo.launch()