Files

34 lines
1.6 KiB
Python

"""Lab 2 - Jalankan 7 pertanyaan sekaligus (5 biasa + 2 parafrase) dan simpan hasilnya.
Pakai: python lab2_tanya.py (koleksi pedoman_1000)
python lab2_tanya.py 500 (koleksi pedoman_500)
Hasil: hasil_lab2.txt. Isi sendiri baris 'Relevan?' setelah membaca chunk teratas.
"""
import sys
from umum import ambil_embedding, buka_klien, ambil_koleksi, nama_koleksi
PERTANYAAN = [
("biasa", "Apa syarat untuk dapat mengambil skripsi?"),
("biasa", "Berapa lama peminjaman perangkat keras laboratorium?"),
("biasa", "Berapa persen kehadiran minimal agar boleh ikut ujian akhir?"),
("biasa", "Apa format huruf dan spasi penulisan skripsi?"),
("biasa", "Bagaimana prosedur ujian susulan?"),
("parafrase", "Bolehkah saya berhenti kuliah sementara waktu?"),
("parafrase", "Bagaimana kalau saya dapat surel penipuan yang meminta password?"),
]
ukuran = int(sys.argv[1]) if len(sys.argv) > 1 else 1000
koleksi = ambil_koleksi(buka_klien(), nama_koleksi(ukuran), ambil_embedding())
baris = [f"Koleksi: {koleksi.name} ({koleksi.count()} chunk)\n"]
for jenis, q in PERTANYAAN:
baris.append(f"[{jenis}] {q}")
hasil = koleksi.query(query_texts=[q], n_results=3)
for r, (doc, meta, jarak) in enumerate(zip(hasil["documents"][0], hasil["metadatas"][0], hasil["distances"][0]), 1):
baris.append(f" #{r} {meta['sumber']} hal {meta['halaman']} chunk {meta['chunk']} jarak={jarak:.3f}")
baris.append(f" {doc[:250]} ...")
baris.append(" Relevan? (isi: ya/tidak, chunk teratas): ____\n")
teks = "\n".join(baris)
print(teks)
open("hasil_lab2.txt", "w", encoding="utf-8").write(teks)
print("Disimpan ke hasil_lab2.txt")