Chapter 3.16
Natural Language Processing
"Language itself shapes a man's basic ideas."
Creating a programming language and writing a compiler for it is one thing; analyzing human speech is quite another. Computer languages rely on precision, rigorous formal definitions, unambiguous code that compiles down to exact machine instructions; natural human languages rely on allusions, metaphors, nuances, idioms, and unspoken body language---writing is therefore an art-form, and not a science, as it takes a very special sort of person to convey the vast wealth of human interactions in the limited medium of the written word, allowing all readers to experience their emotions and perceptions. But all programmers are expected to convey the degree of precision that a computer expects.
In this chapter, we will review the current state of NLP as a field of research and the libraries available in Common Lisp for writing NLP software; we will explore the challenges of speech-recognition and leverage existing tools and APIs for transforming speech to text; and we will write a general purpose library for creating meaningful abstract syntax trees from English, to attempt to write Lisp software using natural, conversational language.
Exercise 3.16.1
Speech Recognition
Exercise 3.16.2
Handling Audio Input
Exercise 3.16.3
HTTP Interfaces with Drakma
Exercise 3.16.4
An Interface to the Dragon Mobile SDK
Exercise 3.16.5
Parsing Speech-to-Text with CL-LangUtils
Exercise 3.16.6
More CL-LangUtils
Exercise 3.16.7
Even More CL-LangUtils
Exercise 3.16.8
Advanced NLP with CL-NLP and CL-NLTK
Project 3.16.9
A Conversational Speech-to-Software Tool