faruqaziz commited on
Commit
51179ad
·
verified ·
1 Parent(s): 926eeff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -35
app.py CHANGED
@@ -4,13 +4,13 @@ import nltk
4
  from nltk.tokenize import word_tokenize
5
  from nltk.corpus import stopwords
6
 
7
- # Download NLTK data
8
  nltk.download('punkt')
9
- nltk.download("stopwords")
10
 
11
  # Buat objek terjemahan
12
  translator = pipeline("translation", model="Helsinki-NLP/opus-mt-id-en")
13
- terjemahkan = pipeline("translation", model="Helsinki-NLP/opus-mt-en-id")
14
  pipe1 = pipeline("text-generation", model="TinyLlama/TinyLlama-1.1B-Chat-v1.0")
15
  pipe2 = pipeline("text-generation", model="SumayyaAli/tiny-llama-1.1b-chat-medical")
16
 
@@ -18,58 +18,58 @@ pipe2 = pipeline("text-generation", model="SumayyaAli/tiny-llama-1.1b-chat-medic
18
  def pra_pemrosesan_teks(teks):
19
  tokens = word_tokenize(teks)
20
  tokens = [token for token in tokens if token.isalnum()] # Menghapus kata bukan alfanumerik
21
- tokens = [token for token in tokens if token.lower() not in stopwords.words("indonesian")] # Menghapus stopword
22
- preprocessed_text = " ".join(tokens)
23
- return preprocessed_text
24
 
25
- # Streamlit UI
26
  st.title("Diagnosa Penyakit Berdasarkan Gejala")
27
 
28
  # Masukkan gejala, usia, dan jenis kelamin
29
  usia = st.number_input("Masukkan usia Anda:", min_value=0, max_value=120)
30
  jenis_kelamin = st.selectbox("Masukkan jenis kelamin Anda:", ["Laki-laki", "Perempuan"])
31
- teks_indonesia = st.text_area("Masukkan gejala Anda:")
32
 
33
  if st.button("Diagnosa"):
34
- if teks_indonesia and jenis_kelamin:
35
- # Melakukan terjemahan gejala dari ID ke EN
36
- terjemahan = translator(teks_indonesia, max_length=100)
37
- terjemahan_inggris = terjemahan[0]["translation_text"]
38
-
39
- gabungan = f"I am {usia} years old, {jenis_kelamin}. And my current symptoms are {terjemahan_inggris}"
40
 
41
  # Pesan untuk model
42
- messages = [
43
- {"role": "system", "content": "You are a doctor who needs to diagnose a patient's illness. Provide one diagnosis that you believe is most confident."},
44
- {"role": "user", "content": f"Based on your assessment, {gabungan}, what illness could it be?"}
45
  ]
46
-
47
- # Fungsi untuk mendapatkan content dari role 'assistant'
48
  def get_assistant_content(response):
49
- generated_text = response[0]['generated_text']
50
  return generated_text
51
 
52
- # Dapatkan response dari pipe1 (model TinyLlama)
53
- response1 = pipe1(messages, num_return_sequences=1, truncation=True)
54
- assistant_content1 = get_assistant_content(response1)
55
 
56
- # Dapatkan response dari pipe2 (model SumayyaAli)
57
- response2 = pipe2(messages, num_return_sequences=1, truncation=True)
58
- assistant_content2 = get_assistant_content(response2)
59
 
60
- # Gabungkan hasil dari pipe1 dan pipe2 untuk pertanyaan final
61
- kalimat = [{'role': 'user', 'content': f"{assistant_content1}. {assistant_content2}. Based on these two sentences, what is your final conclusion of my current symptom? Please provide a brief answer with one diagnosis."}]
62
 
63
- # Dapatkan hasil akhir dari diagnosis
64
- hasil = pipe1(kalimat)
65
- assistant_content3 = get_assistant_content(hasil)
66
 
67
  # Terjemahkan hasil akhir ke bahasa Indonesia
68
- terjemahan_hasil = terjemahkan(assistant_content3, max_length=100)
69
- diagnosa_terjemahan = terjemahan_hasil[0]["translation_text"]
70
 
71
- # Menampilkan hasil ke Streamlit
72
  st.subheader("Hasil Diagnosis:")
73
  st.write(f"Diagnosis: {diagnosa_terjemahan}")
74
  else:
75
- st.error("Harap isi semua kolom sebelum menekan tombol Diagnosis.")
 
4
  from nltk.tokenize import word_tokenize
5
  from nltk.corpus import stopwords
6
 
7
+ # Download data NLTK
8
  nltk.download('punkt')
9
+ nltk.download('stopwords')
10
 
11
  # Buat objek terjemahan
12
  translator = pipeline("translation", model="Helsinki-NLP/opus-mt-id-en")
13
+ terjemah = pipeline("translation", model="Helsinki-NLP/opus-mt-en-id")
14
  pipe1 = pipeline("text-generation", model="TinyLlama/TinyLlama-1.1B-Chat-v1.0")
15
  pipe2 = pipeline("text-generation", model="SumayyaAli/tiny-llama-1.1b-chat-medical")
16
 
 
18
  def pra_pemrosesan_teks(teks):
19
  tokens = word_tokenize(teks)
20
  tokens = [token for token in tokens if token.isalnum()] # Menghapus kata bukan alfanumerik
21
+ tokens = [token for token in tokens if token.lower() not in stopwords.words('indonesian')] # Menghapus stopword
22
+ teks_diproses = " ".join(tokens)
23
+ return teks_diproses
24
 
25
+ # Antarmuka Streamlit
26
  st.title("Diagnosa Penyakit Berdasarkan Gejala")
27
 
28
  # Masukkan gejala, usia, dan jenis kelamin
29
  usia = st.number_input("Masukkan usia Anda:", min_value=0, max_value=120)
30
  jenis_kelamin = st.selectbox("Masukkan jenis kelamin Anda:", ["Laki-laki", "Perempuan"])
31
+ gejala_id = st.text_area("Masukkan gejala Anda:")
32
 
33
  if st.button("Diagnosa"):
34
+ if gejala_id and usia and jenis_kelamin:
35
+ # Terjemahkan gejala dari Indonesia ke Inggris
36
+ terjemahan = translator(gejala_id, max_length=100)
37
+ gejala_en = terjemahan <sup> </sup>["translation_text"]
38
+
39
+ informasi_pasien = f"Saya berusia {usia} tahun, {jenis_kelamin}. Gejala yang saya alami adalah {gejala_en}"
40
 
41
  # Pesan untuk model
42
+ pesan = [
43
+ {"role": "system", "content": "Anda adalah seorang dokter yang perlu mendiagnosis penyakit pasien. Berikan satu diagnosis yang Anda yakini paling akurat."},
44
+ {"role": "user", "content": f"Berdasarkan informasi ini, {informasi_pasien}, apa penyakit yang mungkin saya derita?"}
45
  ]
46
+
47
+ # Fungsi untuk mendapatkan konten dari role 'assistant'
48
  def get_assistant_content(response):
49
+ generated_text = response <sup> </sup>['generated_text']
50
  return generated_text
51
 
52
+ # Dapatkan respon dari pipe1 (model TinyLlama)
53
+ response1 = pipe1(pesan, num_return_sequences=1, truncation=True)
54
+ asisten_konten1 = get_assistant_content(response1)
55
 
56
+ # Dapatkan respon dari pipe2 (model SumayyaAli)
57
+ response2 = pipe2(pesan, num_return_sequences=1, truncation=True)
58
+ asisten_konten2 = get_assistant_content(response2)
59
 
60
+ # Gabungkan hasil dari pipe1 dan pipe2 untuk pertanyaan akhir
61
+ pertanyaan_akhir = [{'role': 'user', 'content': f"{asisten_konten1}. {asisten_konten2}. Berdasarkan dua kalimat ini, apa kesimpulan akhir Anda tentang gejala saya? Berikan jawaban singkat dengan satu diagnosis."}]
62
 
63
+ # Dapatkan hasil akhir diagnosis
64
+ hasil_diagnosis = pipe1(pertanyaan_akhir)
65
+ asisten_konten3 = get_assistant_content(hasil_diagnosis)
66
 
67
  # Terjemahkan hasil akhir ke bahasa Indonesia
68
+ terjemahan_hasil = terjamah(asisten_konten3, max_length=100)
69
+ diagnosa_terjemahan = terjemahan_hasil <sup> </sup>["translation_text"]
70
 
71
+ # Tampilkan hasil ke Streamlit
72
  st.subheader("Hasil Diagnosis:")
73
  st.write(f"Diagnosis: {diagnosa_terjemahan}")
74
  else:
75
+ st.error("Harap isi semua kolom sebelum menekan tombol Diagnosa.")