Natural Language Processing

Have you ever wondered how to build a system that automatically translates between languages? Or a system that can understand natural language instructions from a human? This class will cover the fundamentals of mathematical and computational models of language, and the application of these models to key problems in natural language processing.


Course at a Glance

About the Course

Natural language processing (NLP) deals with the application of computational models to text or speech data. Application areas within NLP include automatic (machine) translation between languages; dialogue systems, which allow a human to interact with a machine using natural language; and information extraction, where the goal is to transform unstructured text into structured (database) representations that can be searched and browsed in flexible ways. NLP technologies are having a dramatic impact on the way people interact with computers, on the way people interact with each other through the use of language, and on the way people access the vast amount of linguistic data now in electronic form. From a scientific viewpoint, NLP involves fundamental questions of how to structure formal models (for example statistical models) of natural language phenomena, and of how to design algorithms that implement these models.

In this course you will study mathematical and computational models of language, and the application of these models to key problems in natural language processing. The course has a focus on machine learning methods, which are widely used in modern NLP systems: we will cover formalisms such as hidden Markov models, probabilistic context-free grammars, log-linear models, and statistical models for machine translation. The curriculum closely follows a course currently taught by Professor Collins at Columbia University, and previously taught at MIT.

Course Syllabus

Topics covered include:

1. Language modeling.
2. Hidden Markov models, and tagging problems.
3. Probabilistic context-free grammars, and the parsing problem.
4. Statistical approaches to machine translation.
5. Log-linear models, and their application to NLP problems.
6. Unsupervised and semi-supervised learning in NLP.

Recommended Background

A basic knowledge of probability (e.g., you should be familiar with random variables, independence assumptions, etc.), a basic knowledge of algorithms, and a basic knowledge of calculus (e.g., how to differentiate simple functions). 

Suggested Readings

The course will be largely self-contained, with comprehensive lecture notes posted together with the lectures.

Course Format

The class will consist of lecture videos, which are broken into small chunks, usually between eight and twelve minutes each. Some of these may contain integrated quiz questions. There will also be standalone quizzes that are not part of video lectures, and programming assignments.


  • Will I get a statement of accomplishment after completing this class?

    Yes. Students who successfully complete the class will receive a statement of accomplishment signed by the instructor.

  • How much programming background is needed for the course?

    The class will include programming assignments, so some programming background will be helpful.