The grade will be determined based on 4 programming assignments (40%) and a final exam (60%). All assignments have the same weight. Programming will be done in either Python or Java.
Formal Languages and Automata theory is not strictly required, but concepts from the course (regular expressions, regular languages, context free languages, context free grammars) will be mentioned and used without further explanation.
Natural Language Processing (NLP) is concerned with developing algorithms and computational models that analyze texts written in human language and perform useful tasks over them. In recent years NLP gained a lot of momentum in the industry and in research, with applications such as machine translation, sophisticated search and question answering, analysis of social media texts, language understanding for speech interfaces of mobile devices and more. The course goal is to introduce the basic tasks and algorithms involved in language processing, focusing mostly on statistical and machine-learning based methods.
The course focuses on two dimensions of natural language processing. The first dimension involves understanding the various levels of structure underlying human language, and the complexities, variability and ambiguities in human language. The second dimension will focus on modeling language phenomena in a computationally-tractable manner, and will mostly cover concrete machine-learning methods for various NLP problems, advancing students' knowledge and experience in machine learning as well.