Speech And Language Processing by Jurafsky and Martin is the standard textbook in the field. The coverage is very broad and accessible for non-linguist. Except for some pseudo code, that’s not a practical/programming book but you’ll have a good view of the field.
In the same vein, you can look at The Oxford Handbook of Computational Linguistics. This is a compilation of introductory articles.
For data mining and information retrieval, a comprehensive introduction is Information Retrieval by Manning, Raghavan and Schütze. A bit academic and can be heavy on the math.
For string algorithms, as Bob Carpenter puts it, Algorithms on Strings, Trees and Sequences "is the definitive text... The algorithms are abstracted from their biological applications, and the book would make sense without reading a single page of the biological motivations.".
If you’re more interested in Speech, Spoken Language Processing: A Guide to Theory, Algorithm and System Development is a nice introduction.
An alternative to the NLTK for Java users is Building Search Applications: Lucene, LingPipe, and Gate by Manu Konchady.