
# SpanMarker

This is a [SpanMarker](https://github.com/tomaarsen/SpanMarkerNER) model trained on the [conll2003](https://huggingface.co/datasets/conll2003) dataset that can be used for Named Entity Recognition.

## Model Details

### Model Description
- **Model Type:** SpanMarker
<!-- - **Encoder:** [Unknown](https://huggingface.co/unknown) -->
- **Maximum Sequence Length:** 256 tokens
- **Maximum Entity Length:** 8 words
- **Training Dataset:** [conll2003](https://huggingface.co/datasets/conll2003)
<!-- - **Language:** Unknown -->
<!-- - **License:** Unknown -->

### Model Sources

- **Repository:** [SpanMarker on GitHub](https://github.com/tomaarsen/SpanMarkerNER)
- **Thesis:** [SpanMarker For Named Entity Recognition](https://raw.githubusercontent.com/tomaarsen/SpanMarkerNER/main/thesis.pdf)

### Model Labels
| Label | Examples                                                      |
|:------|:--------------------------------------------------------------|
| LOC   | "BRUSSELS", "Britain", "Germany"                              |
| MISC  | "British", "EU-wide", "German"                                |
| ORG   | "European Union", "EU", "European Commission"                 |
| PER   | "Nikolaus van der Pas", "Peter Blackburn", "Werner Zwingmann" |

## Evaluation

### Metrics
| Label   | Precision | Recall | F1     |
|:--------|:----------|:-------|:-------|
| **all** | 0.9156    | 0.9263 | 0.9210 |
| LOC     | 0.9327    | 0.9394 | 0.9361 |
| MISC    | 0.7973    | 0.8462 | 0.8210 |
| ORG     | 0.8987    | 0.9133 | 0.9059 |
| PER     | 0.9706    | 0.9610 | 0.9658 |

## Uses

### Direct Use for Inference

```python
from span_marker import SpanMarkerModel

# Download from the 🤗 Hub
model = SpanMarkerModel.from_pretrained("supreethrao/instructNER_conll03_xl")
# Run inference
entities = model.predict("Dong Jiong (China) beat Thomas Stuer-Lauridsen (Denmark) 15-10 15-6")
```

### Downstream Use
You can finetune this model on your own dataset.

<details><summary>Click to expand</summary>

```python
from span_marker import SpanMarkerModel, Trainer

# Download from the 🤗 Hub
model = SpanMarkerModel.from_pretrained("supreethrao/instructNER_conll03_xl")

# Specify a Dataset with "tokens" and "ner_tag" columns
dataset = load_dataset("conll2003") # For example CoNLL2003

# Initialize a Trainer using the pretrained model & dataset
trainer = Trainer(
    model=model,
    train_dataset=dataset["train"],
    eval_dataset=dataset["validation"],
)
trainer.train()
trainer.save_model("supreethrao/instructNER_conll03_xl-finetuned")
```
</details>

<!--
### Out-of-Scope Use

*List how the model may foreseeably be misused and address what users ought not to do with the model.*
-->

<!--
## Bias, Risks and Limitations

*What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.*
-->

<!--
### Recommendations

*What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.*
-->

## Training Details

### Training Set Metrics
| Training set          | Min | Median  | Max |
|:----------------------|:----|:--------|:----|
| Sentence length       | 1   | 14.5019 | 113 |
| Entities per sentence | 0   | 1.6736  | 20  |

### Training Hyperparameters
- learning_rate: 5e-05
- train_batch_size: 16
- eval_batch_size: 16
- seed: 42
- distributed_type: multi-GPU
- num_devices: 2
- total_train_batch_size: 32
- total_eval_batch_size: 32
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: linear
- lr_scheduler_warmup_ratio: 0.1
- num_epochs: 3
- mixed_precision_training: Native AMP

### Framework Versions
- Python: 3.10.13
- SpanMarker: 1.5.0
- Transformers: 4.35.2
- PyTorch: 2.1.1
- Datasets: 2.15.0
- Tokenizers: 0.15.0

## Citation

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

<!--
## Glossary

*Clearly define terms in order to be accessible across audiences.*
-->

<!--
## Model Card Authors

*Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.*
-->

<!--
## Model Card Contact

*Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.*
-->
{"library_name": "span-marker", "tags": ["span-marker", "token-classification", "ner", "named-entity-recognition", "generated_from_span_marker_trainer"], "datasets": ["conll2003"], "metrics": ["precision", "recall", "f1"], "widget": [{"text": "New Zealand Prime Minister Jim Bolger, emerging from coalition talks with the nationalist New Zealand First party on Friday afternoon, said National and NZ First would meet again on Sunday."}, {"text": "A police spokesman said two youths believed to be supporters of President Nelson Mandela's African National Congress (ANC) had been killed when unknown gunmen opened fire at the rural settlement of Izingolweni on KwaZulu-Natal province's south coast on Thursday night."}, {"text": "Japan's Economic Planning Agency has not changed its view that the economy is gradually recovering, despite relatively weak gross domestic product figures released on Tuesday, EPA Vice Minister Shimpei Nukaya told reporters on Friday."}, {"text": "Cuttitta, who trainer George Coste said was certain to play on Saturday week, was named in a 21-man squad lacking only two of the team beaten 54-21 by England at Twickenham last month."}, {"text": "Dong Jiong (China) beat Thomas Stuer-Lauridsen (Denmark) 15-10 15-6"}], "pipeline_tag": "token-classification", "model-index": [{"name": "SpanMarker", "results": [{"task": {"type": "token-classification", "name": "Named Entity Recognition"}, "dataset": {"name": "Unknown", "type": "conll2003", "split": "test"}, "metrics": [{"type": "f1", "value": 0.9209646189051223, "name": "F1"}, {"type": "precision", "value": 0.9156457822891144, "name": "Precision"}, {"type": "recall", "value": 0.9263456090651558, "name": "Recall"}]}]}]}
span-marker tensorboard safetensors token-classification ner named-entity-recognition generated_from_span_marker_trainer dataset:conll2003 model-index region:us