Prompt-Builder / scripts /verify_fieldfit_ml.py
ArielJoe's picture
feat: cross-field ML field-fit + context-aware typo reranking; drop Completeness
f2f9311
Raw
History Blame Contribute Delete
1.45 kB
"""Verifikasi cepat lapis ML Field-Fit: deteksi salah-field lintas field + dedup."""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src"))
from field_fit.field_fit_detector import FieldFitDetector
det = FieldFitDetector(use_ml=True)
det.load()
print("ML aktif:", det.ml_active, "\n")
# (teks, field_sekarang, harapan: target field atau None bila tak ditandai)
CASES = [
("Kamu adalah seorang dokter spesialis anak", "task", "role"), # rule+ML, dedup -> role
("Sajikan dalam bentuk tabel dengan kolom tujuan", "task", "outputFormat"),
("Khusus untuk siswa kelas 3 SD", "task", "audience"),
("Jangan lebih dari 100 kata", "task", "constraints"),
("Gunakan bahasa yang ramah dan santai", "context", "tone"),
("Buatkan rencana pembelajaran tentang fotosintesis", "task", None), # benar di Task
("Untuk kelas 7 SMP, durasi 80 menit", "context", None), # benar di Context
("Gunakan buku paket halaman 20-35", "references", None), # benar di References
]
ok = 0
for text, cur, expect in CASES:
fs = det.detect(text, cur)
got = fs[0].target_field if fs else None
n = len(fs)
verdict = "OK " if got == expect else "BEDA"
if got == expect:
ok += 1
print(f"[{verdict}] field={cur:11} -> target={str(got):12} (harap {str(expect):12}) "
f"n={n} '{text[:42]}'")
print(f"\nSesuai harapan: {ok}/{len(CASES)}")