Skip to content

📖 A curated list of resources dedicated to Natural Language Processing (NLP)

License

Notifications You must be signed in to change notification settings

TeamElixir/awesome-nlp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

awesome-nlp

Awesome

A curated list of resources dedicated to Natural Language Processing

Maintainers - Keon, Martin, Nirant

Please read the contribution guidelines before contributing.

Please feel free to create pull requests.

Contents

Tutorials

Back to Top

Reading Content

General Machine Learning

  • AI Playbook is a brief set of pieces to introduce machine learning and other advancements to technical as well as non-technical audience. Written by the amazing people over at a16z - Andreessen Horowitz this is a great link to forward to your managers or content for your presentations
  • Machine Learning Blog by Brian McFee

Introductions and Guides to NLP

Specialized Blogs

Videos and Online Courses

Deep Learning and NLP

Word embeddings, RNNs, LSTMs and CNNs for Natural Language Processing | Back to Top

Classical NLP

Bayesian, statistics and Linguistics approaches for Natural Language Processing | Back to Top

Libraries

Back to Top

  • Node.js and Javascript - Node.js Libaries for NLP | Back to Top

    • Twitter-text - A JavaScript implementation of Twitter's text processing library
    • Knwl.js - A Natural Language Processor in JS
    • Retext - Extensible system for analyzing and manipulating natural language
    • NLP Compromise - Natural Language processing in the browser
    • Natural - general natural language facilities for node
  • Python - Python NLP Libraries | Back to Top

    • Scikit-learn: Machine learning in Python
    • Natural Language Toolkit (NLTK)
    • Pattern - A web mining module for the Python programming language. It has tools for natural language processing, machine learning, among others.
    • TextBlob - Providing a consistent API for diving into common natural language processing (NLP) tasks. Stands on the giant shoulders of NLTK and Pattern, and plays nicely with both.
    • YAlign - A sentence aligner, a friendly tool for extracting parallel sentences from comparable corpora.
    • jieba - Chinese Words Segmentation Utilities.
    • SnowNLP - A library for processing Chinese text.
    • Rosetta - Text processing tools and wrappers (e.g. Vowpal Wabbit)
    • BLLIP Parser - Python bindings for the BLLIP Natural Language Parser (also known as the Charniak-Johnson parser)
    • PyNLPl - Python Natural Language Processing Library. General purpose NLP library for Python. Also contains some specific modules for parsing common NLP formats, most notably for FoLiA, but also ARPA language models, Moses phrasetables, GIZA++ alignments.
    • python-ucto - Python binding to ucto (a unicode-aware rule-based tokenizer for various languages)
    • Parserator - A toolkit for making domain-specific probabilistic parsers
    • python-frog - Python binding to Frog, an NLP suite for Dutch. (pos tagging, lemmatisation, dependency parsing, NER)
    • python-zpar - Python bindings for ZPar, a statistical part-of-speech-tagger, constiuency parser, and dependency parser for English.
    • colibri-core - Python binding to C++ library for extracting and working with with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
    • spaCy - Industrial strength NLP with Python and Cython.
    • textacy - Higher level NLP built on spaCy
    • PyStanfordDependencies - Python interface for converting Penn Treebank trees to Stanford Dependencies.
    • gensim - Python library to conduct unsupervised semantic modelling from plain text
    • scattertext - Python library to produce d3 visualizations of how language differs between corpora.
    • CogComp-NlPy - Light-weight Python NLP annotators.
    • PyThaiNLP - Thai NLP in Python Package.
    • jPTDP - A toolkit for joint part-of-speech (POS) tagging and dependency parsing. jPTDP provides pre-trained models for 40+ languages.
    • CLTK: The Classical Language Toolkit is a Python library and collection of texts for doing NLP in ancient languages.
    • pymorphy2 - a good pos-tagger for Russian
    • BigARTM - a fast library for topic modelling
    • AllenNLP - An NLP research library, built on PyTorch, for developing state-of-the-art deep learning models on a wide variety of linguistic tasks.
  • C++ - C++ Libraries | Back to Top

    • MIT Information Extraction Toolkit - C, C++, and Python tools for named entity recognition and relation extraction
    • CRF++ - Open source implementation of Conditional Random Fields (CRFs) for segmenting/labeling sequential data & other Natural Language Processing tasks.
    • CRFsuite - CRFsuite is an implementation of Conditional Random Fields (CRFs) for labeling sequential data.
    • BLLIP Parser - BLLIP Natural Language Parser (also known as the Charniak-Johnson parser)
    • colibri-core - C++ library, command line tools, and Python binding for extracting and working with basic linguistic constructions such as n-grams and skipgrams in a quick and memory-efficient way.
    • ucto - Unicode-aware regular-expression based tokenizer for various languages. Tool and C++ library. Supports FoLiA format.
    • libfolia - C++ library for the FoLiA format
    • frog - Memory-based NLP suite developed for Dutch: PoS tagger, lemmatiser, dependency parser, NER, shallow parser, morphological analyzer.
    • MeTA - MeTA : ModErn Text Analysis is a C++ Data Sciences Toolkit that facilitates mining big text data.
    • Mecab (Japanese)
    • Moses
    • StarSpace - a library from Facebook for creating embeddings of word-level, paragraph-level, document-level and for text classification
  • Java - Java NLP Libraries | Back to Top

    • Stanford NLP
    • OpenNLP
    • ClearNLP
    • Word2vec in Java
    • ReVerb Web-Scale Open Information Extraction
    • OpenRegex An efficient and flexible token-based regular expression language and engine.
    • CogcompNLP - Core libraries developed in the U of Illinois' Cognitive Computation Group.
    • MALLET - MAchine Learning for LanguagE Toolkit - package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.
    • RDRPOSTagger - A robust POS tagging toolkit available (in both Java & Python) together with pre-trained models for 40+ languages.
  • Scala - Scala NLP Libraries | Back to Top

    • Saul - Library for developing NLP systems, including built in modules like SRL, POS, etc.
    • ATR4S - Toolkit with state-of-the-art automatic term recognition methods.
    • tm - Implementation of topic modeling based on regularized multilingual PLSA.
    • word2vec-scala - Scala interface to word2vec model; includes operations on vectors like word-distance and word-analogy.
    • Epic - Epic is a high performance statistical parser written in Scala, along with a framework for building complex structured prediction models.
  • R - R NLP Libraries | Back to Top

    • text2vec - Fast vectorization, topic modeling, distances and GloVe word embeddings in R.
    • wordVectors - An R package for creating and exploring word2vec and other word embedding models
    • RMallet - R package to interface with the Java machine learning tool MALLET
    • dfr-browser - Creates d3 visualizations for browsing topic models of text in a web browser.
    • dfrtopics - R package for exploring topic models of text.
    • sentiment_classifier - Sentiment Classification using Word Sense Disambiguation and WordNet Reader
    • jProcessing - Japanese Natural Langauge Processing Libraries, with Japanese sentiment classification
  • Clojure | Back to Top

    • Clojure-openNLP - Natural Language Processing in Clojure (opennlp)
    • Infections-clj - Rails-like inflection library for Clojure and ClojureScript
    • postagga - A library to parse natural language in Clojure and ClojureScript
  • Ruby | Back to Top

  • Rust

    • whatlang — Natural language recognition library based on trigrams

