Natural language processing (NLP) is a broad and interesting field of research at the intersection of computer science (CS) and linguistics. It includes many varied practical applications that range from information extraction algorithms that help us improve the performance of traditional information retrieval systems, to speech recognition techniques that are essential for verbal human-computer interaction (HCI).

Jurafsky and Martin’s book is a comprehensive introduction to NLP. The first edition--published in 2000--is an accepted classic in the field. This updated edition covers many recent advances and provides a good perspective on the current state of the art.

Covering a wide range of topics, the book’s ambitious scope addresses language processing at different levels, including phonetics, morphology, syntax, semantics, and even discourse. Obviously, such a broad scope forces the authors to provide just the essential information on a particular topic--something at which they are certainly successful--while precluding a more detailed treatment of each subject.

This lengthy but concise textbook starts with a brief introduction to the field that includes relevant historical notes on computational linguistics, NLP, and speech recognition. The book is divided into five parts: “Words,” “Speech,” “Syntax,” “Semantics and Pragmatics,” and “Applications.” It presents most of what one might want to know to become acquainted to the field and be able to make informed decisions on related issues.

The authors’ writing style is fluid and clear. In their readable discussions, they combine formal discussions on the underlying theoretical models with references to many application domains and good descriptions of the kinds of problems one must solve in practice. While this is an extremely informative book, it’s not the how-to, implementation-oriented type of book some practitioners prefer. The book provides concise algorithm descriptions, useful references to online resources, and discussions of tricky issues. It even proposes many interesting mini-project exercises at the end of each chapter, although it does not provide complete recipes.

Each chapter ends with a “Bibliographical and Historical Notes” section that describes how the field has evolved and includes an extensive list of references. Many of the chapters also include sections on how we, as humans, perform many of the processes involved in NLP. These sections describe the experiments that psychologists have performed to confirm or refute hypotheses related to morphological processing, parsing, speech recognition, and the complexity of natural languages. When describing different algorithmic techniques, the authors also provide short sections that detail the standard evaluation methods that are typically employed to measure the performance of language processing algorithms.

Since most tasks in speech and language processing involve some kind of ambiguity that is hard to predict in advance--due, for example, to the presence of unknown words, repair utterances, or coreferences--many ambiguity resolution techniques employ artificial intelligence models and algorithms. The chapters on semantics present a good overview of knowledge representation techniques, from first-order logic to ontologies and frame-based representations, as well as countless references to machine learning techniques that are required to solve multiple classification problems that arise in language processing and understanding. In fact, the current approach to NLP is often based on statistical learning methods, where hidden Markov models play a key role.

While this textbook is appropriate for both advanced undergraduate and graduate students, it’s more suitable for the latter. The material is not intrinsically difficult, and the authors have made a worthwhile effort to make the book readable for interested readers who have a CS background. However, when reading this textbook, undergraduate students will find many references to unfamiliar topics. To make the most of their time, readers should have a good background in automata theory and machine learning. Although readers without such a background might get confused at times, the book provides an excellent overview of the complex issues that must be resolved when engineering speech recognition and NLP systems. This book is perfect for practicing professionals who are interested in language processing problems, but it might not be the ideal choice for readers with interests that focus more on speech recognition and synthesis.