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.
4This question and the submitted answers confuse me slightly because I think there is a distinction between Natural Language Processing (NLP) and Computational Linguistics. Though perhaps once related or more appropriately considered a subfield, NLP currently involves machine-learning and statistical techniques to process/translate natural language, whereas computational linguistics aims to model linguistic phenomena. I think it doesn't help that/if the two terms are sometimes used interchangeably. To clarify, do you distinguish between the two?– VielleJan 31, 2012 at 5:33
@Vielle - I don't, but only out of an (admitted) ignorance to the field. As a counterpoint to the answers by Hugo and Anthony below could you suggest a CL reference for a beginner?,– HookedJan 31, 2012 at 5:57
I am actually a beginner myself and looking to learn as well. I think part of the confusion lies in the definition of computational linguistics. It appears that some people do use it synonymously with nlp. I am using the Association for Computational Linguistics' definition mentioned at the end of the wiki article. The NLTK book others mention below sounds like a good text for applying nlp methods/tools to simplify data processing of more traditional linguistics research.– VielleFeb 2, 2012 at 4:15
What I'm interested in learning more about is how to computationally model language change, origin etc. Here is a review by Simon Kirby, Natural Language from Artificial Life (2002). He does comp. ling. work on language evolution. However this review doesn't cover models of phonetics or phonology, which I would like to see. I put this topic aside for some time until I saw your question. Hopefully someone can provide more information on this path. I might ask a separate question if necessary.– VielleFeb 2, 2012 at 4:33
@Hooked are you only interested in specifically computational treatments? or also in general mathematical linguistics?– Artem KaznatcheevFeb 3, 2012 at 4:52
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.
1FSM is a great resource for processing morphologically rich languages, such as Polish or Greenlandic. But there's no point in spending time on it if you want to process languages such as English or Chinese.– michauSep 28, 2016 at 13:17
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.