ContractLens / src /contractlens /data /cuad_loader.py
charanyellanki's picture
initial commit
e136608
Raw
History Blame Contribute Delete
2.47 kB
"""CUAD dataset loader."""
from dataclasses import dataclass
from pathlib import Path
from typing import Optional
import json
@dataclass
class CUADContract:
"""A contract from the CUAD dataset."""
contract_id: str
text: str
clauses: dict[str, list[dict]]
class CUADLoader:
"""Loader for the CUAD dataset."""
def __init__(self, data_path: Optional[str] = None) -> None:
self.data_path = Path(data_path) if data_path else Path("./data/cuad")
def load_contract(self, contract_id: str) -> CUADContract:
"""Load a single contract by ID."""
# TODO: Implement actual CUAD loading
# This is a stub that returns sample data
return CUADContract(
contract_id=contract_id,
text="Sample contract text...",
clauses={},
)
def load_train(self) -> list[CUADContract]:
"""Load training contracts."""
return []
def load_test(self) -> list[CUADContract]:
"""Load test contracts."""
return []
def load_categories(self) -> list[str]:
"""Load the 41 CUAD clause categories."""
return [
"Confidentiality",
"Non-Disclosure",
"Non-Disclosure Agreement",
"IP Ownership",
"License Grant",
"Patent Rights",
"Copyright",
"Trademark",
"Limitation of Liability",
"Indemnification",
"Indemnification Cap",
"Mutual Indemnification",
"Termination",
"Termination for Convenience",
"Termination for Cause",
"Survival",
"Payment Terms",
"Price and Payment",
"Taxes",
"Expenses",
"Invoicing",
"Warranty",
"Warranties",
"Representations",
"Disclaimer",
"Force Majeure",
"Governing Law",
"Jurisdiction",
"Venue",
"Assignment",
"Amendment",
"Waiver",
"Notices",
"Entire Agreement",
"Severability",
"Relationship",
"Compliance",
"Regulatory",
"Export Control",
"Anti-Corruption",
"Non-Compete",
"Non-Solicitation",
"Insurance",
"Security",
"Data Protection",
"Privacy",
]