Primary competition visual

To Vaccinate or Not to Vaccinate: It’s not a Question by #ZindiWeekendz

Helping Africa
$300 USD
Completed (~6 years ago)
Natural Language Processing
Classification
Sentiment Analysis
212 joined
126 active
Starti
Apr 24, 20
Closei
Apr 26, 20
Reveali
Apr 26, 20
The Lazy NLP route :)
Data · 24 Apr 2020, 14:20 · 7

Thanks @overfitting_PLB for sharing the kaggle getting started with NLP notebook, but wow is that a lot of code. TF-IDF, word vectors, custom models, cross-validation, ensembles of different models.... I thought I'd share an alternate view.

Deep learning has pretty much taken over NLP. Language models like those available through fastai or huggingface are able to capture nuances of text, and can be trained with very little effort. They handle the tokenization etc, and I find them super easy to use.

I tried two different approaches, each ~10 lines of code, training time <15 minutes. Both ~0.6 scores. Both have PLENTY of room for improvement since I did almost no optimising. I'm not going to share code for this one (maybe in the future) but here are some places to get started:

1) Fastai text. The docs are decent: https://docs.fast.ai/text.html. I didn't do any language model tuning (there's a place to look for improvements!) but went straight to training a `text_classifier_learner(data_clas,AWD_LSTM,drop_mult=0.3, metrics=[rmse])` - give it a validation set and you get RMSE (like the Zindi score) as it trains!

2) Huggingface transformers via the simpletransformers library. The github has docs including a regression example: https://github.com/ThilinaRajapakse/simpletransformers#minimal-start-for-regression. Hugginface do amazing work, but if you look for tutorials many of them have lots of code to copy and paste - I like the simpletransformers library as it simplifies a lot of that and gets out of the way. You specify some parameters, pick a model architecture (I chose DistilBERT) and basically hit go :)

The reason I ran these models and am sharing this: a lot of smart people have tried very hard to make it easy to solve new challenges in the field of NLP. But there are so many options, and it's hard to know where to start. These are two ideas for you to research and play with. They're not hobbled beginner methods, they're the real deal. And it's possible to make good predictions with them. They've given me good results in the workplace and my hobby projects. So if you're not sure where to start, pick one and dig in, and see if you can get it working. You'll be playing with the cutting edge of NLP research, and hopefully, it'll let you get up there on the 'board without needing a masters degree in ML :) Good luck!

PS: Disagree, and think you should start from the basics and work up? Let's chat! I'm hoping this will spark some interesting discussion about SOTA in NLP, how to learn, using first vs bottom up... Drop your view in the discussion here :)

Discussion 7 answers

Thank you John for sharing this. As always you are a rockstar

24 Apr 2020, 14:22
Upvotes 0

Agree with you. I just made one submission using fastai and got 0.6 without any tuning. Why re-invent the wheels when we have fastai, Huggingface, simpletransformers etc.

24 Apr 2020, 14:25
Upvotes 0
User avatar
Raheem_Nasirudeen

thanks so much for more clarification.

24 Apr 2020, 16:41
Upvotes 0

Please i'm trying to follow the fastai but i don't know how to read the train and test csv into the TextLMDataBunch or TextClasDataBunch can anyone help me, I'm new to fastai

24 Apr 2020, 22:45
Upvotes 0

https://www.kaggle.com/aninda/nlp-disaster-fastai

Please have a look at this kernel. Hopefully it will

so helpful

25 Apr 2020, 01:50
Upvotes 0

Thank you John.

26 Apr 2020, 18:41
Upvotes 0