Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.

Practical Natural Language Processing

A Comprehensive Guide to Building Real-World NLP Systems

Sowmya Vajjala, Bodhisattwa P. Majumder, Anuj Gupta, Harshit Surana

Endorsed by: Zachary Lipton, Sebastian Ruder, Marc Najork, Monojit Choudhury, Vinayak Hegde, Mengting Wan, Siddharth Sharma, & Ed Harris Foreword by: Julian McAuley

Homepage: Published by O'Reilly Media, 2020

Book Structure


Please note that the code repository is still under development and review.

All the notebooks will be crystalized in the coming months. 

The notebooks have been tested on an ubuntu machine running python 3.6. 

Currently, we are using TF1.x. We will migrate to TF2.x in the coming months.  

✨ A newer version compatible with Ubuntu 23 is being added in pnlp-refactor-ubuntu23.

We thank everyone, especially the educators & universities, for their feedback in pointing out the issues & improving the accessibility of the notebooks.

🚩 Details of the repository roadmap could be found here

Open the repository in Google Colab: Open In Colab

Open the repository in Jupyter nbviewer: Open in nbviewer

Chapterwise folders:

Contributors to Codebase:

Found a Bug?

If the bug is in book text, please enter a errata here:

If the bug is in the codebase: Great! Please read this how can you help us improve the codebase