narcolepticchicken's picture
Upload run_eval.py
344c51b verified
Raw
History Blame Contribute Delete
1.78 kB
"""
Standalone evaluation runner for the contract drafting system.
Runs on CPU; no GPU required for template-based generation.
"""
import json
import sys
from clause_retriever import ClauseRetriever, build_retriever_from_hf_datasets
from drafting_engine import ContractDraftingEngine, DraftingContext
from eval_runner import EvalRunner, GOLD_TASKS
def main():
print("Initializing clause retriever...")
retriever = ClauseRetriever(use_bm25=True, use_embeddings=False)
# Load small seed clause library
try:
from datasets import load_dataset
ds = load_dataset("asapworks/Contract_Clause_SampleDataset", split="train")
for row in ds:
retriever.add_clauses([{
"clause_text": row["clause_text"],
"clause_type": row.get("clause_type", "unknown"),
"source": row.get("file", "seed"),
}])
print(f"Loaded {len(retriever.corpus)} seed clauses.")
except Exception as e:
print(f"Warning: could not load seed clauses: {e}")
engine = ContractDraftingEngine(retriever=retriever)
runner = EvalRunner(engine)
print("Running gold task suite...")
results = runner.run_suite(GOLD_TASKS)
report = runner.report(results)
print(report)
with open("eval_report.md", "w") as f:
f.write(report)
# Save detailed JSON
detailed = []
for r in results:
detailed.append({
"task_id": r.task_id,
"contract_type": r.contract_type,
"total_score": r.total_score,
"scores": r.scores,
})
with open("eval_results.json", "w") as f:
json.dump(detailed, f, indent=2)
print("\nSaved eval_report.md and eval_results.json")
if __name__ == "__main__":
main()