How to build industrial-strength NLP applications (without breaking the bank)
I have spent much of my career as a graduate student researcher, and now as a Data Scientist in the industry. One thing I have come to realize is that a vast majority of solutions proposed both in academic research papers and in the workplace are just not meant to ship — they just don’t scale!
And when I say scale, I mean:
- Handling real world uses cases
- Handling large amounts of data
- Ease of deployment in a production environment.
Some of these approaches either work on extremely narrow use cases, or have a tough time generating results in a timely manner.
More often than not, the problem lies is in the approach that was used although when things go wrong, we tend to render the problem “unsolvable”. Remember, there will almost always be more than one way to solve a Natural Language Processing (NLP) or Data Science problem. Optimizing your choices will increase your chance of success in deploying your models to production.
Over the past decade I have shipped solutions that serve real users. From this experience, I now follow a set of best practices that maximizes my chance of success every time I start a new NLP project.
In this article, I will share some of these with you. I swear by these principles and I hope these become handy to you as well.
1. KISS please!
KISS (Keep it simple, stupid). When solving NLP problems, this seems like common sense.
But I can’t say this enough: choose techniques and pipelines that are easy to understand and maintain. Avoid complex ones that only you understand, sometimes only partially.
In a lot of NLP applications, you would typically notice one of two things:
- Deep pre-processing layers, OR
- Complex neural network architectures that are just hard to grasp, let alone train, maintain and improve on iteratively.