What is the difference between Computational Linguistics and Natural Language Processing? (Hint: There is no official answer to this question).
I had my 476th version of this conversation just now (because we’re in the hiring process for a new “CL lead” and having challenges defining the job) and I made the off-the-cuff claim that it’s the same as the difference between science and engineering. An engineer tries to build things while a scientist is in essence a reverse-engineer, dedicated to trying to figure out how the world works. Human language is a system that already exists, and it works in some way that no one really understands. Linguistics and cognitive scientists have been studying it for decades (well, you could make the claim for millenia). They are now joined by a group of specialists whose skill set involves computer programming and statistics.
Computational linguistics, then, involves trying to figure out how human language works using computational tools (e.g., automated methods of corpus analysis like
Tgrep2 [UPDATE 12/02/2010: dead link, for Tgrep2 tutorials, see HERE] and Perl scripting, learning models, etc) while NLP involves building tools that involve language input or output like voice user interfaces, machine translators, entity recognizers, etc. It can be the case that a single person is both a computational linguist and an NLP developer.
That’s my answer, for now… (my previous thoughts are here).