LOCUS-Function / README.md
jbarrow's picture
Upload LOCUS-Function weights, tokenizer, and model card
42ae373 verified
metadata
base_model: answerdotai/ModernBERT-base
library_name: transformers
pipeline_tag: text-classification
tags:
  - text-classification
  - legal
  - locus
  - modernbert
license: apache-2.0
datasets:
  - LocalLaws/LOCUS-v1.0

LocalLaws/LOCUS-Function

A ModernBERT classifier for the Primary Function axis of the LOCUS (Local Ordinances Corpus, United States) dataset.

Fine-tuned from answerdotai/ModernBERT-base on LocalLaws/LOCUS-v1.0.

Labels

  • Context
  • Enforcement
  • Process
  • Rules
  • Structural

Training

Base model answerdotai/ModernBERT-base
Max length 1024
Classifier pooling mean
Train / val / test 79106 / 10447 / 10447

Evaluation

Metric macro-F1
Validation macro-F1 0.8443
Test macro-F1 0.8428
Test accuracy 0.8849
              precision    recall  f1-score   support

     Context     0.8399    0.9138    0.8753      1033
 Enforcement     0.7561    0.8682    0.8083      1032
     Process     0.6038    0.7691    0.6765       654
       Rules     0.9308    0.8570    0.8924      4896
  Structural     0.9675    0.9555    0.9614      2832

    accuracy                         0.8849     10447
   macro avg     0.8196    0.8727    0.8428     10447
weighted avg     0.8940    0.8849    0.8876     10447

Usage

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

tok = AutoTokenizer.from_pretrained("LocalLaws/LOCUS-Function")
model = AutoModelForSequenceClassification.from_pretrained("LocalLaws/LOCUS-Function")
model.eval()

text = "No person shall keep any swine within the city limits."
enc = tok(text, return_tensors="pt", truncation=True, max_length=1024)
with torch.no_grad():
    logits = model(**enc).logits
pred = logits.argmax(-1).item()
print(model.config.id2label[pred])