File size: 7,790 Bytes
a662c21 41492ae 5fe02e9 a662c21 5fe02e9 274f1f7 5fe02e9 fe07a83 5fe02e9 4678439 5fe02e9 274f1f7 7a713c1 5fe02e9 274f1f7 5fe02e9 4678439 5fe02e9 d64e58b 4678439 d64e58b 5fe02e9 274f1f7 5fe02e9 274f1f7 5fe02e9 274f1f7 5fe02e9 274f1f7 5fe02e9 274f1f7 4678439 274f1f7 4678439 5fe02e9 4678439 | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | ---
license: mit
language:
- en
tags:
- token-classification
- text-segmentation
- situation-entity-segmentation
- xlm-roberta
- crf
base_model: FacebookAI/xlm-roberta-large
---
# XLM-RoBERTa-large + CRF for Situation-Entity Segmentation
[Paper](https://aclanthology.org/2026.law-main.8/) | [Code](https://github.com/coling-unia/sitent-segmenter-law2026)
Fine-tuned [XLM-RoBERTa-large](https://huggingface.co/FacebookAI/xlm-roberta-large) with a linear classifier and a CRF output layer for **situation-entity segmentation**.
The model assigns BI(O) tags (`B-EDU`, `I-EDU`) to each token, marking the boundaries and spans of situation-entity segments — contiguous clause-level segments that describe a single situation type.
We use the multilingual version of RoBERTa to improve possible zero-shot transfer to situation segmentation in other language varieties.
## Usage
### Requirements
```bash
pip install transformers torch pytorch-crf
```
spaCy is not a hard dependency, but is recommended for sentence splitting (matching the training setup):
```bash
pip install spacy && python -m spacy download en_core_web_sm
```
### Loading the model
```python
from transformers import AutoConfig, AutoModel, AutoTokenizer
config = AutoConfig.from_pretrained("coling-unia/situation-entity-segmenter", trust_remote_code=True)
model = AutoModel.from_pretrained("coling-unia/situation-entity-segmenter", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("FacebookAI/xlm-roberta-large")
model.eval()
```
### Inference
The model was trained on spaCy-tokenised, sentence-split input (`en_core_web_sm`), so inference should follow the same setup. Split your input text into sentences using spaCy first, then call `model.predict_text(words, tokenizer)` with the word tokens for each sentence:
```python
import spacy
nlp = spacy.load("en_core_web_sm")
text = "The cat sat on the mat. It looked around the room."
results = []
for sent in nlp(text).sents:
words = [token.text for token in sent]
results.extend(model.predict_text(words, tokenizer))
for word, tag in results:
print(f"{word:20s} {tag}")
```
`B-EDU` marks the start of a new situation-entity segment; `I-EDU` marks its continuation; `O` marks tokens outside any segment.
## Architecture
```
XLM-RoBERTa-large encoder → Linear(1024 → 3) → CRF(3 tags)
```
- **Encoder:** `FacebookAI/xlm-roberta-large`
- **Classifier:** single linear layer mapping the encoder's hidden states to 3 tag logits
- **Decoder:** Viterbi decoding via a linear-chain CRF (`pytorch-crf`)
- **Labels:** `B-EDU` (0), `I-EDU` (1)
## Training Data
Fine-tuned on the situation entity annotated corpus from:
> Annemarie Friedrich, Alexis Palmer and Manfred Pinkal. **Situation entity types: automatic classification of clause-level aspect.** ACL 2016. ([GitHub](https://github.com/annefried/sitent))
The dataset is licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
Per the terms of the Apache 2.0 license, notice is hereby given that these weights represent a modified derivative work based on that data.
The corpus contains English text with clause-level situation-entity annotations. The standard train/dev/test split from the original paper is used.
## Training Details
| Hyperparameter | Value |
|---|---|
| Base model | `FacebookAI/xlm-roberta-large` |
| Learning rate | 4e-5 |
| Epochs (max) | 20 |
| Batch size | 64 |
| Weight decay | 0.001 |
| Early stopping | patience 3 (B-EDU F1 on dev) |
| Precision | fp16 |
Please find further training details in our code on GitHub.
## Results
Evaluated on the held-out test set. The table shows the best single run and the mean ± std across 5 random seeds for the best hyperparameter configuration (lr=4e-5, wd=0.001). A full grid search over 4 configurations × 5 seeds (20 runs total) was conducted; all configurations achieved similar B-EDU F1 in the range 0.902–0.904.
| Metric | Best run | Mean ± std (5 seeds) |
|---|---|---|
| B-EDU F1 | **0.907** | 0.904 ± 0.002 |
| B-EDU Precision | 0.901 | 0.898 ± 0.010 |
| B-EDU Recall | 0.914 | 0.911 ± 0.009 |
| WindowDiff (↓) | **0.075** | 0.077 ± 0.002 |
| Exact Match (sentence) | 0.753 | 0.742 ± 0.007 |
WindowDiff (Pevzner & Hearst, 2002) measures boundary-level segmentation quality within a sliding window of half the average reference segment length (lower is better). Exact Match is the fraction of sentences whose full tag sequence is predicted correctly (sentence level).
## Limitations
- Trained and evaluated on ~40.000 situation English segments.
- Performance may vary on out-of-domain text.
- Sub-token sequences longer than 512 tokens need to be chunked before inference - regular sentences should be shorter, though.
## Acknowledgement
We gratefully acknowledge the scientific support and HPC resources provided by the Erlangen National High Performance Computing Center (NHR@FAU) of the Friedrich-Alexander Universität Erlangen-Nürnberg (FAU) under the NHR project v110ee. NHR funding is provided by federal and Bavarian state authorities. NHR@FAU hardware is partially funded by the German Research Foundation (DFG) – 440719683.
## Citation
Please cite our paper when using the model:
```bibtex
@inproceedings{schmuck-etal-2026-cross,
title = "Cross-Linguistic Situation Entity Segmentation for Discourse Analysis in Diachronic {E}nglish and {G}erman Text",
author = {Schm{\"u}ck, Hanna and
Urban, Veronika and
Kr{\"u}ckl, Xaver and
Zeman, Sonja and
Claridge, Claudia and
Friedrich, Annemarie},
editor = "Liu, Yang Janet and
Gessler, Luke",
booktitle = "Proceedings of the 20th Linguistic Annotation Workshop ({LAW} {XX})",
month = jul,
year = "2026",
address = "San Diego, California, USA",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2026.law-main.8/",
doi = "10.18653/v1/2026.law-main.8",
pages = "95--112",
ISBN = "979-8-89176-404-0",
abstract = "Situation Entity (SE) segmentation identifies clause-like discourse units focusing on verb constellations. While SE segmentation has been applied to contemporary English as a subtask of SE annotation, systematic guidelines for syntactically ambiguous constructions remain underspecified. We present principled SE segmentation guidelines for contemporary and historical varieties of English and German. Our inter-annotator agreement studies on Late Modern English (1700{--}1900) and New High German (1650{--}1900) corpora demonstrate substantial agreement. Using the existing SitEnt corpus in contemporary English, we implement a new automatic segmenter based on XLM-RoBERTa. Our evaluation examines cross-variety and cross-lingual generalization, demonstrating challenges both for human annotation efforts and in transferring segmenters trained on contemporary English to historical varieties. Our code and data are publicly available at https://github.com/coling-unia/sitent-segmenter-law2026."
}
```
Please also cite the original annotation data paper:
```bibtex
@inproceedings{friedrich-etal-2016-situation,
title = "Situation entity types: automatic classification of clause-level aspect",
author = "Friedrich, Annemarie and
Palmer, Alexis and
Pinkal, Manfred",
editor = "Erk, Katrin and
Smith, Noah A.",
booktitle = "Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = aug,
year = "2016",
address = "Berlin, Germany",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/P16-1166/",
doi = "10.18653/v1/P16-1166",
pages = "1757--1768"
}
```
Cheers! |