initial commit
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
from main import koleksi
|
||||
|
||||
# Lab 2 — 5 Pertanyaan langsung sesuai isi dokumen
|
||||
PERTANYAAN_UTAMA = [
|
||||
"Apa syarat cuti akademik?",
|
||||
"Berapa batas kehadiran minimal untuk mengikuti ujian akhir semester?",
|
||||
"Berapa beban maksimal SKS yang dapat diambil dalam satu semester?",
|
||||
"Apa syarat IPK minimal untuk mengambil mata kuliah Skripsi?",
|
||||
"Berapa lama batas waktu maksimal masa studi program sarjana?",
|
||||
]
|
||||
|
||||
# Lab 2 — 2 Pertanyaan dengan kata berbeda dari teks dokumen (parafrase)
|
||||
PERTANYAAN_PARAFRASE = [
|
||||
# Parafrase dari "cuti akademik" -> "berhenti kuliah sementara waktu"
|
||||
"Bagaimana prosedur jika mahasiswa ingin berhenti kuliah sementara waktu?",
|
||||
# Parafrase dari "batas kehadiran 75 persen untuk ujian" -> "jarang masuk kelas apakah boleh ikut UAS"
|
||||
"Jika mahasiswa sering absen kelas, berapa minimal presensi supaya tetap diizinkan ikut UAS?",
|
||||
]
|
||||
|
||||
|
||||
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)")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user