I am a programmer and I am interested in Natural Language Processing. I studied it a bit in college, but it was years ago and anyway it wasn't enough for a good knowledge of the field. I'm particularly interested in Markov chains and n-grams, mostly to build something that would let me analyzes and collect data from texts of various kind.
I am aware of software libraries that do exactly this, but I wish to really understand the theory and the basics. So what I am really asking is for a book (or more than one) to study natural language processing. I know that there is a lot of probability theory involved, so I would also like to study probability from scratch, if you have something to suggest.