This book lays ground for better understanding of both computational linguistics (CL) and natural language processing (NLP) perspectives, i.e. it shows how to describe language (CL) in order to build the best NLP applications (NLP).
The book bridges the gap between theoretical linguistic phenomena and practical language models. It shows how computational linguists and language engineers working together can bring us closer to better language understanding by both humans and computers.
The author takes us on a stroll through the layers of language processing, explaining very soundly and giving examples and counterexamples that bring additional clarification for each step we make on that path. Starting with the tiny bits of written language, the alphabet, via dictionary and atomic linguistic units that occupy it, he clarifies the importance of each step, giving us solid ground to build upon any language project we might venture to undertake.
Silberztein knows how to invite an audience into his project, as he calls it, and introduces the topic in such a manner that makes you want to read the book until the last page (and solve all the CL and NLP problems on the way). He smoothly transitions through parts one, two and three, building one topic upon the previous one, as if playing with Lego blocks.
He begins by demonstrating the importance of defining basic (atomic) linguistic units starting with the alphabet and vocabulary that prepare us for the construction of electronic dictionaries. It is the design of the e-dictionary that will enable us to formalize the language of our interest, and support us in this process. Thus, it is not a surprise that a thorough classification and understanding of our basic resources is needed to prepare and specify affixes [re-, de-, un-, -ation], simple words [home, love, sky], multiword units [sweet potatoes, more and more, round table] and expressions [to give up, to turn off, to take off] that we will play around with to construct and annotate new words, phrases and sentences.
He then takes regular grammars, context-free grammars, context-sensitive grammars and unrestricted grammars, and makes them all work via NooJ’s multifaceted approach. The (beautiful) simplicity of this application is aligned with the way we, as humans, process vocabulary, grammar, orthography, syntax and semantics, thus making NooJ into a tool which is easy to use for beginners and more advanced users alike.
It is only expected that the journey will end with applications both in parsing and generating written text. We are presented with the lexical analysis, syntactic analysis (local and structural) and transformational analysis that open up the door for more sophisticated NLP applications (question answering, machine translation, semantic analyser, etc.).
The most expected audience of ‘Formalizing Natural Languages: The NooJ Approach’ are linguists, i.e. computational linguists and NLP developers (or as the author likes to call them language engineers). But, since the book holds the key that can open a whole sea of possible applications in the domains of other subfields, I would recommend it to etymologists, sociolinguists, psycholinguists, forensic linguists, internet linguists, corpus linguists or to any data scientist today. Having each chapter end with exercises and additional internet links, the book is also suitable as a class reading in NLP and CL classes, machine translation and similar. The book is presented in such a way as to improve the understanding of the ways in which natural language can be formalized, and has the power to reveal some new applications to almost any type of written text. Since the book, and NooJ as a tool, came into existence in an era dominated by unstructured data, the potential of NooJ is limited only by the imagination of its user.