Course Profile¶
Description¶
This course offers a comprehensive introduction to Natural Language Processing (NLP), focusing on both basic methods and modern techniques. Students will explore essential topics such as preprocessing, feature extraction, and classic algorithms like Logistic Regression and Naive Bayes, used for text classification. Core concepts in language modeling and vector space models will be covered, including Minimum Edit Distance for text similarity.
Later in the course, students will delve into advanced NLP approaches, including word embeddings and sequence models, such as recurrent neural networks (RNNs) and their improvements with attention mechanisms. The course balances theory and practical application, preparing students to build and understand NLP systems in real-world contexts. Towards the end of the course, we will also touch on large language models, prompt engineering, and generative AI.
Learning Objectives¶
By the end of this course, students will be able to:
- Understand the fundamentals of Natural Language Processing (NLP) and its key applications.
- Apply various preprocessing techniques and feature extraction methods to text data.
- Analyze and implement basic models for text classification, such as Logistic Regression and Naive Bayes.
- Understand and utilize advanced NLP techniques, including word embeddings and sequence models.
- Explore the concepts behind large language models, prompt engineering, and generative AI.
Assessment¶
The course is graded based on a written 90-minute exam at the end of the semester. To be admitted to the exam, you need to complete the assignmnets and give a presentation. You can earn bonus points for the exam through contributions to the course repository.
- Exam (graded)
- Assignments (ungraded)
- Presentation (ungraded)
- Contributions (maximum of 5 bonus points for the exam)
Course Language¶
All course materials are provided in English. Lectures will be delivered in German, but can also be conducted in English if we have international students.
Course Format¶
This course will be delivered in a hybrid format, consisting of both in-person and online lectures. Note that in-person lectures will not be streamed, and online lectures will not be recorded.
Prerequisites¶
The following skills are recommended to participate in the course. Let me know if you have any doubts or questions regarding those prerequisites. My goal is to keep the entry barrier as low as possible!
-
Basic Programming Skills
To complete the course, you will need basic programming skills. If you visited an introduction to programming course, you should be good to go.
Info
I tried to design the coding exercises in a way that students with little programming experience can solve them. If you know your basics about object oriented programming, you will be well equipped. Any advanced concpets will be explained during the lecture. In the end, we don't want to bother with advanced programming concepts but get excited with NLP! So don't worry if you just started your programming journey, you are still encouraged to take the course!
-
Basic Python Skills
The code for this lecture is written in Python, so it is definetely an advantage if you have worked with Python before. However, if you are coming from a different language, you should be able to follow along. I tried to keep the language specific parts to a minimum and will provide explanations where necessary.
Tutorial
Microsoft provides a nice beginner course that you can take to get up to speed with Python.
-
Knowledge of the Linux Command Line
Since the course is designed for a Linux development environment, it is recommended to have some basic skills with the Linux command line, i.e. the bash shell.
However, all required commands will be provided in the instructions, so it is not necessary to have extensive Linux command line skills.
Tutorial
Here is a basic bash tutorial which may help if you are new to Bash and the Linux command line.
Info
We use
make
commands to automate the setup process and simplify the commands. You can check out ourMakefile
to see what is actucally executed. If you have not used a Makefile before, check out this guide. -
Basic Knowledge of Git
To participate in the course you need basic Git knowledge, like cloning a repository, commit and push changes, or pull updates.
Since the repository is hosted in GitHub, it is an advantage to be familiar with processes like forking or pull requests.
Tutorial
If you have not worked a lot with Git before, please check out this Git tutorial
If you are new to GitHub (a popular Git hosting service), you might want to check out this module.
Tip
In general, Microsoft Learn offers some great tutorials for all kinds of technologies.
Literature¶
Here is a list of recommended literature for this course:
-
Bird, Steven, Ewan Klein, and Edward Loper. Natural Language Processing with Python: Analyzing Text with the Natural Language Toolkit. Sebastopol, CA: O'Reilly Media, 2009. https://www.nltk.org/book_1ed/.
-
Bishop, Christopher M. Pattern Recognition and Machine Learning. New York: Springer, 2006. https://www.microsoft.com/en-us/research/uploads/prod/2006/01/Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf.
-
Jurafsky, Daniel, and James H. Martin. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition. 2nd ed. Upper Saddle River, NJ: Prentice Hall, 2008. https://web.stanford.edu/~jurafsky/slp3/.
-
Raschka, Sebastian. Build a Large Language Model (From Scratch). Shelter Island, NY: Manning, 2024. https://www.manning.com/books/build-a-large-language-model-from-scratch.
-
Vajjala, Sowmya, Bodhisattwa Majumder, Anuj Gupta, and Harshit Surana. Practical Natural Language Processing: A Comprehensive Guide to Building Real-world NLP Systems. Sebastopol, CA: O'Reilly Media, 2020. https://www.practicalnlp.ai/.