🚀 tner/twitter-roberta-base-dec2021-tweetner7-random
This model is a fine - tuned version of cardiffnlp/twitter-roberta-base-dec2021 on the tner/tweetner7 dataset (train_random
split). It's designed for token classification, offering a reliable solution for identifying entities in text.
🚀 Quick Start
This model can be used through the tner library. First, install the library via pip:
pip install tner
Since TweetNER7 pre - processes tweets by converting account names and URLs into special formats, we need to process tweets accordingly before running the model prediction.
import re
from urlextract import URLExtract
from tner import TransformersNER
extractor = URLExtract()
def format_tweet(tweet):
urls = extractor.find_urls(tweet)
for url in urls:
tweet = tweet.replace(url, "{{URL}}")
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/twitter-roberta-base-dec2021-tweetner7-random")
model.predict([text_format])
It can be used via the transformers library, but it's not recommended as the CRF layer is not supported at the moment.
✨ Features
- Fine - tuned Model: Based on cardiffnlp/twitter-roberta-base-dec2021, fine - tuned on tner/tweetner7 for better performance in token classification.
- Comprehensive Evaluation: Achieves various F1, precision, and recall scores on the test sets of 2020 and 2021, with per - entity breakdowns and confidence intervals provided.
📦 Installation
Install the tner library via pip:
pip install tner
💻 Usage Examples
Basic Usage
import re
from urlextract import URLExtract
from tner import TransformersNER
extractor = URLExtract()
def format_tweet(tweet):
urls = extractor.find_urls(tweet)
for url in urls:
tweet = tweet.replace(url, "{{URL}}")
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/twitter-roberta-base-dec2021-tweetner7-random")
model.predict([text_format])
📚 Documentation
Model Evaluation
This model achieves the following results on the test set of 2021:
- F1 (micro): 0.6321284238886395
- Precision (micro): 0.6142015706806283
- Recall (micro): 0.6511332099907493
- F1 (macro): 0.583682304736069
- Precision (macro): 0.5654677691354458
- Recall (macro): 0.6047150410746663
The per - entity breakdown of the F1 score on the test set are below:
- corporation: 0.5019685039370079
- creative_work: 0.41401273885350315
- event: 0.4564727108705458
- group: 0.5892444737710327
- location: 0.6486486486486486
- person: 0.8268075031870332
- product: 0.6486215538847118
For F1 scores, the confidence interval is obtained by bootstrap as below:
- F1 (micro):
- 90%: [0.6245116881258609, 0.6411928894306437]
- 95%: [0.6221686986039963, 0.642603475030015]
- F1 (macro):
- 90%: [0.6245116881258609, 0.6411928894306437]
- 95%: [0.6221686986039963, 0.642603475030015]
Full evaluation can be found at metric file of NER and metric file of entity span.
Training Hyperparameters
The following hyperparameters were used during training:
Property |
Details |
Dataset |
['tner/tweetner7'] |
Dataset Split |
train_random |
Dataset Name |
None |
Local Dataset |
None |
Model |
cardiffnlp/twitter-roberta-base-dec2021 |
CRF |
True |
Max Length |
128 |
Epoch |
30 |
Batch Size |
32 |
Learning Rate |
0.0001 |
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.
Reference
If you use the model, please cite T - NER paper and TweetNER7 paper.
@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.",
}
@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",
}