JohanBeytell Tron17543 commited on
Commit
54c7c76
·
verified ·
1 Parent(s): d77bafb

Update app.py (#3)

Browse files

- Update app.py (44218401c0b9ad763e830d47d464f4c172e85145)


Co-authored-by: Andries Beytell <[email protected]>

Files changed (1) hide show
  1. app.py +325 -1
app.py CHANGED
@@ -728,6 +728,330 @@ def generateNames(type, amount, max_length=30, temperature=0.5, seed_text=""):
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,7 +1090,7 @@ def generateNames(type, amount, max_length=30, temperature=0.5, seed_text=""):
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).'
 
728
  names.append(name)
729
  return pd.DataFrame(names, columns=['Names'])
730
 
731
+ elif type == "Cyberpunk":
732
+ max_seq_len = 13 # For skyrim = 13, for terraria = 12
733
+ sp = spm.SentencePieceProcessor()
734
+ sp.load("models/cyperpunk_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 = 16 # 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 = 9 # 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 = 13 # 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 = 13 # 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 = 10 # 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 == "Fantasy":
1056
  max_seq_len = 16 # For fantasy, 16
1057
  sp = spm.SentencePieceProcessor()
 
1090
 
1091
  demo = gr.Interface(
1092
  fn=generateNames,
1093
+ 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", "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, )],
1094
  outputs=[gr.Dataframe(row_count = (2, "dynamic"), col_count=(1, "fixed"), label="Generated Names", headers=["Names"])],
1095
  title='Dungen - Name Generator',
1096
  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).'