34 lines
1.6 KiB
Python
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")
|