dragonities commited on
Commit
f21981d
·
1 Parent(s): b268504

Initial commit for Toxic Detection project

Browse files
Files changed (2) hide show
  1. app.py +74 -77
  2. extended_negative_to_positive_words.txt +873 -7
app.py CHANGED
@@ -84,19 +84,12 @@ Remember, consistent practice is the key to mastering these concepts. Apply your
84
 
85
 
86
  """## Working Space"""
87
-
88
- import nltk
89
- import os
90
- nltk.download('wordnet')
91
- nltk.download('omw-1.4') # Untuk mendukung antonim multi-bahasa
92
-
93
- """## Submit Notebook"""
94
-
95
  import random
96
  from transformers import pipeline
97
  import string
98
  from nltk.corpus import wordnet
99
  import nltk
 
100
 
101
  # Unduh resource WordNet
102
  nltk.download("wordnet")
@@ -109,14 +102,14 @@ text_generator = pipeline("text-generation", model="gpt2")
109
  hate_speech_classifier = pipeline("text-classification", model="unitary/toxic-bert")
110
 
111
  # Confidence threshold untuk mendeteksi toksisitas
112
- CONFIDENCE_THRESHOLD = 0.5
113
-
114
- # Initialize toxic counter
115
- toxic_counter = {"count": 0}
116
 
117
  # File path untuk menyimpan mapping negatif ke positif
118
  filepath = "extended_negative_to_positive_words.txt"
119
 
 
 
 
120
  # Daftar kata positif untuk fallback
121
  positive_words = ["kind", "friendly", "smart", "brilliant", "amazing", "wonderful", "great", "excellent"]
122
 
@@ -147,22 +140,18 @@ def generate_random_antonym(word):
147
  # Fallback ke kata positif acak
148
  return random.choice(positive_words)
149
 
150
- # Fungsi untuk memuat mapping negatif ke positif dari file
151
  def load_neg_to_pos_map(filepath):
152
  neg_to_pos_map = {}
153
- # Cek apakah file ada
154
  if not os.path.exists(filepath):
155
- # Jika file tidak ada, buat file kosong atau dengan data default
156
  with open(filepath, "w") as file:
157
- file.write("") # Bisa juga menambahkan data default jika perlu
158
  print(f"File '{filepath}' tidak ditemukan. File baru telah dibuat.")
159
-
160
- # Baca file jika ada
161
  with open(filepath, "r") as file:
162
  for line_number, line in enumerate(file, start=1):
163
- if line.strip(): # Skip empty lines
164
  parts = line.strip().split(":")
165
- if len(parts) == 2: # Pastikan format benar
166
  neg, pos = parts
167
  neg_to_pos_map[neg.strip().lower()] = pos.strip()
168
  else:
@@ -174,91 +163,93 @@ def update_neg_to_pos_file(filepath, word, opposite_word):
174
  with open(filepath, "a") as file:
175
  file.write(f"{word} : {opposite_word}\n")
176
 
177
- # Fungsi untuk mengganti kata-kata toksik
178
  def replace_toxic_words(text, neg_to_pos_map, filepath="extended_negative_to_positive_words.txt"):
179
  words = text.split()
180
  replaced_words = []
181
- updates = []
182
- unresolved = []
183
-
184
  for word in words:
185
- # Bersihkan kata dari tanda baca
186
  clean_word = word.strip(string.punctuation).lower()
187
-
188
- # Gunakan model untuk mendeteksi toksik
189
  result = hate_speech_classifier(clean_word)
190
  label = result[0]['label']
191
  confidence = result[0]['score']
192
-
193
  if "toxic" in label.lower() and confidence >= CONFIDENCE_THRESHOLD:
194
- # Jika kata toksik, cek apakah sudah ada pengganti
195
  if clean_word in neg_to_pos_map:
196
  replacement = neg_to_pos_map[clean_word]
197
- replaced_word = word.replace(clean_word, replacement)
198
- replaced_words.append(replaced_word)
199
  else:
200
- # Cari antonim atau hasilkan secara acak
201
- antonym = find_opposite(clean_word) or generate_random_antonym(clean_word)
202
- if antonym and antonym.isalpha(): # Validasi hasil penggantian
203
- neg_to_pos_map[clean_word] = antonym
204
- update_neg_to_pos_file(filepath, clean_word, antonym)
205
- updates.append((clean_word, antonym))
206
- replaced_word = word.replace(clean_word, antonym)
207
- replaced_words.append(replaced_word)
208
- else:
209
- # Jika gagal, fallback ke kata positif acak
210
- fallback_word = random.choice(positive_words)
211
- neg_to_pos_map[clean_word] = fallback_word
212
- update_neg_to_pos_file(filepath, clean_word, fallback_word)
213
- updates.append((clean_word, fallback_word))
214
- replaced_word = word.replace(clean_word, fallback_word)
215
- replaced_words.append(replaced_word)
216
  else:
217
- # Kata non-toksik tetap
218
- replaced_words.append(word)
219
-
220
- return " ".join(replaced_words), updates, unresolved
221
 
222
- # Fungsi untuk mendeteksi dan mereparafrase teks
223
  def detect_and_paraphrase_with_ban(text, neg_to_pos_map, filepath="extended_negative_to_positive_words.txt"):
224
- # Cek apakah user sudah diblokir
225
  if toxic_counter["count"] >= 3:
