span-marker safetensors token-classification ner named-entity-recognition muppet-roberta-large-ner en dataset:DFKI-SLT/few-nerd license:cc-by-sa-4.0 model-index region:us
---
datasets:
- DFKI-SLT/few-nerd
language:
- en
library_name: span-marker
license: cc-by-sa-4.0
metrics:
- precision
- recall
- f1
pipeline_tag: token-classification
tags:
- span-marker
- token-classification
- ner
- named-entity-recognition
- muppet-roberta-large-ner
widget:
- text: His name was Radu-Sebastian Amarie, and was building IJW trying to figure
    out how to properly extract entities from raw data. He's from Romania and he's
    eager to watch Dune 2.
- example_title: Random few NERD examples.
- text: The Alabama Supreme Court effectively halted in vitro fertilization at several
    state hospitals and caused a massive nationwide backlash when it ruled last week
    in a wrongful death case that frozen embryos used in IVF are considered people.
    Dr. Paula Amato, the president of the American Society for Reproductive Medicine,
    said in a press release it was a mistake to conflate frozen fertilized eggs with
    embryos developing within a mother.
- example_title: News
model-index:
- name: SpanMarker w. facebook/muppet-roberta-large on finegrained, supervised FewNERD
  results:
  - task:
      type: token-classification
      name: Named Entity Recognition
    dataset:
      name: finegrained, supervised FewNERD
      type: DFKI-SLT/few-nerd
      config: supervised
      split: test
      revision: 6f0944f5a1d47c359b4f5de03ed1d58c98f297b5
    metrics:
    - type: f1
      value: 0.705678
      name: F1
    - type: precision
      value: 0.701648
      name: Precision
    - type: recall
      value: 0.709755
      name: Recall
---

# SpanMarker

This is a [SpanMarker](https://github.com/tomaarsen/SpanMarkerNER) model trained on the [DFKI-SLT/few-nerd](https://huggingface.co/datasets/DFKI-SLT/few-nerd) dataset that can be used for Named Entity Recognition. 
Training was done on a Nvidia 4090 in approximately 8 hours (but final chosen checkpoint was from before the first half of training)


## Training and Validation Metrics

![image/png](https://cdn-uploads.huggingface.co/production/uploads/630f2745982455e61cc5fb1d/TlEu3b2PmnptXc1pZ7C2u.png)

Current model represents STEP 25000


## Test Set Evaluation

The following are some manually-selected checkpoints that correspond to the above steps:

```
|   checkpoint | Precision |   Recall   |      F1    |   Accuracy |   Runtime |   Samples/s | 
|-------------:|----------:|-----------:|-----------:|-----------:|----------:|------------:|
|        17000 |  0.706066 |   0.691239 |   0.698574 |   0.926213 |   335.172 |     123.474 | 
|        18000 |  0.695331 |   0.700382 |   0.697847 |   0.926372 |   301.435 |     137.293 |
|        19000 |  0.70618  |   0.693775 |   0.699923 |   0.926492 |   301.032 |     137.477 |
|        20000 |  0.700665 |   0.701572 |   0.701118 |   0.927128 |   299.706 |     138.085 |
|        21000 |  0.706467 |   0.695591 |   0.700987 |   0.926318 |   299.62  |     138.125 |
|        22000 |  0.698079 |   0.710756 |   0.704361 |   0.928094 |   300.041 |     137.931 |
|        24000 |  0.709286 |   0.695769 |   0.702463 |   0.926329 |   300.339 |     137.794 |
|        25000 |  0.701648 |   0.709755 |   0.705678 |   0.92792  |   299.905 |     137.994 |
|        26000 |  0.702509 |   0.708147 |   0.705317 |   0.927998 |   301.161 |     137.418 |
|        27000 |  0.707315 |   0.698796 |   0.703029 |   0.926493 |   299.692 |     138.092 |
```

## Model Details

### Model Description
- **Model Type:** SpanMarker
- **Encoder:** [muppet-roberta-large](https://huggingface.co/facebook/muppet-roberta-large)
- **Maximum Sequence Length:** 256 tokens
- **Maximum Entity Length:** 6 words
- **Training Dataset:** [DFKI-SLT/few-nerd](https://huggingface.co/datasets/DFKI-SLT/few-nerd)
- **Language:** en
- **License:** cc-by-sa-4.0

### Useful Links

- Training was done with SpanMarker Trainer that can be found here: [SpanMarker on GitHub](https://github.com/tomaarsen/SpanMarkerNER)

## Uses

### Direct Use for Inference

```python
from span_marker import SpanMarkerModel

# Download from the 🤗 Hub
model = SpanMarkerModel.from_pretrained("eek/span-marker-muppet-roberta-large-fewnerd-fine-super")
# Run inference
entities = model.predict("His name was Radu.")
```

or it can be used directly in spacy via [SpanMarker](https://spacy.io/universe/project/span_marker).

```python
import spacy

nlp = spacy.load("en_core_web_sm", exclude=["ner"])
nlp.add_pipe("span_marker", config={"model": "tomaarsen/span-marker-roberta-large-ontonotes5"})

text = """Cleopatra VII, also known as Cleopatra the Great, was the last active ruler of the \
Ptolemaic Kingdom of Egypt. She was born in 69 BCE and ruled Egypt from 51 BCE until her \
death in 30 BCE."""
doc = nlp(text)
print([(entity, entity.label_) for entity in doc.ents])
```

## Training Details

### Framework Versions
- Python: 3.10.13
- SpanMarker: 1.5.0
- Transformers: 4.36.2
- PyTorch: 2.2.1+cu121
- Datasets: 2.18.0
- Tokenizers: 0.15.2

### Training Arguments

```
args = TrainingArguments(
    output_dir="models/span-marker-muppet-roberta-large-fewnerd-fine-super",
    learning_rate=1e-5,
    gradient_accumulation_steps=2,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=8,
    evaluation_strategy="steps",
    save_strategy="steps",
    save_steps=1000,
    eval_steps=500,
    push_to_hub=False,
    logging_steps=50,
    fp16=True,
    warmup_ratio=0.1,
    dataloader_num_workers=1,
    load_best_model_at_end=True
)
```

## Thanks

Thanks to Tom Aarsen for the SpanMarker library.

### BibTeX
```
@software{Aarsen_SpanMarker,
    author = {Aarsen, Tom},
    license = {Apache-2.0},
    title = {{SpanMarker for Named Entity Recognition}},
    url = {https://github.com/tomaarsen/SpanMarkerNER}
}
```

## Model Card Authors

- [Radu-Sebastian Amarie](https://huggingface.co/eek)