Services

APIs with higher level functionality such as NER, Topic tagging and so on | Back to Top

Techniques

Text Embeddings

Back to Top

Text embeddings allow deep learning to be effective on smaller datasets. These are often first inputs to a deep learning archiectures and most popular way of transfer learning in NLP. Embeddings are simply vectors or a more generically, real valued representations of strings. Word embeddings are considered a great starting point for most deep NLP tasks.

The most popular names in word embeddings are word2vec by Google (Mikolov) and GloVe by Stanford (Pennington, Socher and Manning). fastText seems to be a fairly popular for multi-lingual sub-word embeddings.

word2vec

word2vec was introduced by T. Mikolov et al. when he was with Google. Performs well on word similarity and analogy tasks | Back to Top

GloVe

GloVe was introduced by Pennington, Socher, Manning from Stanford in 2014 as a statistical approximation to word embeddings. The word vectors are created by matrix factorizations of word-word co-occurence matrices here | Back to Top

fastText

fastText by Mikolov (from Facebook) supports sub-word embeddings in more than 200 languages. This allows it to work with out of vocabulary words as well. It captures language morphology well. It also supports a supervised classification mechanism | Back to Top

Other Text Embeddings

Back to Top

Thought Vectors

Thought vectors are numeric representations for sentences, paragraphs, and documents. The following papers are listed in order of date published, each one replaces the last as the state of the art in sentiment analysis | Back to Top

Machine Translation

Back to Top

Single Exchange Dialogs

Back to Top

Memory and Attention Models

Back to Top

Most are courtesy andrewt3000/DL4NLP

Natural Language Understanding

Back to Top

Named Entity Recognition

Back to Top

Question Answering and Knowledge Extraction

Back to Top

Text Summarization

Research and Review Articles

Back to Top

Datasets

Back to Top

NLP in Korean

Back to Top

Libraries

  • KoNLPy - A Python package for Korean natural language processing.
  • Mecab (Korean) - A C++ library for NLP in Korean.
  • KoalaNLP - A Scala library for Korean Natural Language Processing.
  • KoNLP -A Korean Natural language processing package in R.

Blogs and Tutorials

Datasets

Credits

Awesome NLP was seeded with curated content from the lot of repositories, some of which are listed below | Back to Top

Back to Top

About

📖 A curated list of resources dedicated to Natural Language Processing (NLP)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published