226
  return "You have been banned for submitting toxic content multiple times. Please refresh to try again."
227
 
228
- # Deteksi konten toksik
229
  result = hate_speech_classifier(text)
230
  label = result[0]['label']
231
  confidence = result[0]['score']
232
 
233
- detection_info = f"Detection: {label} (Confidence: {confidence:.2f})\n"
234
-
235
- # Jika teks terdeteksi toksik
236
  if "toxic" in label.lower() and confidence >= CONFIDENCE_THRESHOLD:
 
237
  toxic_counter["count"] += 1
238
- detection_info += "Detected toxic content. Rewriting...\n"
239
 
 
240
  if toxic_counter["count"] >= 3:
241
  return "You have been banned for submitting toxic content multiple times. Please refresh to try again."
242
 
243
- # Ganti kata toksik
244
- rewritten_text, updates, unresolved = replace_toxic_words(text, neg_to_pos_map, filepath)
245
-
246
- # Log perubahan dan kata yang tidak terselesaikan
247
- if updates:
248
- detection_info += "Updates made:\n" + "\n".join(
249
- [f"- '{word}' updated with antonym '{opposite}'" for word, opposite in updates]
250
- ) + "\n"
251
- if unresolved:
252
- detection_info += "Unresolved words (no antonyms found): " + ", ".join(unresolved) + "\n"
253
-
254
- return detection_info + f"Rewritten Text: {rewritten_text}"
255
  else:
256
- detection_info += "Content is not toxic or confidence is too low.\n"
257
- return detection_info + f"Original Text: {text}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
 
259
- # Muat peta negatif ke positif
260
  neg_to_pos_map = load_neg_to_pos_map(filepath)
261
 
 
 
 
 
 
 
262
  import gradio as gr
263
 
264
  # Fungsi untuk Gradio
@@ -268,16 +259,22 @@ def detect_and_rewrite_chatbot(input_text):
268
  neg_to_pos_map = load_neg_to_pos_map(filepath)
269
  return detect_and_paraphrase_with_ban(input_text, neg_to_pos_map, filepath)
270
 
271
- # Buat antarmuka Gradio
 
 
 
 
272
  with gr.Blocks() as chatbot_interface:
273
  gr.Markdown("## Toxicity Detection")
274
  with gr.Row():
275
  input_text = gr.Textbox(label="Input Text", placeholder="Type something...", lines=2)
276
  output_text = gr.Textbox(label="Output Text", interactive=False)
277
- submit_button = gr.Button("Submit")
 
 
278
  submit_button.click(detect_and_rewrite_chatbot, inputs=input_text, outputs=output_text)
 
279
 
280
  # Jalankan Gradio
281
  if __name__ == "__main__":
282
- chatbot_interface.launch()
283
-
 
84
 
85
 
86
  """## Working Space"""
 
 
 
 
 
 
 
 
87
  import random
88
  from transformers import pipeline
89
  import string
90
  from nltk.corpus import wordnet
91
  import nltk
92
+ import os
93
 
94
  # Unduh resource WordNet
95
  nltk.download("wordnet")
 
102
  hate_speech_classifier = pipeline("text-classification", model="unitary/toxic-bert")
103
 
104
  # Confidence threshold untuk mendeteksi toksisitas
105
+ CONFIDENCE_THRESHOLD = 0.4
 
 
 
106
 
107
  # File path untuk menyimpan mapping negatif ke positif
108
  filepath = "extended_negative_to_positive_words.txt"
109
 
110
+ # Tambahkan counter untuk melacak jumlah pelanggaran
111
+ toxic_counter = {"count": 0}
112
+
113
  # Daftar kata positif untuk fallback
114
  positive_words = ["kind", "friendly", "smart", "brilliant", "amazing", "wonderful", "great", "excellent"]
115
 
 
140
  # Fallback ke kata positif acak
141
  return random.choice(positive_words)
142
 
143
+ # Fungsi untuk memuat peta negatif ke positif dari file
144
  def load_neg_to_pos_map(filepath):
145
  neg_to_pos_map = {}
 
146
  if not os.path.exists(filepath):
 
147
  with open(filepath, "w") as file:
148
+ file.write("")
149
  print(f"File '{filepath}' tidak ditemukan. File baru telah dibuat.")
 
 
150
  with open(filepath, "r") as file:
151
  for line_number, line in enumerate(file, start=1):
152
+ if line.strip():
153
  parts = line.strip().split(":")
154
+ if len(parts) == 2:
155
  neg, pos = parts
156
  neg_to_pos_map[neg.strip().lower()] = pos.strip()
157
  else:
 
163
  with open(filepath, "a") as file:
164
  file.write(f"{word} : {opposite_word}\n")
165
 
166
+ # Fungsi untuk mendeteksi dan mengganti kata toxic (per kata)
167
  def replace_toxic_words(text, neg_to_pos_map, filepath="extended_negative_to_positive_words.txt"):
168
  words = text.split()
169
  replaced_words = []
170
+ replacements = [] # Untuk menyimpan pasangan kata toxic dan penggantinya
 
 
171
  for word in words:
 
172
  clean_word = word.strip(string.punctuation).lower()
 
 
173
  result = hate_speech_classifier(clean_word)
174
  label = result[0]['label']
175
  confidence = result[0]['score']
 
