I am a CS undergrad, currently in the third year of my academic program. I have been interested in the core computer science discipline for a long time, and that is why I like pursuing this field.
Why I wanted to learn Natural Language Processing
In this domain, there are new technologies emerging each and every single day. New breakthroughs are being discovered in every nook and corner of the place.
I am fascinated by the idea of studying these technologies and gaining a deeper understanding of them, as it primarily helps in building solutions to many of our real life problems.
This is why I became interested in the field of AI, and Deep learning was the tool to tackle it. I chose NLP over Computer Vision because of the problems that are currently being solved by this technology.
Textual data, both structured and unstructured, is what currently drives our resources available on the internet. NLP seemed like the right thing to shoot for when it came to studying this data, their relationships, and how to make computers understand it.
How I approached learning Natural Language Processing
I found the material to study NLP in the Stanford course CS224N lectures available as a YouTube playlist. Before I started watching the lectures online, I also read about the research that was going on in the field of NLP, after which I decided to get a firm grasp on the subject.
Apart from the lectures, there was also a fair amount of statistics that was needed to understand the concepts, so I watched many videos from Khan Academy, yet another great resource to study a wide array of disciplines.
Challenges I faced
The first major roadblock I faced was not being able to directly apply the concepts to a real-world project. That was a problem because without any practical knowledge, it seemed like a futile effort.
I looked for projects on GitHub, and, fortunately, I was able to be selected for an internship at a company that works in this domain. In my view, the best way to really understand theoretical concepts is to apply them in any way possible. If by creating a simple program you can implement the latest algorithm you just learned, it is essential that you do it. It is the best way to overcome any challenges you might face in the learning process.
The most important takeaway for me was that everything is available, if you look in the right place. I learned about innumerable opportunities in the domain, through online lectures, competitions, projects available on GitHub, and most importantly, the opportunities available in open source communities.
I learned the importance of open source development, while studying the libraries that were available when I solved tasks, and was motivated to contribute to open source projects.
Tips and advice
To any developer who wants to study NLP, the best thing to do right now is to get out there on the internet, take up the courses I mentioned above, and try to get through them with a deep understanding of the concepts. While you do this, try to look for open source projects that will help you apply the concept you just studied. Remember to keep looking.
Final thoughts and next steps
It is a generic process and the list of resources available is really not exhaustive, but do checkout this list curated by @gutfeeling on his GitHub repo.
Once you work on some minor tasks for any open source project, the next thing you can do is to build on your knowledge and start a project that encapsulates all the concepts that you learned. When you try to create a project from scratch, there are many underlying concepts that become apparent to you and you get more practical knowledge of the subject.