Natural Language Processing

ETH Zürich, Spring 2021: Course catalog

Course Description

This course presents topics in natural language processing with an emphasis on modern techniques, primarily focusing on statistical and deep learning approaches. The course provides an overview of the primary areas of research in language processing as well as a detailed exploration of the models and techniques used both in research and in commercial natural language processing systems.

The objective of the course is to learn the basic concepts in the statistical processing of natural languages. The course will be project-oriented so that the students can also gain hands-on experience with state-of-the-art tools and techniques.


Marks for the course will be determined by the following formula:
* 70% Final Exam
* 30% Course Project/Assignment

Lectures: Wed 12-14h Zoom (recurring link sent at start of semester). Recordings can be found in the (password protected) course Polybox.

Discussion Sections: Thurs 17-18h; Fri 11-12h Zoom (link to be distributed day of section).

Textbooks: Introduction to Natural Language Processing (Eisenstein)
      Deep Learning (Goodfellow, Bengio and Courville)


18.02   Class website is online!
18.02   We are using piazza as our discussion forum. Please enroll here.
24.02   First lecture.
03.03Project guidelines released.
04.03   First discussion section.
31.03   Project proposals due.
01.04Assignment Part 1 released.
21.05Assignment Part 2 released.


Week Date   Topic Slides   Readings Supplementary Material Exercises
1 24.02.21 Introduction to Natural Language Lecture 1 Eisenstein Ch. 1
2 03.03.21 Backpropagation Lecture 2 Goodfellow, Bengio and Courville Ch. 6.5 Chris Olah's Blog
Justin Domke’s Notes
Tim Vieira’s Blog
Moritz Hardt’s Notes
Bauer (1974)
Baur and Strassen (1983)
Griewank and Walter (2008)
Eisner (2016)
Backpropagation Proof
Computation Graph for MLP
Computation Graph Example
3 10.03.21 Log-Linear Modeling---Meet the Softmax Lecture 3 Eisenstein Ch. 2 Ferraro and Eisner (2013)
Jason Eisner’s list of further resources on log-linear modeling
Week 3
4 17.03.21 Sentiment Analysis with Multi-layer Perceptrons Lecture 4 Eisenstein Ch. 3 and Ch. 4
Goodfellow, Bengio and Courville Ch. 6
Cybenko (1989)
Hanin and Selke (2018)
Pang and Lee (2008)
Iyyer et al. (2015)
word2vec Parameter Learning Explained
word2vec Explained
Week 4
5 24.03.21 Language Modeling with *n*-grams and LSTMs Lecture 5 Eisenstein Ch. 6
Goodfellow, Bengio and Courville Ch. 10
Good Tutorial on n-gram smoothing
Good–Turing Smoothing
Kneser and Ney (1995)
Bengio et al. (2003)
Mikolov et al. (2010)
Week 5
6 31.03.21 Part-of-Speech Tagging with CRFs Lecture 6 Eisenstein Ch. 7 and 8 Tim Vieira's Blog
McCallum et al. (2000)
Lafferty et al. (2001)
Sutton and McCallum (2011)
Koller and Friedman (2009)
Week 6
7 14.4.21 Context-Free Parsing with CKY Lecture 7 Eisenstein Ch. 10 The Inside-Outside Algorithm
Jason Eisner’s Slides
Kasami (1966)
Younger (1967)
Cocke and Schwartz (1970)
Week 7
Coding Exercise
Coding Solutions
- 21.4.21 Lecture cancelled
8 28.4.21 Dependency Parsing with the Matrix-Tree Theorem Lecture 8 Eisenstein Ch. 11 Koo et al. (2007)
Smith and Smith (2007)
McDonald and Satta (2007)
McDonald, Kübler and Nivre (2009)
Week 8
9 5.5.21 Semantic Parsing with CCGs Lecture 9 Eisenstein Ch. 9.3 and 12 Weir and Joshi (1988)
Kuhlmann and Satta (2014)
Mark Steedman's CCG slides
Week 9
10 12.5.21 Transliteration with WFSTs Lecture 10 Eisenstein Ch. 9 Knight and Graehl (1998)
Mohri, Pereira and Riley (2008)
Week 10
11 19.5.21 Machine Translation with Transformers Lecture 11 Eisenstein Ch. 18 Neural Machine Translation
Vaswani et al. (2017)
Rush (2018)
Week 11
12 26.5.21 Axes of Modeling Lecture 12 Review: Eisenstein Ch. 2
Goodfellow, Bengio and Courville Ch. 5 and 11
Week 12
13 2.6.21 Bias and Fairness in NLP Lecture 13 Bolukabasi et al. (2016)
Gonen and Goldberg (2019)
Hall Maudslay et al. (2019)
Vargas and Cotterell (2020)
A Course in Machine Learning Chapter 8

Weekly Exercises

We will release exercises every week that cover material in the next lecture (e.g., exercises released on Sunday night cover material in the following Wednesday’s lecture). These exercises are intended to give you the opportunity to test your understanding of the course material. They are not for a grade, nor will the TAs be able to offer individual feedback on your solutions. If you have questions regarding the exercises, we recommend bringing them to the discussion section that week as the TAs will walk through related problems. Solutions will be released in the following week.

Course Project/Assignment

Every student has the option of completing either a research project or a structured assignment. This work will be worth 30% of your final mark. Both will be due on July 15th.

The research project is an open-ended project where students reimplement an existing research paper or perform novel research if they are so inclined. Projects can be completed in groups of up to 4; feel free to use Piazza to reach out to other students in the course. We will require you to write a 1-page project proposal where we will give you feedback on the idea (due March 31st). Submission can be done on the course Moodle page (one submission per team please). We will also require a progress report (due May 31st). Please send both the progress and final reports (including your recorded presentation) directly to your assigned TA. More details can be found in the project guidelines.

In the assignment, some of the questions will be more theoretical and resemble the questions you will see on the final exam. However, there will also be a substantial coding portion, which would not look like the exam questions. For instance, we may ask you to implement a recurrent neural dependency parser. Assignments must be completed individually, although you may discuss the assignment with other students. If you choose to do so, you must specify with whom you collaborated in your submission (see template below). We will release the assignment in two waves, corresponding to when course material is covered. The second portion of the assignment will be released ~May 20th. Submission: Upload a zip file (with a single pdf containing all written answers to both parts of the assignment and the colab notebooks) to the assignment submission task on Moodle. For the writeup portion, we will only process a single pdf: if you include multiple pdfs in your submission, only one will be graded.



You can ask questions on piazza. Please post questions there, so others can see them and share in the discussion. If you have questions which are not of general interest, please don’t hesitate to contact us directly, i.e., post a private note on piazza or email Ryan with Clara cc-ed.