176
  if "toxic" in label.lower() and confidence >= CONFIDENCE_THRESHOLD:
 
177
  if clean_word in neg_to_pos_map:
178
  replacement = neg_to_pos_map[clean_word]
 
 
179
  else:
180
+ replacement = generate_random_antonym_with_g4f(clean_word)
181
+ neg_to_pos_map[clean_word] = replacement
182
+ update_neg_to_pos_file(filepath, clean_word, replacement)
183
+ replaced_word = word.replace(clean_word, replacement)
184
+ replacements.append((clean_word, replacement))
 
 
 
 
 
 
 
 
 
 
 
185
  else:
186
+ replaced_word = word
187
+ replaced_words.append(replaced_word)
188
+ rewritten_text = " ".join(replaced_words)
189
+ return rewritten_text, replacements
190
 
191
+ # Fungsi utama untuk mendeteksi dan mereparafrase teks dengan logika ban
192
  def detect_and_paraphrase_with_ban(text, neg_to_pos_map, filepath="extended_negative_to_positive_words.txt"):
193
+ # Periksa apakah pengguna sudah diblokir
194
  if toxic_counter["count"] >= 3:
195
  return "You have been banned for submitting toxic content multiple times. Please refresh to try again."
196
 
197
+ # Deteksi apakah teks mengandung konten toxic
198
  result = hate_speech_classifier(text)
199
  label = result[0]['label']
200
  confidence = result[0]['score']
201
 
 
 
 
202
  if "toxic" in label.lower() and confidence >= CONFIDENCE_THRESHOLD:
203
+ # Tambahkan jumlah pelanggaran
204
  toxic_counter["count"] += 1
 
205
 
206
+ # Cek apakah pengguna perlu diblokir
207
  if toxic_counter["count"] >= 3:
208
  return "You have been banned for submitting toxic content multiple times. Please refresh to try again."
209
 
210
+ # Ganti kata-kata toxic dalam teks
211
+ rewritten_text, replacements = replace_toxic_words(text, neg_to_pos_map, filepath)
212
+ replacement_info = ", ".join([f"'{original}' → '{replacement}'" for original, replacement in replacements])
213
+ return (
214
+ f"Detection: Toxic (Confidence: {confidence:.2%})\n"
215
+ f"Rewritten Text: {rewritten_text}\n"
216
+ f"Replacements: {replacement_info if replacement_info else 'None'}"
217
+ )
 
 
 
 
218
  else:
219
+ return f"Detection: Non-toxic (Confidence: {confidence:.2%})\nOriginal Text: {text}"
220
+
221
+ # Fungsi untuk menampilkan hasil deteksi per kata
222
+ def test_per_word(text, neg_to_pos_map, filepath="extended_negative_to_positive_words.txt"):
223
+ words = text.split()
224
+ print(f"Original Text: {text}\n")
225
+ print("Per-word Detection and Replacement:")
226
+ rewritten_text, replacements = replace_toxic_words(text, neg_to_pos_map, filepath)
227
+ toxic_count = 0
228
+ for word in words:
229
+ clean_word = word.strip(string.punctuation).lower()
230
+ result = hate_speech_classifier(clean_word)
231
+ label = result[0]['label']
232
+ confidence = result[0]['score']
233
+ if "toxic" in label.lower() and confidence >= CONFIDENCE_THRESHOLD:
234
+ toxic_count += 1
235
+ replacement = neg_to_pos_map.get(clean_word, "No Replacement")
236
+ print(f"Word: '{word}' -> Label: '{label}', Confidence: {confidence:.2f}, Replacement: '{replacement}'")
237
+ else:
238
+ print(f"Word: '{word}' -> Label: 'non-toxic', Confidence: {confidence:.2f}, Replacement: None")
239
+ print("\nRewritten Text:")
240
+ print(rewritten_text)
241
+ print(f"\nToxic Words Detected: {toxic_count}")
242
+ return rewritten_text
243
 
244
+ # Memuat peta kata negatif ke positif dari file
245
  neg_to_pos_map = load_neg_to_pos_map(filepath)
246
 
247
+ # Fungsi untuk mereset counter ban
248
+ def reset_toxic_counter():
249
+ toxic_counter["count"] = 0
250
+ return "Toxic counter has been reset."
251
+
252
+ # Interface Gradio
253
  import gradio as gr
254
 
255
  # Fungsi untuk Gradio
 
259
  neg_to_pos_map = load_neg_to_pos_map(filepath)
260
  return detect_and_paraphrase_with_ban(input_text, neg_to_pos_map, filepath)
261
 
262
+ # Fungsi Gradio untuk Reset
263
+ def reset_count():
264
+ return reset_toxic_counter()
265
+
266
+ # Buat interface Gradio
267
  with gr.Blocks() as chatbot_interface:
268
  gr.Markdown("## Toxicity Detection")
269
  with gr.Row():
270
  input_text = gr.Textbox(label="Input Text", placeholder="Type something...", lines=2)
271
  output_text = gr.Textbox(label="Output Text", interactive=False)
272
+ with gr.Row():
273
+ submit_button = gr.Button("Submit")
274
+ reset_button = gr.Button("Reset Ban Count")
275
  submit_button.click(detect_and_rewrite_chatbot, inputs=input_text, outputs=output_text)
276
+ reset_button.click(reset_count, outputs=output_text)
277
 
