Instructions to use tner/bertweet-base-tweetner7-continuous with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use tner/bertweet-base-tweetner7-continuous with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="tner/bertweet-base-tweetner7-continuous")# Load model directly from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("tner/bertweet-base-tweetner7-continuous") model = AutoModelForTokenClassification.from_pretrained("tner/bertweet-base-tweetner7-continuous") - Notebooks
- Google Colab
- Kaggle
| datasets: | |
| - tner/tweetner7 | |
| metrics: | |
| - f1 | |
| - precision | |
| - recall | |
| model-index: | |
| - name: tner/bertweet-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.6584472230299506 | |
| - name: Precision (test_2021) | |
| type: precision | |
| value: 0.6623376623376623 | |
| - name: Recall (test_2021) | |
| type: recall | |
| value: 0.6546022201665125 | |
| - name: Macro F1 (test_2021) | |
| type: f1_macro | |
| value: 0.6102300887168732 | |
| - name: Macro Precision (test_2021) | |
| type: precision_macro | |
| value: 0.611802506987418 | |
| - name: Macro Recall (test_2021) | |
| type: recall_macro | |
| value: 0.6126461527097806 | |
| - name: Entity Span F1 (test_2021) | |
| type: f1_entity_span | |
| value: 0.7909735954402699 | |
| - name: Entity Span Precision (test_2020) | |
| type: precision_entity_span | |
| value: 0.7956007956007956 | |
| - name: Entity Span Recall (test_2021) | |
| type: recall_entity_span | |
| value: 0.7863999074823639 | |
| - name: F1 (test_2020) | |
| type: f1 | |
| value: 0.6516111264114568 | |
| - name: Precision (test_2020) | |
| type: precision | |
| value: 0.6942488262910798 | |
| - name: Recall (test_2020) | |
| type: recall | |
| value: 0.6139076284379865 | |
| - name: Macro F1 (test_2020) | |
| type: f1_macro | |
| value: 0.6135259272473801 | |
| - name: Macro Precision (test_2020) | |
| type: precision_macro | |
| value: 0.6543224335799225 | |
| - name: Macro Recall (test_2020) | |
| type: recall_macro | |
| value: 0.5830306967374339 | |
| - name: Entity Span F1 (test_2020) | |
| type: f1_entity_span | |
| value: 0.7680440771349863 | |
| - name: Entity Span Precision (test_2020) | |
| type: precision_entity_span | |
| value: 0.8185554903112156 | |
| - name: Entity Span Recall (test_2020) | |
| type: recall_entity_span | |
| value: 0.723404255319149 | |
| 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/bertweet-base-tweetner7-continuous | |
| This model is a fine-tuned version of [tner/bertweet-base-tweetner-2020](https://huggingface.co/tner/bertweet-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.6584472230299506 | |
| - Precision (micro): 0.6623376623376623 | |
| - Recall (micro): 0.6546022201665125 | |
| - F1 (macro): 0.6102300887168732 | |
| - Precision (macro): 0.611802506987418 | |
| - Recall (macro): 0.6126461527097806 | |
| The per-entity breakdown of the F1 score on the test set are below: | |
| - corporation: 0.5185185185185185 | |
| - creative_work: 0.4682686383240912 | |
| - event: 0.49658536585365853 | |
| - group: 0.6117404737384141 | |
| - location: 0.6658081133290406 | |
| - person: 0.8447412353923205 | |
| - product: 0.6659482758620691 | |
| For F1 scores, the confidence interval is obtained by bootstrap as below: | |
| - F1 (micro): | |
| - 90%: [0.6494608590732527, 0.6679885108746003] | |
| - 95%: [0.6476930900555805, 0.6694290853194725] | |
| - F1 (macro): | |
| - 90%: [0.6494608590732527, 0.6679885108746003] | |
| - 95%: [0.6476930900555805, 0.6694290853194725] | |
| Full evaluation can be found at [metric file of NER](https://huggingface.co/tner/bertweet-base-tweetner7-continuous/raw/main/eval/metric.json) | |
| and [metric file of entity span](https://huggingface.co/tner/bertweet-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/bertweet-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/bertweet-base-tweetner-2020 | |
| - crf: True | |
| - max_length: 128 | |
| - epoch: 30 | |
| - batch_size: 32 | |
| - lr: 1e-05 | |
| - random_seed: 0 | |
| - gradient_accumulation_steps: 1 | |
| - weight_decay: 1e-07 | |
| - lr_warmup_step_ratio: 0.3 | |
| - max_grad_norm: 1 | |
| The full configuration can be found at [fine-tuning parameter file](https://huggingface.co/tner/bertweet-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", | |
| } | |
| ``` | |