And in my last Twitter thread, I wanted to talk with you about some powerful approaches in #NLP and how we can use both #rstats and #python to unleash them ๐ช
One possible downside when using the bag of words approach described before is that you often cannot fully take the structure of the language into account (n-grams are one way, but they are often limited).
You also often need many data to successfully train your model - which can be time-consuming and labor intensive. An alternative is to use a pre-trained model. And here comes @Google's famous deep learning model: BERT.
BERT is the acronym for bidirectional encoder representation from transformers. To understand how a BERT model works, I like to look at how it understands your text and how you train a BERT model.
@Google Simply speaking, there are three essential components:
โจ First, with BERT, you identify the order of the input.
@Google You give the model information about different embedding layers (the tokens (BERT uses special tokens (for instance, [CLS] and [SEP]) to make sense of the sentence), the positional embedding (where each token is placed in the sentence),
@Google and the segment embedding (which gives you more info about the sentences to which the tokens belong).
๐๐ผโโ๏ธ The first half of the training involves masking world (Mask ML). During the training period, you mask one word at a time and the model learns, which word usually follows.
@Google ๐๐ผโโ๏ธ During the second half, you train the model to predict the next sentence. This way, the model learns which sentences usually follow each other.
@Google If you want more, there are so many great videos online explaining how a BERT model works ( ๐บ bit.ly/bert-deep-learโฆ - it's all about attention โจ) but what's important to remember: it comes with a pre-trained language model.
@Google You can now use your labeled data to fine-tune the pre-trained model. One way of thinking about it is to think of a student: with the classical bag of words approach, you need to teach the student the language first. ๐ฉ๐ผโ๐ซ
@Google With BERT, you have a student who already knows the language but you're teaching the student a specific topic like biology. ๐งฌ
@Google There is a fantastic framework in #python to work with BERT models - ๐ค @huggingface: huggingface.co. It has several pre-trained models available on the website including fantastic tutorials that are very easy to follow.
@Google@huggingface@rstudio And another cool thing: Once you understand how BERT works, you can also apply the logic to a variety of text, audio, or video data tasks: huggingface.co/tasks ๐ฅณ
@Google@huggingface@rstudio ๐ As the last wrap-up for this week, here's the visual of two possible workflows - comparing bag of words and BERT. They're not so much different as you will see. One approach uses a bag of words and the other approach uses #BERT.
@Google@huggingface@rstudio With both approaches, you load your data but with #BERT you get a specifically pre-trained tokenizer (to make sense of your words) and model as well. You pre-process your text in both cases and then make use of it to perform your task at hand ๐ฉ๐ผโ๐ป
The curation week is almost over and I would like to thank everyone for joining the discussions this week! Itโs been a blast ๐ฅณ
If you enjoyed this week, feel free to reach out on Twitter (@cosima_meyer) or GitHub (github.com/cosimameyer/) โจ
@cosima_meyer I feel very honored that I had the chance to talk with you about the things I enjoy doing and I cannot wait to learn more from the upcoming curators - the lineup looks amazing! ๐
@cosima_meyer If you missed a Twitter thread this week, head over to @pilizalde's amazing thread where she collected all of them (I love the GitHub emoji ๐บ)
๐ก What is reactivity and what does it have to do with a carrier pigeon? ๐ฆ
To better understand how a #ShinyApp works, it's good to understand what's behind reactivity.
To describe it, I love the image of a carrier pigeon ๐ฆ (I picked up this idea when reading a post by @StatGarrett - so all credits go to him and all errors are mine โจ)
@StatGarrett What reactivity does is "a magic trick [that] creates the illusion that one thing is happening, when in fact something else is going on" (shiny.rstudio.com/articles/underโฆ).
๐ฉ๐ผโ๐ป How do you set up your own #ShinyApp?
It's easy in #rstats! Start a new #Rproject and select "Shiny Application". It will create a project with an "app.R" file for you โจ
Once it's open, you can replace the code that is already in the "app.R" file with this code snippet below๐ It does all the magic and shows how you can build a simple #ShinyApp ๐ฎ
You have checkboxes on the left side that let you choose countries (it's the ISO3 abbreviation, so "RWA" stands for Rwanda) and, depending on what you selected, your #ShinyApp will show a (non-realistic) population size for each country in a new plot.
Today, we'll discover how you can use the power of #rstats to create an interactive #shinyapp โจ
๐ก What is a ShinyApp?
Shiny is a framework that allows you to create web applications - ShinyApps โบ๏ธ You can use them for multiple purposes - to visualize data ๐จ (for instance the Scottish Household Survey by @ViktErik, bit.ly/3TqZevY, ...