This blog is about Coursera’s course called Introduction to Natural Language Processing by prof. Radev. I participated in and completed this course in Fall 2016. I will try to summarize my opinions about this course for other researchers here interested in this field.
The course provides the introduction to NLP, it starts with some motivation and basic ideas behind NLP and then proceeds to deal with specific sub-fields such as parsing, part-of-speech tagging etc. The final chapters are addressing advanced tasks like machine translation or text generation. The scope of the course is broad and it deals with practically all the important parts of NLP. However the broadness sometimes causes that the lectures are too shallow and they are not really explaining how things work. This is especially true for advanced topics but it is natural for courses like this when there is no time to dig into details. I was also disappointed that often there are out of date systems presented. The lectures can give you insight what the individual NLP tasks are about, but they don’t give you the state-of-the-art knowledge about how they are being solved these days.
Course is in English and it is officially designed for 12 week long schedule. It consists of 3 parts: lectures, tests and programming assignments. Each week’s lecture is usually 100 minutes long (the speed of video can be increased). The lectures are divided to several sections and the English subtitles are provided so the orientation in material is really easy. Most of the lectures are followed by a multiple choice test with 5 questions. The test is usually easy and you can use the video material to complete it. Last lecture ends with final test consisting of 25 questions. You have to score at least 70% to pass the tests.
There are also 3 programming assignments dealing with dependency parsing, language modelling, part-of-speech tagging and word sense disambiguation. Assignments are in Python language and they are provided with a detailed document describing your job, dataset and also a decent skeleton code to start you up. This code is serving as framework for you, it gives you the structure of implemented algorithm and it also provides some basic functionality such as input processing or evaluating. In the end you are programming only the interesting parts of the code concerned with the core methods of given task. However it sometimes takes time to understand how the whole thing works. The assigment description can also be somewhat unclear so you can have a problem to find out how to proceed. When you are done with your work, you can run the evaluation script that will measure how good your solution was.
This course is a really good introduction to NLP, it however rarely digs into details of things. You will understand what are the tasks in this field but you won’t really know how to solve them. The tests and assignments are quite easy and they correspond to the beginner’s nature of this course. However the course requires at least some background in machine learning and programming to finish it.