Alimustoofaa commited on
Commit
e770afd
·
1 Parent(s): ca4ac42
Files changed (3) hide show
  1. app.py +72 -0
  2. requirements.txt +6 -0
  3. tokenizer.pickle +0 -0
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import nltk
2
+ nltk.download('punkt')
3
+ import pickle
4
+ import gradio as gr
5
+ from keras.utils import pad_sequences
6
+ from nltk.tokenize import word_tokenize
7
+ from huggingface_hub import from_pretrained_keras
8
+ from Sastrawi.Stemmer.StemmerFactory import StemmerFactory
9
+
10
+
11
+ class ChatGPTDetector:
12
+ def __init__(self, model_name, tokenizer_name) -> None:
13
+ factory = StemmerFactory()
14
+ self.stemmer = factory.create_stemmer()
15
+ self.max_words = 20000
16
+ self.max_length = 500
17
+ self.tokenizer = pickle.load(open(tokenizer_name, 'rb'))
18
+ self.model = from_pretrained_keras(model_name)
19
+
20
+ def remove_stop_words(self, text):
21
+ stop_words = self.stemmer.stem(text.lower())
22
+ tokenize = word_tokenize(text)
23
+ text = [word for word in tokenize if word.isalpha() and not word in stop_words]
24
+ return ' '.join(text)
25
+
26
+ def __call__(self, text):
27
+ cleaned_text = self.remove_stop_words(text)
28
+ sequence = self.tokenizer.texts_to_sequences([cleaned_text])
29
+ padded_sequence = pad_sequences(sequence, maxlen=self.max_length)
30
+ print(sequence)
31
+ result = self.model(padded_sequence)
32
+ print(result)
33
+ return dict({'ChatGPT Detector': float(result.numpy()[0])})
34
+
35
+
36
+ example_human_answer = [
37
+ ['sekumpulan informasi atau keterangan dari suatu hal yang diperoleh dari hasil pengamatan ataupun sumber tertentu'],
38
+ ['Analisis adalah usaha yang dilakukan dengan metode tertentu untuk mengamati sesuatu secara detail Menurut Kamus Besar Bahasa Indonesia KBBI pengertian analisis adalah penyelidikan terhadap suatu peristiwa untuk mengetahui keadaan yang sebenarnya'],
39
+ ['Pada dasarnya data merupakan sekumpulan informasi atau juga keterangan– keterangan dari suatu hal yang diperoleh dengan melalui pengamatan atau juga pencarian ke sumber – sumber tertentu Data yang diperoleh namun belum diolah lebih lanjut dapat menjadi sebuah fakta atau anggapan'],
40
+ ['Analisis data dengan multimedia berkaitan Contoh penerapannya adalah seperti saat kita ingin mengerjakan suatu tugas hal pertama yang kita lakukan adalah melihat dan memahami soal yang diberikan selanjutnya saat masih bingung kita bisa bertanya kepada teman teman dengan jawaban yang berbeda beda yang terakhir baru kita paham dan mulai mengerjakan tugas yang diberikan']
41
+ ]
42
+ example_gpt_answer = [
43
+ ['analisis adalah proses meneliti suatu informasi untuk memahami komponenkomponennya dan mengidentifikasi hubungan antar komponen analisis bertujuan untuk menyimpulkan informasi yang relevan dan bermanfaat untuk mencapai tujuan tertentu analisis dapat dilakukan secara kualitatif atau kuantitatif analisis kualitatif menggunakan deskripsi verbal untuk menganalisis informasi sementara analisis kuantitatif menggunakan angka dan statistik untuk menganalisis informasi'],
44
+ ['analisis adalah proses menggunakan teknik dan alat untuk menguraikan sesuatu menjadi bagianbagian lebih kecil untuk memahami keseluruhan analisis dapat digunakan untuk mengevaluasi dan memahami berbagai jenis data termasuk data statistik data teks data kuantitatif dan data kualitatif analisis ini dapat digunakan untuk mengeksplorasi data mengidentifikasi hubungan antara variabel memprediksi perilaku dan mengambil tindakan yang tepat'],
45
+ ['analisis data adalah proses mengumpulkan menganalisis dan menafsirkan data untuk memahami informasi yang terkandung di dalamnya dan menggunakannya untuk mengambil keputusan dan membuat prediksi ini membantu orang untuk mengidentifikasi pola mengungkapkan hubungan antara variabel dan mengambil kesimpulan tentang informasi yang diperoleh'],
46
+ [' tentukan tujuan analisis data analisis data dapat memiliki berbagai tujuan seperti memahami pola mengidentifikasi hubungan memprediksi perilaku masa depan atau mengukur kinerja kumpulkan data yang relevan data yang relevan harus dikumpulkan dari sumber yang dapat dipercaya pilih metode analisis yang tepat tergantung pada tujuan analisis metode yang berbeda mungkin perlu digunakan ini bisa berupa statistik deskriptif analisis korelasi analisis regresi atau analisis klasifikasi pertimbangkan konteks konteks dapat memiliki dampak besar pada hasil analisis analisis data gunakan alat analisis yang tersedia untuk menganalisis data lihat hasil hasil analisis dapat ditampilkan dalam bentuk tabel grafik atau laporan interpretasikan hasil hasil analisis harus dikaitkan dengan tujuan awal untuk memahami implikasinya sampaikan hasil hasil analisis harus disampaikan kepada orang yang relevan']
47
+ ]
48
+
49
+ detector = ChatGPTDetector("Alimustoofaa/chatgpt_detector_exam_answer", "tokenizer.pickle")
50
+
51
+ with gr.Blocks() as run:
52
+ input = gr.Textbox(label="Answer", lines=2)
53
+ output = gr.outputs.Label()
54
+ btn = gr.Button(value="Submit")
55
+ btn.click(detector, inputs=[input], outputs=[output])
56
+
57
+ gr.Markdown('## Example Human Answer')
58
+ gr.Examples(
59
+ example_human_answer,
60
+ input,
61
+ output,
62
+ detector,
63
+ )
64
+ gr.Markdown('## Example ChatGPT Answer')
65
+ gr.Examples(
66
+ example_gpt_answer,
67
+ input,
68
+ output,
69
+ detector,
70
+ )
71
+
72
+ run.launch(inline=False, debug=True)
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ Sastrawi
2
+ nltk
3
+ huggingface_hub
4
+ keras
5
+ pickle
6
+ gradio
tokenizer.pickle ADDED
Binary file (19.4 kB). View file