I am a first semester grad student seeking an M.S. in computer science. I am interested in NLP and hoping to choose it or a subfield of it as my research topic. Do you have any advice? For instance, is there background knowledge that I should be learning that would be helpful? What about good books or important papers? Other tips for CS/NLP grad students?
I know this is a rather general question, but any advice that you might have would be useful to me and students in similar situations. Thank you!
Hopefully the OP will be able to answer your question, but I thought I might offer my 2 cents:
I'm currently working on an MSc in IT. My actual project does not involve NLP directly, but all the 'related research' does (ie. all previous systems which achieve the same goal as mine)so I had to read up on it. This was a struggle... YMMV. I find a few good resources along the way though - recommend reading this first
http://www.staff.ncl.ac.uk/hermann.moisl/ell236/manual1.htm
then on iTunesU/YouTube you'll find a good course on computational linguistics from MIT, watch the first half dozen lectures at least (don't worry if you don't fully understand them all). A lot of the theory can be traced back to Chomsky's work on grammars, so I suggest reading some of his papers (his style is quite clear). I found I needed to do all this just so I could properly follow the recent papers on NLP (specifically NL interfaces to DBs) that I must review. I really had to start from the beginning, light wikipedia'ing wasn't cutting it. I'm currently reading The Oxford Handbook of Computational Linguistics to consolidate my knowledge, it's pretty good.
So anyway... tough subject, try not to get bogged down. If all the reading's too dry, then 'Godel Escher Bach' is a fun alternative that touches on similar theory.
If I were to choose a pure NLP project myself, I'd maybe do something like 'How NLP can add value to existing systems/software.' ie. look for imaginative practical applications, rather than theorizing yet another parser with some new trick/quirk
I would focus on statistical, data-driven approaches to NLP, rather than formal or linguistic approaches. I would develop a solid foundation in ML. Lastly, I would focus on building large-scale systems. The main reason is that this will increase the generality and breadth of what you can build and ship. But my approach is very applied.
Good books or important papers is an involved question. If you ask on MetaOptimize Q+A, we can discuss it there.
I know this is a rather general question, but any advice that you might have would be useful to me and students in similar situations. Thank you!