Files

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)")