46 lines
2.2 KiB
Python
46 lines
2.2 KiB
Python
from main import koleksi
|
|
|
|
# Lab 2 — 5 Pertanyaan langsung sesuai isi Pedoman Akademik FT S1 Informatika UKWMS 2025
|
|
PERTANYAAN_UTAMA = [
|
|
"Berapa beban SKS minimal yang harus diselesaikan untuk memperoleh gelar Sarjana di Program Studi Informatika?",
|
|
"Apa saja persyaratan untuk kelulusan tahap akhir mahasiswa Program Studi Informatika?",
|
|
"Berapa syarat SKS minimal yang harus ditempuh untuk mengambil mata kuliah Kerja Praktik (INF400)?",
|
|
"Bagaimana pengaturan beban SKS dan kesetaraan jam kegiatan dalam program Magang MBKM?",
|
|
"Apa saja Matakuliah Pengembangan Kepribadian (MPK) yang wajib diprogram oleh mahasiswa UKWMS?",
|
|
]
|
|
|
|
# Lab 2 — 2 Pertanyaan dengan kata berbeda dari teks dokumen (parafrase)
|
|
PERTANYAAN_PARAFRASE = [
|
|
# Parafrase dari "Matakuliah Lintas Program studi ... maksimal 4 sks"
|
|
"Jika mahasiswa ingin mengambil kuliah pilihan di jurusan atau fakultas lain di UKWMS, berapa batas kredit maksimal yang diperbolehkan?",
|
|
# Parafrase dari "English Proficiency Test (EPT) ... wajib menyerahkan sertifikat EPT menjelang yudisium"
|
|
"Tes kemampuan bahasa asing apa yang sertifikatnya wajib dikumpulkan mahasiswa sebagai syarat sebelum mengikuti yudisium?",
|
|
]
|
|
|
|
|
|
def cari_dan_tampilkan(daftar_pertanyaan, judul, n_results=3):
|
|
print("=" * 70)
|
|
print(judul)
|
|
print("=" * 70)
|
|
for idx, pertanyaan in enumerate(daftar_pertanyaan, start=1):
|
|
print(f"\nQ{idx}: {pertanyaan}")
|
|
hasil = koleksi.query(query_texts=[pertanyaan], n_results=n_results)
|
|
for rank, (doc, meta, jarak) in enumerate(
|
|
zip(hasil["documents"][0], hasil["metadatas"][0], hasil["distances"][0]),
|
|
start=1,
|
|
):
|
|
cuplikan = doc[:200].replace("\n", " ")
|
|
print(f" #{rank} [{meta['sumber']} · chunk {meta['chunk']}] jarak={jarak:.3f}")
|
|
print(f" {cuplikan} ...")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if koleksi.count() == 0:
|
|
print("Koleksi masih kosong. Jalankan `python main.py` terlebih dahulu setelah mengisi folder `dokumen/`.")
|
|
else:
|
|
cari_dan_tampilkan(PERTANYAAN_UTAMA, "LAB 2 (BAGIAN 2) — 5 PERTANYAAN PENCARIAN")
|
|
print()
|
|
cari_dan_tampilkan(PERTANYAAN_PARAFRASE, "LAB 2 (BAGIAN 3) — 2 PERTANYAAN PARAFRASE (SEMANTIC SEARCH)")
|
|
|
|
|