File size: 1,989 Bytes
42ae373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
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](https://huggingface.co/answerdotai/ModernBERT-base) on
[LocalLaws/LOCUS-v1.0](https://huggingface.co/datasets/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

```python
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])
```