NLP-progress
Repository to track the progress in Natural Language Processing (NLP), including the datasets and the current state-of-the-art for the most common NLP tasks.
Top Related Projects
🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
💫 Industrial-strength Natural Language Processing (NLP) in Python
Facebook AI Research Sequence-to-Sequence Toolkit written in Python.
An open-source NLP research library, built on PyTorch.
A very simple framework for state-of-the-art Natural Language Processing (NLP)
Quick Overview
NLP-progress is a GitHub repository that tracks the progress in Natural Language Processing (NLP), including state-of-the-art (SOTA) results for various NLP tasks. It serves as a comprehensive resource for researchers and practitioners to stay updated on the latest advancements in the field.
Pros
- Provides a centralized location for tracking SOTA results across numerous NLP tasks
- Regularly updated with contributions from the community
- Includes links to papers, code implementations, and datasets for each task
- Offers a standardized format for presenting results, making comparisons easier
Cons
- May not always reflect the absolute latest results due to the fast-paced nature of NLP research
- Relies on community contributions, which can lead to inconsistencies in coverage across different tasks
- Does not provide in-depth analysis or comparisons of different approaches
- Some tasks or subtasks may be underrepresented or missing
Note: As this is not a code library, the code example and quick start sections have been omitted.
Competitor Comparisons
🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
Pros of transformers
- Provides ready-to-use implementations of state-of-the-art NLP models
- Offers a unified API for various NLP tasks and model architectures
- Includes extensive documentation and examples for easy integration
Cons of transformers
- Focuses primarily on transformer-based models, limiting coverage of other architectures
- May have a steeper learning curve for beginners due to its comprehensive nature
- Requires more computational resources to run and experiment with models
Code comparison
NLP-progress typically provides dataset information and benchmark results:
dataset = load_dataset("squad")
results = evaluate_model(model, dataset)
print(f"F1 Score: {results['f1']}")
transformers offers direct model implementation and usage:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
model = AutoModelForQuestionAnswering.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
inputs = tokenizer("What is NLP?", "NLP stands for Natural Language Processing.", return_tensors="pt")
outputs = model(**inputs)
💫 Industrial-strength Natural Language Processing (NLP) in Python
Pros of spaCy
- Ready-to-use library with pre-trained models for various NLP tasks
- Efficient and optimized for production environments
- Extensive documentation and community support
Cons of spaCy
- Limited to specific NLP tasks and languages
- Less flexibility for customization compared to a comprehensive progress tracker
- Requires installation and setup for use
Code Comparison
spaCy:
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for ent in doc.ents:
print(ent.text, ent.label_)
NLP-progress:
### Named Entity Recognition
| Model | F1 | Dataset |
|-----------------|-----|---------|
| Flair embeddings | 93.09 | CoNLL-2003 |
| BERT-Large | 92.8 | CoNLL-2003 |
Summary
spaCy is a practical NLP library for immediate implementation, while NLP-progress serves as a comprehensive tracker of state-of-the-art models across various NLP tasks. spaCy offers ready-to-use functionality but may be limited in scope, whereas NLP-progress provides a broader overview of advancements in the field without direct implementation.
Facebook AI Research Sequence-to-Sequence Toolkit written in Python.
Pros of fairseq
- Provides a complete toolkit for training custom models
- Offers pre-trained models and scripts for easy implementation
- Actively maintained by Facebook AI Research team
Cons of fairseq
- Steeper learning curve for beginners
- Focused primarily on sequence modeling tasks
- Requires more computational resources for training
Code comparison
NLP-progress:
# Machine Translation
## English-French
| Model | BLEU | Paper / Source | Code |
| --- | --- | --- | --- |
| Transformer Big + BT | 45.6 | [Edunov et al. (2018)](https://arxiv.org/abs/1808.09381) | [fairseq](https://github.com/pytorch/fairseq) |
fairseq:
from fairseq.models.transformer import TransformerModel
en2de = TransformerModel.from_pretrained(
'/path/to/checkpoints',
checkpoint_file='checkpoint_best.pt',
data_name_or_path='data-bin/wmt16_en_de_bpe32k'
)
en2de.translate('Hello world!')
NLP-progress serves as a comprehensive repository tracking the progress in Natural Language Processing, providing a curated list of state-of-the-art results for various NLP tasks. It's an excellent resource for researchers and practitioners to stay updated on the latest advancements.
fairseq, on the other hand, is a powerful sequence modeling toolkit that allows users to train custom models and utilize pre-trained ones. It's more hands-on and practical for those looking to implement and experiment with different NLP models.
An open-source NLP research library, built on PyTorch.
Pros of AllenNLP
- Comprehensive NLP toolkit with ready-to-use models and components
- Extensive documentation and tutorials for easy adoption
- Active development and regular updates from the Allen Institute for AI
Cons of AllenNLP
- Focused on implementation rather than tracking state-of-the-art progress
- Steeper learning curve for beginners due to its comprehensive nature
- Limited to PyTorch as the underlying framework
Code Comparison
AllenNLP example:
from allennlp.predictors.predictor import Predictor
predictor = Predictor.from_path("https://storage.googleapis.com/allennlp-public-models/bert-base-srl-2020.03.24.tar.gz")
predictor.predict(
sentence="Did Uriah honestly think he could beat the game in under three hours?"
)
NLP-progress doesn't provide code examples as it's primarily a curated list of state-of-the-art results and papers for various NLP tasks.
Summary
AllenNLP is a powerful toolkit for implementing NLP models, while NLP-progress serves as a comprehensive resource for tracking advancements in the field. AllenNLP offers practical tools and implementations, whereas NLP-progress provides a broader overview of the latest research and benchmarks across various NLP tasks.
A very simple framework for state-of-the-art Natural Language Processing (NLP)
Pros of flair
- Provides a complete NLP framework with pre-trained models
- Offers easy-to-use APIs for various NLP tasks
- Includes built-in support for multiple languages
Cons of flair
- Limited to specific NLP tasks and models
- May not cover as wide a range of NLP topics as NLP-progress
- Requires more setup and dependencies for use
Code Comparison
NLP-progress is primarily a documentation repository, so it doesn't contain executable code. However, flair provides practical code examples:
from flair.data import Sentence
from flair.models import SequenceTagger
# Load tagger and create sentence
tagger = SequenceTagger.load('ner')
sentence = Sentence('George Washington went to Washington.')
# Predict NER tags
tagger.predict(sentence)
# Print predicted NER tags
print(sentence.to_tagged_string())
Summary
While NLP-progress serves as a comprehensive resource for tracking advancements in NLP tasks, flair offers a practical framework for implementing NLP solutions. NLP-progress is ideal for researchers and those seeking an overview of the field, while flair is better suited for developers looking to integrate NLP capabilities into their projects quickly.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Tracking Progress in Natural Language Processing
Table of contents
English
- Automatic speech recognition
- CCG
- Common sense
- Constituency parsing
- Coreference resolution
- Data-to-Text Generation
- Dependency parsing
- Dialogue
- Domain adaptation
- Entity linking
- Grammatical error correction
- Information extraction
- Intent Detection and Slot Filling
- Keyphrase Extraction and Generation
- Language modeling
- Lexical normalization
- Machine translation
- Missing elements
- Multi-task learning
- Multi-modal
- Named entity recognition
- Natural language inference
- Part-of-speech tagging
- Paraphrase Generation
- Question answering
- Relation prediction
- Relationship extraction
- Semantic textual similarity
- Semantic parsing
- Semantic role labeling
- Sentiment analysis
- Shallow syntax
- Simplification
- Stance detection
- Summarization
- Taxonomy learning
- Temporal processing
- Text classification
- Word sense disambiguation
Vietnamese
- Dependency parsing
- Intent detection and Slot filling
- Machine translation
- Named entity recognition
- Part-of-speech tagging
- Semantic parsing
- Word segmentation
Hindi
Chinese
For more tasks, datasets and results in Chinese, check out the Chinese NLP website.
French
Russian
Spanish
Portuguese
Korean
Nepali
Bengali
Persian
Turkish
German
Arabic
This document aims to track the progress in Natural Language Processing (NLP) and give an overview of the state-of-the-art (SOTA) across the most common NLP tasks and their corresponding datasets.
It aims to cover both traditional and core NLP tasks such as dependency parsing and part-of-speech tagging as well as more recent ones such as reading comprehension and natural language inference. The main objective is to provide the reader with a quick overview of benchmark datasets and the state-of-the-art for their task of interest, which serves as a stepping stone for further research. To this end, if there is a place where results for a task are already published and regularly maintained, such as a public leaderboard, the reader will be pointed there.
If you want to find this document again in the future, just go to nlpprogress.com
or nlpsota.com
in your browser.
Contributing
Guidelines
Results Results reported in published papers are preferred; an exception may be made for influential preprints.
Datasets Datasets should have been used for evaluation in at least one published paper besides the one that introduced the dataset.
Code We recommend to add a link to an implementation
if available. You can add a Code
column (see below) to the table if it does not exist.
In the Code
column, indicate an official implementation with Official.
If an unofficial implementation is available, use Link (see below).
If no implementation is available, you can leave the cell empty.
Adding a new result
If you would like to add a new result, you can just click on the small edit button in the top-right corner of the file for the respective task (see below).
This allows you to edit the file in Markdown. Simply add a row to the corresponding table in the same format. Make sure that the table stays sorted (with the best result on top). After you've made your change, make sure that the table still looks ok by clicking on the "Preview changes" tab at the top of the page. If everything looks good, go to the bottom of the page, where you see the below form.
Add a name for your proposed change, an optional description, indicate that you would like to "Create a new branch for this commit and start a pull request", and click on "Propose file change".
Adding a new dataset or task
For adding a new dataset or task, you can also follow the steps above. Alternatively, you can fork the repository. In both cases, follow the steps below:
- If your task is completely new, create a new file and link to it in the table of contents above.
- If not, add your task or dataset to the respective section of the corresponding file (in alphabetical order).
- Briefly describe the dataset/task and include relevant references.
- Describe the evaluation setting and evaluation metric.
- Show how an annotated example of the dataset/task looks like.
- Add a download link if available.
- Copy the below table and fill in at least two results (including the state-of-the-art)
for your dataset/task (change Score to the metric of your dataset). If your dataset/task
has multiple metrics, add them to the right of
Score
. - Submit your change as a pull request.
Model | Score | Paper / Source | Code |
---|---|---|---|
Wish list
These are tasks and datasets that are still missing:
- Bilingual dictionary induction
- Discourse parsing
- Keyphrase extraction
- Knowledge base population (KBP)
- More dialogue tasks
- Semi-supervised learning
- Frame-semantic parsing (FrameNet full-sentence analysis)
Exporting into a structured format
You can extract all the data into a structured, machine-readable JSON format with parsed tasks, descriptions and SOTA tables.
The instructions are in structured/README.md.
Instructions for building the site locally
Instructions for building the website locally using Jekyll can be found here.
Top Related Projects
🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
💫 Industrial-strength Natural Language Processing (NLP) in Python
Facebook AI Research Sequence-to-Sequence Toolkit written in Python.
An open-source NLP research library, built on PyTorch.
A very simple framework for state-of-the-art Natural Language Processing (NLP)
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot