Instructions to use tner/roberta-base-tweetner7-continuous with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use tner/roberta-base-tweetner7-continuous with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="tner/roberta-base-tweetner7-continuous")# Load model directly from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("tner/roberta-base-tweetner7-continuous") model = AutoModelForTokenClassification.from_pretrained("tner/roberta-base-tweetner7-continuous") - Notebooks
- Google Colab
- Kaggle
| datasets: | |
| - tner/tweetner7 | |
| metrics: | |
| - f1 | |
| - precision | |
| - recall | |
| model-index: | |
| - name: tner/roberta-base-tweetner7-continuous | |
| results: | |
| - task: | |
| name: Token Classification | |
| type: token-classification | |
| dataset: | |
| name: tner/tweetner7 | |
| type: tner/tweetner7 | |
| args: tner/tweetner7 | |
| metrics: | |
| - name: F1 (test_2021) | |
| type: f1 | |
| value: 0.6547126972113873 | |
| - name: Precision (test_2021) | |
| type: precision | |
| value: 0.6592801031773947 | |
| - name: Recall (test_2021) | |
| type: recall | |
| value: 0.6502081406105458 | |
| - name: Macro F1 (test_2021) | |
| type: f1_macro | |
| value: 0.6000787312274737 | |
| - name: Macro Precision (test_2021) | |
| type: precision_macro | |
| value: 0.603865779286349 | |
| - name: Macro Recall (test_2021) | |
| type: recall_macro | |
| value: 0.5992466120658141 | |
| - name: Entity Span F1 (test_2021) | |
| type: f1_entity_span | |
| value: 0.7809734513274336 | |
| - name: Entity Span Precision (test_2020) | |
| type: precision_entity_span | |
| value: 0.7863758940086762 | |
| - name: Entity Span Recall (test_2021) | |
| type: recall_entity_span | |
| value: 0.7756447322770903 | |
| - name: F1 (test_2020) | |
| type: f1 | |
| value: 0.651460361613352 | |
| - name: Precision (test_2020) | |
| type: precision | |
| value: 0.7020383693045563 | |
| - name: Recall (test_2020) | |
| type: recall | |
| value: 0.6076803321224702 | |
| - name: Macro F1 (test_2020) | |
| type: f1_macro | |
| value: 0.6081745135588633 | |
| - name: Macro Precision (test_2020) | |
| type: precision_macro | |
| value: 0.6574828031156369 | |
| - name: Macro Recall (test_2020) | |
| type: recall_macro | |
| value: 0.5706180236424009 | |
| - name: Entity Span F1 (test_2020) | |
| type: f1_entity_span | |
| value: 0.7504867872044506 | |
| - name: Entity Span Precision (test_2020) | |
| type: precision_entity_span | |
| value: 0.8087529976019184 | |
| - name: Entity Span Recall (test_2020) | |
| type: recall_entity_span | |
| value: 0.7000518941359626 | |
| pipeline_tag: token-classification | |
| widget: | |
| - text: "Get the all-analog Classic Vinyl Edition of `Takin' Off` Album from {@herbiehancock@} via {@bluenoterecords@} link below: {{URL}}" | |
| example_title: "NER Example 1" | |
| # tner/roberta-base-tweetner7-continuous | |
| This model is a fine-tuned version of [tner/roberta-base-tweetner-2020](https://huggingface.co/tner/roberta-base-tweetner-2020) on the | |
| [tner/tweetner7](https://huggingface.co/datasets/tner/tweetner7) dataset (`train_2021` split). The model is first fine-tuned on `train_2020`, and then continuously fine-tuned on `train_2021`. | |
| Model fine-tuning is done via [T-NER](https://github.com/asahi417/tner)'s hyper-parameter search (see the repository | |
| for more detail). It achieves the following results on the test set of 2021: | |
| - F1 (micro): 0.6547126972113873 | |
| - Precision (micro): 0.6592801031773947 | |
| - Recall (micro): 0.6502081406105458 | |
| - F1 (macro): 0.6000787312274737 | |
| - Precision (macro): 0.603865779286349 | |
| - Recall (macro): 0.5992466120658141 | |
| The per-entity breakdown of the F1 score on the test set are below: | |
| - corporation: 0.509673852957435 | |
| - creative_work: 0.41677588466579296 | |
| - event: 0.4675062972292191 | |
| - group: 0.6152256286600069 | |
| - location: 0.6798159105851413 | |
| - person: 0.8448868778280542 | |
| - product: 0.6666666666666667 | |
| For F1 scores, the confidence interval is obtained by bootstrap as below: | |
| - F1 (micro): | |
| - 90%: [0.6458722707634147, 0.6637540527089854] | |
| - 95%: [0.6443720180740024, 0.6654476640585366] | |
| - F1 (macro): | |
| - 90%: [0.6458722707634147, 0.6637540527089854] | |
| - 95%: [0.6443720180740024, 0.6654476640585366] | |
| Full evaluation can be found at [metric file of NER](https://huggingface.co/tner/roberta-base-tweetner7-continuous/raw/main/eval/metric.json) | |
| and [metric file of entity span](https://huggingface.co/tner/roberta-base-tweetner7-continuous/raw/main/eval/metric_span.json). | |
| ### Usage | |
| This model can be used through the [tner library](https://github.com/asahi417/tner). Install the library via pip. | |
| ```shell | |
| pip install tner | |
| ``` | |
| [TweetNER7](https://huggingface.co/datasets/tner/tweetner7) pre-processed tweets where the account name and URLs are | |
| converted into special formats (see the dataset page for more detail), so we process tweets accordingly and then run the model prediction as below. | |
| ```python | |
| import re | |
| from urlextract import URLExtract | |
| from tner import TransformersNER | |
| extractor = URLExtract() | |
| def format_tweet(tweet): | |
| # mask web urls | |
| urls = extractor.find_urls(tweet) | |
| for url in urls: | |
| tweet = tweet.replace(url, "{{URL}}") | |
| # format twitter account | |
| tweet = re.sub(r"\b(\s*)(@[\S]+)\b", r'\1{\2@}', tweet) | |
| return tweet | |
| text = "Get the all-analog Classic Vinyl Edition of `Takin' Off` Album from @herbiehancock via @bluenoterecords link below: http://bluenote.lnk.to/AlbumOfTheWeek" | |
| text_format = format_tweet(text) | |
| model = TransformersNER("tner/roberta-base-tweetner7-continuous") | |
| model.predict([text_format]) | |
| ``` | |
| It can be used via transformers library but it is not recommended as CRF layer is not supported at the moment. | |
| ### Training hyperparameters | |
| The following hyperparameters were used during training: | |
| - dataset: ['tner/tweetner7'] | |
| - dataset_split: train_2021 | |
| - dataset_name: None | |
| - local_dataset: None | |
| - model: tner/roberta-base-tweetner-2020 | |
| - crf: True | |
| - max_length: 128 | |
| - epoch: 30 | |
| - batch_size: 32 | |
| - lr: 1e-06 | |
| - random_seed: 0 | |
| - gradient_accumulation_steps: 1 | |
| - weight_decay: 1e-07 | |
| - lr_warmup_step_ratio: 0.15 | |
| - max_grad_norm: 1 | |
| The full configuration can be found at [fine-tuning parameter file](https://huggingface.co/tner/roberta-base-tweetner7-continuous/raw/main/trainer_config.json). | |
| ### Reference | |
| If you use the model, please cite T-NER paper and TweetNER7 paper. | |
| - T-NER | |
| ``` | |
| @inproceedings{ushio-camacho-collados-2021-ner, | |
| title = "{T}-{NER}: An All-Round Python Library for Transformer-based Named Entity Recognition", | |
| author = "Ushio, Asahi and | |
| Camacho-Collados, Jose", | |
| booktitle = "Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations", | |
| month = apr, | |
| year = "2021", | |
| address = "Online", | |
| publisher = "Association for Computational Linguistics", | |
| url = "https://aclanthology.org/2021.eacl-demos.7", | |
| doi = "10.18653/v1/2021.eacl-demos.7", | |
| pages = "53--62", | |
| abstract = "Language model (LM) pretraining has led to consistent improvements in many NLP downstream tasks, including named entity recognition (NER). In this paper, we present T-NER (Transformer-based Named Entity Recognition), a Python library for NER LM finetuning. In addition to its practical utility, T-NER facilitates the study and investigation of the cross-domain and cross-lingual generalization ability of LMs finetuned on NER. Our library also provides a web app where users can get model predictions interactively for arbitrary text, which facilitates qualitative model evaluation for non-expert programmers. We show the potential of the library by compiling nine public NER datasets into a unified format and evaluating the cross-domain and cross- lingual performance across the datasets. The results from our initial experiments show that in-domain performance is generally competitive across datasets. However, cross-domain generalization is challenging even with a large pretrained LM, which has nevertheless capacity to learn domain-specific features if fine- tuned on a combined dataset. To facilitate future research, we also release all our LM checkpoints via the Hugging Face model hub.", | |
| } | |
| ``` | |
| - TweetNER7 | |
| ``` | |
| @inproceedings{ushio-etal-2022-tweet, | |
| title = "{N}amed {E}ntity {R}ecognition in {T}witter: {A} {D}ataset and {A}nalysis on {S}hort-{T}erm {T}emporal {S}hifts", | |
| author = "Ushio, Asahi and | |
| Neves, Leonardo and | |
| Silva, Vitor and | |
| Barbieri, Francesco. and | |
| Camacho-Collados, Jose", | |
| booktitle = "The 2nd Conference of the Asia-Pacific Chapter of the Association for Computational Linguistics and the 12th International Joint Conference on Natural Language Processing", | |
| month = nov, | |
| year = "2022", | |
| address = "Online", | |
| publisher = "Association for Computational Linguistics", | |
| } | |
| ``` | |