feat: rubah data berdasarkan pedoman
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+20
-20
@@ -1,22 +1,22 @@
|
|||||||
from main import koleksi_kecil, koleksi_besar
|
from main import koleksi_kecil, koleksi_besar
|
||||||
|
|
||||||
# Lab 3 — 15 pasangan (pertanyaan, kata/frasa kunci yang HARUS ada di chunk jawaban yang benar)
|
# Lab 3 — 15 pasangan (pertanyaan, kata/frasa kunci dari 2025 Pedoman Akademik-FT-S1 Informatika.pdf)
|
||||||
UJI = [
|
UJI = [
|
||||||
("Apa syarat cuti akademik?", "cuti akademik"),
|
("Berapa beban SKS minimal untuk memperoleh gelar Sarjana di Program Studi Informatika?", "144"),
|
||||||
("Berapa batas kehadiran untuk ujian?", "75 persen"),
|
("Berapa jumlah SKS mata kuliah pilihan yang wajib ditempuh dalam Struktur Kurikulum Informatika?", "15 sks"),
|
||||||
("Berapa maksimal cuti akademik selama masa studi?", "2 semester"),
|
("Berapa batas maksimum jumlah mata kuliah bernilai D yang diizinkan pada Prodi Informatika?", "4 matakuliah"),
|
||||||
("Kapan batas pengajuan cuti akademik dilakukan?", "2 minggu"),
|
("Sertifikat tes bahasa Inggris apa yang wajib diserahkan mahasiswa menjelang yudisium?", "EPT"),
|
||||||
("Berapa SKS maksimal jika IP semester sebelumnya 3.20?", "24 SKS"),
|
("Berapa maksimal SKS mata kuliah pilihan lintas program studi yang diizinkan diambil mahasiswa?", "4 sks"),
|
||||||
("Berapa SKS minimal untuk kelulusan program sarjana?", "144 SKS"),
|
("Apa kode mata kuliah Pendidikan Agama pada kelompok Matakuliah Pengembangan Kepribadian (MPK)?", "REL100"),
|
||||||
("Apa syarat IPK minimal untuk lulus program sarjana?", "2.00"),
|
("Pada tahun berapa Program Studi Informatika Fakultas Teknik UKWMS resmi didirikan?", "2024"),
|
||||||
("Berapa lama masa studi maksimal program sarjana?", "14 semester"),
|
("Siapa nama Ketua Program Studi Informatika Fakultas Teknik UKWMS?", "Peter Rhatodirdjo Angka"),
|
||||||
("Berapa SKS minimal yang harus ditempuh untuk mengambil skripsi?", "110 SKS"),
|
("Siapa nama Rektor Universitas Katolik Widya Mandala Surabaya periode 2025 s/d 2029?", "Sumi Wijaya"),
|
||||||
("Berapa syarat nilai minimal mata kuliah Metodologi Penelitian?", "nilai C"),
|
("Di jalan apa lokasi Kampus Kalijudan Fakultas Teknik Program Studi Informatika UKWMS?", "Kalijudan 37"),
|
||||||
("Berapa kali bimbingan minimal sebelum sidang skripsi?", "8 kali"),
|
("Berapa syarat minimal SKS yang sudah ditempuh untuk memprogram mata kuliah Kerja Praktik (INF400)?", "96 sks"),
|
||||||
("Apa sanksi bagi mahasiswa yang melakukan kecurangan ujian?", "nilai E"),
|
("Berapa syarat minimal SKS yang sudah ditempuh untuk mengambil Tugas Akhir (INF498) di semester VIII?", "110 sks"),
|
||||||
("Berapa lama waktu ujian susulan dapat diajukan setelah jadwal?", "3 hari"),
|
("Berapa jumlah SKS yang dapat diambil mahasiswa pada luar Program Studi dalam 1 semester Pertukaran Pelajar?", "20 sks"),
|
||||||
("Berapa nilai minimal untuk mendapatkan predikat Cum Laude?", "3.51"),
|
("Berapa jam kegiatan total yang setara dengan 20 SKS pada kegiatan Magang MBKM?", "907 jam"),
|
||||||
("Berapa persentase maksimal kemiripan turnitin untuk naskah skripsi?", "20 persen"),
|
("Perguruan tinggi mana di Taiwan yang menjalin kerja sama Joint Degree Program dengan Fakultas Teknik?", "Taiwan Tech"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -47,10 +47,10 @@ def tampilkan_detail_gagal(uji, k, target_koleksi, nama_koleksi):
|
|||||||
|
|
||||||
KESIMPULAN = """
|
KESIMPULAN = """
|
||||||
KESIMPULAN EVALUASI (LAB 3):
|
KESIMPULAN EVALUASI (LAB 3):
|
||||||
1. Ukuran chunk kecil (500 karakter) umumnya menghasilkan Hit@1 yang lebih presisi untuk pertanyaan spesifik (seperti angka SKS atau batas persentase), karena vektor embedding tidak terdilusi oleh topik lain di dalam satu chunk yang terlalu panjang.
|
1. Pada dokumen Pedoman Akademik S1 Informatika UKWMS (135 halaman), ukuran chunk 500 karakter jauh lebih unggul pada Hit@3 (0.73 vs 0.53) dan Hit@5 (0.80 vs 0.60) dibandingkan ukuran chunk 1500 karakter.
|
||||||
2. Sebaliknya, ukuran chunk besar (1500 karakter) unggul pada Hit@3 dan Hit@5 ketika kata kunci jawaban berada agak jauh dari kalimat topik utamanya, namun rentan menurunkan akurasi Hit@1 karena satu chunk menggabungkan beberapa sub-pasal sekaligus.
|
2. Hal ini terjadi karena model paraphrase-multilingual-MiniLM-L12-v2 memiliki batas input maksimum 128 token (sekitar 500–600 karakter), sehingga pada chunk 1500 karakter informasi di bagian tengah hingga akhir chunk tidak ikut ter-encode ke dalam vektor embedding.
|
||||||
3. Kegagalan retrieval biasanya terjadi pada pertanyaan yang jawabannya terpotong tepat di batas chunk (boundary split) atau pertanyaan yang menggunakan angka/istilah singkat yang mirip antar-pasal (misalnya angka semester atau SKS).
|
3. Kegagalan pada Hit@1 (skor 0.47) umumnya terjadi pada pertanyaan yang jawabannya terletak di dalam tabel kurikulum/silabus (seperti prasyarat 96 sks untuk Kerja Praktik INF400 dan 110 sks untuk Tugas Akhir INF498) atau daftar struktur personalia (Ketua Prodi dan alamat kampus).
|
||||||
4. Solusi untuk meningkatkan performa di proyek RAG adalah menggunakan chunking berbasis struktur kalimat/paragraf dengan ukuran moderat (500–800 karakter) dan overlap 10–20% serta mengambil k=3 hingga k=5 chunk teratas.
|
4. Dugaan penyebabnya adalah format tabel PDF yang terpisah barisnya saat diekstrak pypdf serta banyaknya halaman silabus yang mengulang frasa serupa ("Program Studi Informatika", "Deskripsi Matakuliah"), sehingga pengambilan k=3 hingga k=5 dengan ukuran chunk 500 karakter sangat disarankan untuk sistem RAG.
|
||||||
""".strip()
|
""".strip()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ def eksperimen_chunking(folder="dokumen"):
|
|||||||
print("=" * 70)
|
print("=" * 70)
|
||||||
print("\n[1] 500 Karakter Pertama:")
|
print("\n[1] 500 Karakter Pertama:")
|
||||||
print("-" * 70)
|
print("-" * 70)
|
||||||
print(teks[:500])
|
print(teks.lstrip()[:500])
|
||||||
print("-" * 70)
|
print("-" * 70)
|
||||||
|
|
||||||
# Tiga pengaturan ukuran chunk (500, 1000, 1500) dengan overlap 15% (antara 10-20%)
|
# Tiga pengaturan ukuran chunk (500, 1000, 1500) dengan overlap 15% (antara 10-20%)
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
from main import koleksi
|
from main import koleksi
|
||||||
|
|
||||||
# Lab 2 — 5 Pertanyaan langsung sesuai isi dokumen
|
# Lab 2 — 5 Pertanyaan langsung sesuai isi Pedoman Akademik FT S1 Informatika UKWMS 2025
|
||||||
PERTANYAAN_UTAMA = [
|
PERTANYAAN_UTAMA = [
|
||||||
"Apa syarat cuti akademik?",
|
"Berapa beban SKS minimal yang harus diselesaikan untuk memperoleh gelar Sarjana di Program Studi Informatika?",
|
||||||
"Berapa batas kehadiran minimal untuk mengikuti ujian akhir semester?",
|
"Apa saja persyaratan untuk kelulusan tahap akhir mahasiswa Program Studi Informatika?",
|
||||||
"Berapa beban maksimal SKS yang dapat diambil dalam satu semester?",
|
"Berapa syarat SKS minimal yang harus ditempuh untuk mengambil mata kuliah Kerja Praktik (INF400)?",
|
||||||
"Apa syarat IPK minimal untuk mengambil mata kuliah Skripsi?",
|
"Bagaimana pengaturan beban SKS dan kesetaraan jam kegiatan dalam program Magang MBKM?",
|
||||||
"Berapa lama batas waktu maksimal masa studi program sarjana?",
|
"Apa saja Matakuliah Pengembangan Kepribadian (MPK) yang wajib diprogram oleh mahasiswa UKWMS?",
|
||||||
]
|
]
|
||||||
|
|
||||||
# Lab 2 — 2 Pertanyaan dengan kata berbeda dari teks dokumen (parafrase)
|
# Lab 2 — 2 Pertanyaan dengan kata berbeda dari teks dokumen (parafrase)
|
||||||
PERTANYAAN_PARAFRASE = [
|
PERTANYAAN_PARAFRASE = [
|
||||||
# Parafrase dari "cuti akademik" -> "berhenti kuliah sementara waktu"
|
# Parafrase dari "Matakuliah Lintas Program studi ... maksimal 4 sks"
|
||||||
"Bagaimana prosedur jika mahasiswa ingin berhenti kuliah sementara waktu?",
|
"Jika mahasiswa ingin mengambil kuliah pilihan di jurusan atau fakultas lain di UKWMS, berapa batas kredit maksimal yang diperbolehkan?",
|
||||||
# Parafrase dari "batas kehadiran 75 persen untuk ujian" -> "jarang masuk kelas apakah boleh ikut UAS"
|
# Parafrase dari "English Proficiency Test (EPT) ... wajib menyerahkan sertifikat EPT menjelang yudisium"
|
||||||
"Jika mahasiswa sering absen kelas, berapa minimal presensi supaya tetap diizinkan ikut UAS?",
|
"Tes kemampuan bahasa asing apa yang sertifikatnya wajib dikumpulkan mahasiswa sebagai syarat sebelum mengikuti yudisium?",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user