278
  # Jalankan Gradio
279
  if __name__ == "__main__":
280
+ chatbot_interface.launch()
 
extended_negative_to_positive_words.txt CHANGED
@@ -94,6 +94,867 @@ miserable : happy
94
  neglected : cared-for
95
  negative : positive
96
  nervous : relaxed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  offensive : respectful
98
  overwhelmed : composed
99
  painful : comfortable
@@ -138,10 +999,15 @@ despair : hope
138
  inequality : equality
139
  oppression : freedom
140
  idiot : smart
141
- are : differ
142
- fuckershit : unknown
143
- fucker : unknown
144
- dumb : unknown
145
- fuckert : unknown
146
- fuckerddt : //
147
- dumbass : >>>>>>
 
 
 
 
 
 
94
  neglected : cared-for
95
  negative : positive
96
  nervous : relaxed
97
+ offensive : respectfu
98
+ overwhelmed : composed
99
+ painful : comfortable
100
+ pathetic : inspiring
101
+ poor : wealthy
102
+ powerless : powerful
103
+ reckless : cautious
104
+ rejected : accepted
105
+ sad : happy
106
+ selfish : generous
107
+ shy : confident
108
+ sick : healthy
109
+ silent : talkative
110
+ slow : fast
111
+ small : big
112
+ stubborn : flexible
113
+ stupid : intelligent
114
+ tense : relaxed
115
+ terrible : great
116
+ ugly : beautiful
117
+ unkind : kind
118
+ unloved : loved
119
+ unsuccessful : successful
120
+ useless : useful
121
+ weak : strong
122
+ wicked : righteous
123
+ worthless : valuable
124
+ abandoned : cherished
125
+ abhorrent : admirable
126
+ absent : present
127
+ abusive : caring
128
+ addicted : free
129
+ afraid : brave
130
+ aggressive : peaceful
131
+ aimless : purposeful
132
+ alarming : comforting
133
+ aloof : friendly
134
+ angry : calm
135
+ annoying : pleasant
136
+ anxious : relaxed
137
+ arrogant : humble
138
+ ashamed : proud
139
+ awful : wonderful
140
+ bad : good
141
+ barbaric : civilized
142
+ barren : fertile
143
+ baseless : grounded
144
+ bitter : sweet
145
+ bizarre : normal
146
+ boring : exciting
147
+ brutal : gentle
148
+ callous : compassionate
149
+ careless : careful
150
+ chaotic : organized
151
+ cheap : expensive
152
+ cheating : honest
153
+ clumsy : graceful
154
+ cold : warm
155
+ combative : agreeable
156
+ conceited : modest
157
+ confused : clear
158
+ controlling : cooperative
159
+ cowardly : courageous
160
+ cruel : kind
161
+ cursed : blessed
162
+ damaged : repaired
163
+ dangerous : safe
164
+ dark : bright
165
+ dead : alive
166
+ defeated : victorious
167
+ defenseless : protected
168
+ deficient : sufficient
169
+ depressed : cheerful
170
+ desolate : lively
171
+ desperate : hopeful
172
+ difficult : easy
173
+ dirty : clean
174
+ dishonest : honest
175
+ disloyal : loyal
176
+ disrespectful : respectful
177
+ distant : close
178
+ distressed : calm
179
+ distrustful : trusting
180
+ dull : vibrant
181
+ empty : full
182
+ envious : content
183
+ evil : good
184
+ fearful : fearless
185
+ foolish : wise
186
+ forgotten : remembered
187
+ frail : strong
188
+ frantic : serene
189
+ frustrated : satisfied
190
+ gloomy : joyful
191
+ greedy : generous
192
+ grieving : celebrating
193
+ guilty : innocent
194
+ harmful : harmless
195
+ hateful : loving
196
+ heartless : compassionate
197
+ helpless : empowered
198
+ hopeless : hopeful
199
+ hostile : friendly
200
+ humiliated : dignified
201
+ ignorant : knowledgeable
202
+ impatient : patient
203
+ impolite : polite
204
+ inactive : active
205
+ incompetent : competent
206
+ inferior : superior
207
+ insecure : confident
208
+ insulting : praising
209
+ jealous : content
210
+ lazy : industrious
211
+ lethargic : energetic
212
+ lonely : connected
213
+ lost : found
214
+ malicious : benevolent
215
+ mean : kind
216
+ miserable : happy
217
+ neglected : cared-for
218
+ negative : positive
219
+ nervous : relaxed
220
+ offensive : respectful
221
+ overwhelmed : composed
222
+ painful : comfortable
223
+ pathetic : inspiring
224
+ poor : wealthy
225
+ powerless : powerful
226
+ reckless : cautious
227
+ rejected : accepted
228
+ sad : happy
229
+ selfish : generous
230
+ shy : confident
231
+ sick : healthy
232
+ silent : talkative
233
+ slow : fast
234
+ small : big
235
+ stubborn : flexible
236
+ stupid : intelligent
237
+ tense : relaxed
238
+ terrible : great
239
+ ugly : beautiful
240
+ unkind : kind
241
+ unloved : loved
242
+ unsuccessful : successful
243
+ useless : useful
244
+ weak : strong
245
+ wicked : righteous
246
+ worthless : valuable
247
+ abandoned : cherished
248
+ abhorrent : admirable
249
+ absent : present
250
+ abusive : caring
251
+ addicted : free
252
+ afraid : brave
253
+ aggressive : peaceful
254
+ aimless : purposeful
255
+ alarming : comforting
256
+ aloof : friendly
257
+ angry : calm
258
+ annoying : pleasant
259
+ anxious : relaxed
260
+ arrogant : humble
261
+ ashamed : proud
262
+ awful : wonderful
263
+ bad : good
264
+ barbaric : civilized
265
+ barren : fertile
266
+ baseless : grounded
267
+ bitter : sweet
268
+ bizarre : normal
269
+ boring : exciting
270
+ brutal : gentle
271
+ callous : compassionate
272
+ careless : careful
273
+ chaotic : organized
274
+ cheap : expensive
275
+ cheating : honest
276
+ clumsy : graceful
277
+ cold : warm
278
+ combative : agreeable
279
+ conceited : modest
280
+ confused : clear
281
+ controlling : cooperative
282
+ cowardly : courageous
283
+ cruel : kind
284
+ cursed : blessed
285
+ damaged : repaired
286
+ dangerous : safe
287
+ dark : bright
288
+ dead : alive
289
+ defeated : victorious
290
+ defenseless : protected
291
+ deficient : sufficient
292
+ depressed : cheerful
293
+ desolate : lively
294
+ desperate : hopeful
295
+ difficult : easy
296
+ dirty : clean
297
+ dishonest : honest
298
+ disloyal : loyal
299
+ disrespectful : respectful
300
+ distant : close
301
+ distressed : calm
302
+ distrustful : trusting
303
+ dull : vibrant
304
+ empty : full
305
+ envious : content
306
+ evil : good
307
+ fearful : fearless
308
+ foolish : wise
309
+ forgotten : remembered
310
+ frail : strong
311
+ frantic : serene
312
+ frustrated : satisfied
313
+ gloomy : joyful
314
+ greedy : generous
315
+ grieving : celebrating
316
+ guilty : innocent
317
+ harmful : harmless
318
+ hateful : loving
319
+ heartless : compassionate
320
+ helpless : empowered
321
+ hopeless : hopeful
322
+ hostile : friendly
323
+ humiliated : dignified
324
+ ignorant : knowledgeable
325
+ impatient : patient
326
+ impolite : polite
327
+ inactive : active
328
+ incompetent : competent
329
+ inferior : superior
330
+ insecure : confident
331
+ insulting : praising
332
+ jealous : content
333
+ lazy : industrious
334
+ lethargic : energetic
335
+ lonely : connected
336
+ lost : found
337
+ malicious : benevolent
338
+ mean : kind
339
+ miserable : happy
340
+ neglected : cared-for
341
+ negative : positive
342
+ nervous : relaxed
343
+ offensive : respectful
344
+ overwhelmed : composed
345
+ painful : comfortable
346
+ pathetic : inspiring
347
+ poor : wealthy
348
+ powerless : powerful
349
+ reckless : cautious
350
+ rejected : accepted
351
+ sad : happy
352
+ selfish : generous
353
+ shy : confident
354
+ sick : healthy
355
+ silent : talkative
356
+ slow : fast
357
+ small : big
358
+ stubborn : flexible
359
+ stupid : intelligent
360
+ tense : relaxed
361
+ terrible : great
362
+ ugly : beautiful
363
+ unkind : kind
364
+ unloved : loved
365
+ unsuccessful : successful
366
+ useless : useful
367
+ weak : strong
368
+ wicked : righteous
369
+ worthless : valuable
370
+ abandoned : cherished
371
+ abhorrent : admirable
372
+ absent : present
373
+ abusive : caring
374
+ addicted : free
375
+ afraid : brave
376
+ aggressive : peaceful
377
+ aimless : purposeful
378
+ alarming : comforting
379
+ aloof : friendly
380
+ angry : calm
381
+ annoying : pleasant
382
+ anxious : relaxed
383
+ arrogant : humble
384
+ ashamed : proud
385
+ awful : wonderful
386
+ bad : good
387
+ barbaric : civilized
388
+ barren : fertile
389
+ baseless : grounded
390
+ bitter : sweet
391
+ bizarre : normal
392
+ boring : exciting
393
+ brutal : gentle
394
+ callous : compassionate
395
+ careless : careful
396
+ chaotic : organized
397
+ cheap : expensive
398
+ cheating : honest
399
+ clumsy : graceful
400
+ cold : warm
401
+ combative : agreeable
402
+ conceited : modest
403
+ confused : clear
404
+ controlling : cooperative
405
+ cowardly : courageous
406
+ cruel : kind
407
+ cursed : blessed
408
+ damaged : repaired
409
+ dangerous : safe
410
+ dark : bright
411
+ dead : alive
412
+ defeated : victorious
413
+ defenseless : protected
414
+ deficient : sufficient
415
+ depressed : cheerful
416
+ desolate : lively
417
+ desperate : hopeful
418
+ difficult : easy
419
+ dirty : clean
420
+ dishonest : honest
421
+ disloyal : loyal
422
+ disrespectful : respectful
423
+ distant : close
424
+ distressed : calm
425
+ distrustful : trusting
426
+ dull : vibrant
427
+ empty : full
428
+ envious : content
429
+ evil : good
430
+ fearful : fearless
431
+ foolish : wise
432
+ forgotten : remembered
433
+ frail : strong
434
+ frantic : serene
435
+ frustrated : satisfied
436
+ gloomy : joyful
437
+ greedy : generous
438
+ grieving : celebrating
439
+ guilty : innocent
440
+ harmful : harmless
441
+ hateful : loving
442
+ heartless : compassionate
443
+ helpless : empowered
444
+ hopeless : hopeful
445
+ hostile : friendly
446
+ humiliated : dignified
447
+ ignorant : knowledgeable
448
+ impatient : patient
449
+ impolite : polite
450
+ inactive : active
451
+ incompetent : competent
452
+ inferior : superior
453
+ insecure : confident
454
+ insulting : praising
455
+ jealous : content
456
+ lazy : industrious
457
+ lethargic : energetic
458
+ lonely : connected
459
+ lost : found
460
+ malicious : benevolent
461
+ mean : kind
462
+ miserable : happy
463
+ neglected : cared-for
464
+ negative : positive
465
+ nervous : relaxed
466
+ offensive : respectful
467
+ overwhelmed : composed
468
+ painful : comfortable
469
+ pathetic : inspiring
470
+ poor : wealthy
471
+ powerless : powerful
472
+ reckless : cautious
473
+ rejected : accepted
474
+ sad : happy
475
+ selfish : generous
476
+ shy : confident
477
+ sick : healthy
478
+ silent : talkative
479
+ slow : fast
480
+ small : big
481
+ stubborn : flexible
482
+ stupid : intelligent
483
+ tense : relaxed
484
+ terrible : great
485
+ ugly : beautiful
486
+ unkind : kind
487
+ unloved : loved
488
+ unsuccessful : successful
489
+ useless : useful
490
+ weak : strong
491
+ wicked : righteous
492
+ worthless : valuable
493
+ abandoned : cherished
494
+ abhorrent : admirable
495
+ absent : present
496
+ abusive : caring
497
+ addicted : free
498
+ afraid : brave
499
+ aggressive : peaceful
500
+ aimless : purposeful
501
+ alarming : comforting
502
+ aloof : friendly
503
+ angry : calm
504
+ annoying : pleasant
505
+ anxious : relaxed
506
+ arrogant : humble
507
+ ashamed : proud
508
+ awful : wonderful
509
+ bad : good
510
+ barbaric : civilized
511
+ barren : fertile
512
+ baseless : grounded
513
+ bitter : sweet
514
+ bizarre : normal
515
+ boring : exciting
516
+ brutal : gentle
517
+ callous : compassionate
518
+ careless : careful
519
+ chaotic : organized
520
+ cheap : expensive
521
+ cheating : honest
522
+ clumsy : graceful
523
+ cold : warm
524
+ combative : agreeable
525
+ conceited : modest
526
+ confused : clear
527
+ controlling : cooperative
528
+ cowardly : courageous
529
+ cruel : kind
530
+ cursed : blessed
531
+ damaged : repaired
532
+ dangerous : safe
533
+ dark : bright
534
+ dead : alive
535
+ defeated : victorious
536
+ defenseless : protected
537
+ deficient : sufficient
538
+ depressed : cheerful
539
+ desolate : lively
540
+ desperate : hopeful
541
+ difficult : easy
542
+ dirty : clean
543
+ dishonest : honest
544
+ disloyal : loyal
545
+ disrespectful : respectful
546
+ distant : close
547
+ distressed : calm
548
+ distrustful : trusting
549
+ dull : vibrant
550
+ empty : full
551
+ envious : content
552
+ evil : good
553
+ fearful : fearless
554
+ foolish : wise
555
+ forgotten : remembered
556
+ frail : strong
557
+ frantic : serene
558
+ frustrated : satisfied
559
+ gloomy : joyful
560
+ greedy : generous
561
+ grieving : celebrating
562
+ guilty : innocent
563
+ harmful : harmless
564
+ hateful : loving
565
+ heartless : compassionate
566
+ helpless : empowered
567
+ hopeless : hopeful
568
+ hostile : friendly
569
+ humiliated : dignified
570
+ ignorant : knowledgeable
571
+ impatient : patient
572
+ impolite : polite
573
+ inactive : active
574
+ incompetent : competent
575
+ inferior : superior
576
+ insecure : confident
577
+ insulting : praising
578
+ jealous : content
579
+ lazy : industrious
580
+ lethargic : energetic
581
+ lonely : connected
582
+ lost : found
583
+ malicious : benevolent
584
+ mean : kind
585
+ miserable : happy
586
+ neglected : cared-for
587
+ negative : positive
588
+ nervous : relaxed
589
+ offensive : respectful
590
+ overwhelmed : composed
591
+ painful : comfortable
592
+ pathetic : inspiring
593
+ poor : wealthy
594
+ powerless : powerful
595
+ reckless : cautious
596
+ rejected : accepted
597
+ sad : happy
598
+ selfish : generous
599
+ shy : confident
600
+ sick : healthy
601
+ silent : talkative
602
+ slow : fast
603
+ small : big
604
+ stubborn : flexible
605
+ stupid : intelligent
606
+ tense : relaxed
607
+ terrible : great
608
+ ugly : beautiful
609
+ unkind : kind
610
+ unloved : loved
611
+ unsuccessful : successful
612
+ useless : useful
613
+ weak : strong
614
+ wicked : righteous
615
+ worthless : valuable
616
+ abandoned : cherished
617
+ abhorrent : admirable
618
+ absent : present
619
+ abusive : caring
620
+ addicted : free
621
+ afraid : brave
622
+ aggressive : peaceful
623
+ aimless : purposeful
624
+ alarming : comforting
625
+ aloof : friendly
626
+ angry : calm
627
+ annoying : pleasant
628
+ anxious : relaxed
629
+ arrogant : humble
630
+ ashamed : proud
631
+ awful : wonderful
632
+ bad : good
633
+ barbaric : civilized
634
+ barren : fertile
635
+ baseless : grounded
636
+ bitter : sweet
637
+ bizarre : normal
638
+ boring : exciting
639
+ brutal : gentle
640
+ callous : compassionate
641
+ careless : careful
642
+ chaotic : organized
643
+ cheap : expensive
644
+ cheating : honest
645
+ clumsy : graceful
646
+ cold : warm
647
+ combative : agreeable
648
+ conceited : modest
649
+ confused : clear
650
+ controlling : cooperative
651
+ cowardly : courageous
652
+ cruel : kind
653
+ cursed : blessed
654
+ damaged : repaired
655
+ dangerous : safe
656
+ dark : bright
657
+ dead : alive
658
+ defeated : victorious
659
+ defenseless : protected
660
+ deficient : sufficient
661
+ depressed : cheerful
662
+ desolate : lively
663
+ desperate : hopeful
664
+ difficult : easy
665
+ dirty : clean
666
+ dishonest : honest
667
+ disloyal : loyal
668
+ disrespectful : respectful
669
+ distant : close
670
+ distressed : calm
671
+ distrustful : trusting
672
+ dull : vibrant
673
+ empty : full
674
+ envious : content
675
+ evil : good
676
+ fearful : fearless
677
+ foolish : wise
678
+ forgotten : remembered
679
+ frail : strong
680
+ frantic : serene
681
+ frustrated : satisfied
682
+ gloomy : joyful
683
+ greedy : generous
684
+ grieving : celebrating
685
+ guilty : innocent
686
+ harmful : harmless
687
+ hateful : loving
688
+ heartless : compassionate
689
+ helpless : empowered
690
+ hopeless : hopeful
691
+ hostile : friendly
692
+ humiliated : dignified
693
+ ignorant : knowledgeable
694
+ impatient : patient
695
+ impolite : polite
696
+ inactive : active
697
+ incompetent : competent
698
+ inferior : superior
699
+ insecure : confident
700
+ insulting : praising
701
+ jealous : content
702
+ lazy : industrious
703
+ lethargic : energetic
704
+ lonely : connected
705
+ lost : found
706
+ malicious : benevolent
707
+ mean : kind
708
+ miserable : happy
709
+ neglected : cared-for
710
+ negative : positive
711
+ nervous : relaxed
712
+ offensive : respectful
713
+ overwhelmed : composed
714
+ painful : comfortable
715
+ pathetic : inspiring
716
+ poor : wealthy
717
+ powerless : powerful
718
+ reckless : cautious
719
+ rejected : accepted
720
+ sad : happy
721
+ selfish : generous
722
+ shy : confident
723
+ sick : healthy
724
+ silent : talkative
725
+ slow : fast
726
+ small : big
727
+ stubborn : flexible
728
+ stupid : intelligent
729
+ tense : relaxed
730
+ terrible : great
731
+ ugly : beautiful
732
+ unkind : kind
733
+ unloved : loved
734
+ unsuccessful : successful
735
+ useless : useful
736
+ weak : strong
737
+ wicked : righteous
738
+ worthless : valuable
739
+ abandoned : cherished
740
+ abhorrent : admirable
741
+ absent : present
742
+ abusive : caring
743
+ addicted : free
744
+ afraid : brave
745
+ aggressive : peaceful
746
+ aimless : purposeful
747
+ alarming : comforting
748
+ aloof : friendly
749
+ angry : calm
750
+ annoying : pleasant
751
+ anxious : relaxed
752
+ arrogant : humble
753
+ ashamed : proud
754
+ awful : wonderful
755
+ bad : good
756
+ barbaric : civilized
757
+ barren : fertile
758
+ baseless : grounded
759
+ bitter : sweet
760
+ bizarre : normal
761
+ boring : exciting
762
+ brutal : gentle
763
+ callous : compassionate
764
+ careless : careful
765
+ chaotic : organized
766
+ cheap : expensive
767
+ cheating : honest
768
+ clumsy : graceful
769
+ cold : warm
770
+ combative : agreeable
771
+ conceited : modest
772
+ confused : clear
773
+ controlling : cooperative
774
+ cowardly : courageous
775
+ cruel : kind
776
+ cursed : blessed
777
+ damaged : repaired
778
+ dangerous : safe
779
+ dark : bright
780
+ dead : alive
781
+ defeated : victorious
782
+ defenseless : protected
783
+ deficient : sufficient
784
+ depressed : cheerful
785
+ desolate : lively
786
+ desperate : hopeful
787
+ difficult : easy
788
+ dirty : clean
789
+ dishonest : honest
790
+ disloyal : loyal
791
+ disrespectful : respectful
792
+ distant : close
793
+ distressed : calm
794
+ distrustful : trusting
795
+ dull : vibrant
796
+ empty : full
797
+ envious : content
798
+ evil : good
799
+ fearful : fearless
800
+ foolish : wise
801
+ forgotten : remembered
802
+ frail : strong
803
+ frantic : serene
804
+ frustrated : satisfied
805
+ gloomy : joyful
806
+ greedy : generous
807
+ grieving : celebrating
808
+ guilty : innocent
809
+ harmful : harmless
810
+ hateful : loving
811
+ heartless : compassionate
812
+ helpless : empowered
813
+ hopeless : hopeful
814
+ hostile : friendly
815
+ humiliated : dignified
816
+ ignorant : knowledgeable
817
+ impatient : patient
818
+ impolite : polite
819
+ inactive : active
820
+ incompetent : competent
821
+ inferior : superior
822
+ insecure : confident
823
+ insulting : praising
824
+ jealous : content
825
+ lazy : industrious
826
+ lethargic : energetic
827
+ lonely : connected
828
+ lost : found
829
+ malicious : benevolent
830
+ mean : kind
831
+ miserable : happy
832
+ neglected : cared-for
833
+ negative : positive
834
+ nervous : relaxed
835
+ offensive : respectful
836
+ overwhelmed : composed
837
+ painful : comfortable
838
+ pathetic : inspiring
839
+ poor : wealthy
840
+ powerless : powerful
841
+ reckless : cautious
842
+ rejected : accepted
843
+ sad : happy
844
+ selfish : generous
845
+ shy : confident
846
+ sick : healthy
847
+ silent : talkative
848
+ slow : fast
849
+ small : big
850
+ stubborn : flexible
851
+ stupid : intelligent
852
+ tense : relaxed
853
+ terrible : great
854
+ ugly : beautiful
855
+ unkind : kind
856
+ unloved : loved
857
+ unsuccessful : successful
858
+ useless : useful
859
+ weak : strong
860
+ wicked : righteous
861
+ worthless : valuable
862
+ abandoned : cherished
863
+ abhorrent : admirable
864
+ absent : present
865
+ abusive : caring
866
+ addicted : free
867
+ afraid : brave
868
+ aggressive : peaceful
869
+ aimless : purposeful
870
+ alarming : comforting
871
+ aloof : friendly
872
+ angry : calm
873
+ annoying : pleasant
874
+ anxious : relaxed
875
+ arrogant : humble
876
+ ashamed : proud
877
+ awful : wonderful
878
+ bad : good
879
+ barbaric : civilized
880
+ barren : fertile
881
+ baseless : grounded
882
+ bitter : sweet
883
+ bizarre : normal
884
+ boring : exciting
885
+ brutal : gentle
886
+ callous : compassionate
887
+ careless : careful
888
+ chaotic : organized
889
+ cheap : expensive
890
+ cheating : honest
891
+ clumsy : graceful
892
+ cold : warm
893
+ combative : agreeable
894
+ conceited : modest
895
+ confused : clear
896
+ controlling : cooperative
897
+ cowardly : courageous
898
+ cruel : kind
899
+ cursed : blessed
900
+ damaged : repaired
901
+ dangerous : safe
902
+ dark : bright
903
+ dead : alive
904
+ defeated : victorious
905
+ defenseless : protected
906
+ deficient : sufficient
907
+ depressed : cheerful
908
+ desolate : lively
909
+ desperate : hopeful
910
+ difficult : easy
911
+ dirty : clean
912
+ dishonest : honest
913
+ disloyal : loyal
914
+ disrespectful : respectful
915
+ distant : close
916
+ distressed : calm
917
+ distrustful : trusting
918
+ dull : vibrant
919
+ empty : full
920
+ envious : content
921
+ evil : good
922
+ fearful : fearless
923
+ foolish : wise
924
+ forgotten : remembered
925
+ frail : strong
926
+ frantic : serene
927
+ frustrated : satisfied
928
+ gloomy : joyful
929
+ greedy : generous
930
+ grieving : celebrating
931
+ guilty : innocent
932
+ harmful : harmless
933
+ hateful : loving
934
+ heartless : compassionate
935
+ helpless : empowered
936
+ hopeless : hopeful
937
+ hostile : friendly
938
+ humiliated : dignified
939
+ ignorant : knowledgeable
940
+ impatient : patient
941
+ impolite : polite
942
+ inactive : active
943
+ incompetent : competent
944
+ inferior : superior
945
+ insecure : confident
946
+ insulting : praising
947
+ jealous : content
948
+ lazy : industrious
949
+ lethargic : energetic
950
+ lonely : connected
951
+ lost : found
952
+ malicious : benevolent
953
+ mean : kind
954
+ miserable : happy
955
+ neglected : cared-for
956
+ negative : positive
957
+ nervous : relaxed
958
  offensive : respectful
959
  overwhelmed : composed
960
  painful : comfortable
 
999
  inequality : equality
1000
  oppression : freedom
1001
  idiot : smart
1002
+ worst : brilliant
1003
+ die : kind
1004
+ rot : great
1005
+ hell : amazing
1006
+ fuck : amazing
1007
+ fucking : wonderful
1008
+ ass : smart
1009
+ killing : kind
1010
+ cunt : friendly
1011
+ worthlesss : brilliant
1012
+ shit : kind
1013
+ you're : brilliant