Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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
|
8 |
nltk.download('punkt')
|
9 |
-
nltk.download(
|
10 |
|
11 |
# Buat objek terjemahan
|
12 |
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-id-en")
|
13 |
-
|
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(
|
22 |
-
|
23 |
-
return
|
24 |
|
25 |
-
# 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 |
-
|
32 |
|
33 |
if st.button("Diagnosa"):
|
34 |
-
if
|
35 |
-
#
|
36 |
-
terjemahan = translator(
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
|
41 |
# Pesan untuk model
|
42 |
-
|
43 |
-
{"role": "system", "content": "
|
44 |
-
{"role": "user", "content": f"
|
45 |
]
|
46 |
-
|
47 |
-
# Fungsi untuk mendapatkan
|
48 |
def get_assistant_content(response):
|
49 |
-
generated_text = response[
|
50 |
return generated_text
|
51 |
|
52 |
-
# Dapatkan
|
53 |
-
response1 = pipe1(
|
54 |
-
|
55 |
|
56 |
-
# Dapatkan
|
57 |
-
response2 = pipe2(
|
58 |
-
|
59 |
|
60 |
-
# Gabungkan hasil dari pipe1 dan pipe2 untuk pertanyaan
|
61 |
-
|
62 |
|
63 |
-
# Dapatkan hasil akhir
|
64 |
-
|
65 |
-
|
66 |
|
67 |
# Terjemahkan hasil akhir ke bahasa Indonesia
|
68 |
-
terjemahan_hasil =
|
69 |
-
diagnosa_terjemahan = terjemahan_hasil[
|
70 |
|
71 |
-
#
|
72 |
st.subheader("Hasil Diagnosis:")
|
73 |
st.write(f"Diagnosis: {diagnosa_terjemahan}")
|
74 |
else:
|
75 |
-
st.error("Harap isi semua kolom sebelum menekan tombol
|
|
|
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.")
|