Recently in my work I came across the Backus–Naur Form (BNF), one way of describing a context-free grammar. Since then, I've been interested in learning how to deconstruct and parse not only computing lanuages but human ones as well. I realize there is a vast body of knowledge out there, but therein lies the problem. I don't know where to begin. To be clear, I'd like to understand the methodology involved in taking an English sentence and determining the subjects, actions, modifiers, etc, but I have no prior experience in this field. Where is a good place to start learning? To keep the question non-subjective, canonical textbooks or pointers to introductory wiki's are encouraged.
The book accompanying the open-source Natural Language Toolkit, Natural Language Processing with Python --- Analyzing Text with the Natural Language Toolkit, is available as a paper book and free online, and is both a good introduction to computational linguistics and programing with the Python language.
A Language Log review of the book begins:
"This book is here to help you get your job done." I love that line (from the preface). It captures the spirit of the book. Right from the start, readers/ users get to do advanced things with large corpora, including information- rich visualizations and sophisticated theory implementation. If you've started to see that your research would benefit from some computational power, but you have limited (or no) programming experience, don't despair — install NLTK and its data sets (it's a snap), then work through this book.
Agreed with Hugo, the NLTK book is a great free resource for basics in natural language processing and accompanying coding examples.
To add onto the list, the two textbooks assigned by my Computational Linguistics program at University Washington were:
- "Foundations of Statistical Natural Language Processing" by Hinrich Schütze
- "Speech and Language Processing" by Daniel Jurafsky and James H. Martin
I would definitely say they're considered two of the canonical NLP textbooks. But, since they are textbooks, they are generally more advanced and cover more topics in computational linguistics than the NLTK book.
- You can sign-up for the Stanford NLP class here. It is conducted by Jurafsky and Manning, authors of the extremely popular textbooks that the others mentioned.
- You can watch videos by leading researchers in the field at videolectures.net. I recommend starting with Clark's lecture and moving on to other lectures suggested in the section called "See Also".
Agreed that the Jurafsky/Martin and the NLTK book are wonderful to start with. Next up would be Finite State Morphology by Beesley/Karttunen primarily focused on xfst applications.
Although I usually study within the Humanities faculty, I am in Computational Linguistics class right now, and can recommend Speech and Language Processing, 2nd Edition, 2009, by Jurafsky & Martin. There is another book I've tried, Language Processing with Perl and Prolog by Nugues & Pierre, but I found that it was much more difficult to get into for me, though perhaps handy if you are able to keep up with it.
Getting familiar with a few research papers on human language processing (dealing with ambiguities, etc.) was helpful in understanding the textbooks and relating it to NLP as well.
I know this question was posted four years ago, but in case anyone has the same question and comes across here:
For a general introduction to the field of computational linguistics, I think Languages and Computers is a great book to start with.
It gives a well-understandable overview to the problems and solution concepts of most basic areas that computational linguistics deals with, such as encoding, machine translation, searching, dialog systems, spell checking and language tutoring systems.
The texts are more focussed on the general theory behind the various applications and not so much on the implementation of actual algorithms, it is really more an introduction than a programming book, but definitely a good one.
If the quetsion is more specifically about NLP, parsing is also discussed, however not in that much detail; the references to further reading provided might be helpful then.
- Take a look at this book
Grishman, R., 1986. Computational linguistics: an introduction. Cambridge University Press.
- And also this book
Clark, A., Fox, C. and Lappin, S. eds., 2013. The handbook of computational linguistics and natural language processing. John Wiley & Sons.
- You can also download this free ebook:
Bolshakov, I.A. and Gelbukh, A., 2004. Computational Linguistics Models, Resources, Applications. CIENCIA DE LA COMPUTACIÓN.