Dan John Velasco
your lowly computer guy



← go back
Text generation ng pre-trained language model sa wikang Filipino
Text generation ng pre-trained language model sa wikang Filipino 🤗

Filipino ULMFiT: Pre-trained AWD-LSTM Language Model sa Filipino

15 October 2020

Kumuha ako ng subject na Filipino at natutunan ko doon kung gaano kahalaga ang papel ng wikang Filipino sa pag-unlad ng bansa. Dahil dito, naisip ko na gamitin ang aking interest sa Machine Learning upang makapag ambag sa ano mang paraan para maitaas ang antas ng wikang Filipino.

Bilang background, ang Natural Language Processing, sa malawak na depinisyon nito, ay ang paggamit ng computer algorithms sa pag proseso ng text data. Kasali na dyan yung mga autocorrect, spam filters, language translation, smart assistants (speech recognition), atbp.

Sa article na ito, i-rerelease ko ang pre-trained language model para sa wikang Filipino o mas gusto ko tawagin na "Filipino ULMFiT". Pwede ito gamiting base model sa mga text classifications tasks. Ang text classification ay ang, well, pag classify ng mga texts. Halimbawa, i-classify ang e-mail bilang spam or not spam, or ang isang tweet as hate or non-hate. Isa pang praktikal na application nito ay sa customer support, pwedeng i-classify ang mga support tickets sa tamang category nito para mas mapadali ang trabaho ng mga customer support agents.

Ang problema, kung ang mga existing NLP technology ay applicable lang sa English, mapag iiwanan nanaman ang mga non-English speakers. Mapipilitan ang mga tao na maging strict sa paggamit ng English para lang makuha ang benefits ng technology. Hindi ko alam sa inyo, pero ayokong mag English para lang magreklamo sa customer support 😅. Mas maganda ang pagkasabi ni Sebastian Ruder, isang NLP researcher, patungkol sa dahilan kung bakit dapat mag research sa NLP sa ibang languages bukod sa English:

A continuing lack of technological inclusion will not only exacerbate the language divide but it may also drive speakers of unsupported languages and dialects to high-resource languages with better technological support, further endangering such language varieties. To ensure that non-English language speakers are not left behind and at the same time to offset the existing imbalance, to lower language and literacy barriers, we need to apply our models to non-English languages.

Walang groundbreaking work sa article na ito. Kinuha ko lamang ang mga techniques na subok na sa English at in-apply ito sa wikang Filipino. Sa katunayan, meron nang pre-trained transformer-based models sa wikang Filipino na inilabas sa publiko na inaasahang mas malakas na model kumpara sa mga RNN-based model (yung i-rerelease ko). Ang kontribusyon ko naman ay ang paggamit ng RNN-based language model (AWD-LSTM) na higit na mas accessible sa nakakarami dahil mas mura itong i-train kumpara sa mga transformer-based models.

Ano ang Filipino ULMFiT? 👀

Ang ULMFiT (Howard and Ruder, 2018) ay isang transfer learning technique para sa NLP. In a nutshell, i-ttrain mo ang model sa language modelling task gamit ang isang napakalaking general-domain text corpus upang "matutunan" ng model yung wika. Kapag meron ka nang model na medyo may alam sa wika ng text corpus, pwede mo gamitin ito at "i-transfer" ang mga natutunan nito sa text classification task sa parehong wika. Makikita ang buong ULMFiT approach sa Figure 1.
linear path
Figure 1: ULMFiT approach summary. Adapted from fastai documentation. Figure was modified to match the dataset used in this article.

Ang model na ito ay pre-trained sa WikiText-TL-39 (Cruz and Cheng, 2019), isang malaking unlabelled text corpus sa Filipino na kinuha sa mga artikulo sa Tagalog Wikipedia. Pagkatapos ng pre-training step, dadaan sa language model fine-tuning step o pag-ttrain pa ng husto ng model sa target text corpus. In our case, ito ang Hate Speech Dataset (Cruz and Cheng, 2020). Pagkatapos ng fine-tuning step, pwede na i-transfer ang natutunan ng language model na ito sa text classifier model.

Pagkatapos ng training process, binenchmark naman ang text classifier model sa Hate Speech Dataset. Kung interesado ka malaman ang benchmark results at karagdagang pagsusuri ng performance ng AWD-LSTM sa low-resource setting, maaring basahin ang papel na ito: "Pagsusuri ng RNN-based Transfer Learning Technique sa Low-Resource Language".

In practice, maaring gamiting ang pre-trained model para sa iba pang text classification task sa Filipino basta meron kang dataset. Sa lahat ng oras, kung merong available na pre-trained language model, dapat itong gamitin dahil naaabot nito ang magandang performance sa maikling training time at kahit maliit ang training data mo. At higit sa lahat, libre lang naman 👌😉

Impact of pre-training 💪

Makikita sa sumusunod na table ang impact ng pre-training sa accuracy ng text classification model. Yung 'No pre-training' ay hindi gumamit ng pre-trained language model at language model fine-tuning. Bale diretso lang siya sa text classification training (Step 3, see Figure 1).
+------------------------------------+-------------+
| Pre-training                       | Hate Speech |   
+------------------------------------+-------------+
| No pre-training                    | 70.10%      | 
| with pre-training + LM fine-tuning | 76.84%      |     
+------------------------------------+-------------+

Note: Used the same hyperparameters for both models

Makikita dito na malaki ang impact ng pre-training sa accuracy ng model.

Cool! San makukuha to? 😃

Ito ang script para ma-download ang pre-trained language model. Maaring gamitin ang script na ito sa mga cloud computing services kagaya ng Colab, Azure DSVM, atbp.
# Install gdown
pip install gdown

# Make directory
mkdir models

# Download data
gdown --id 19jdv8-XEbDNiqlm_lPb1csbVZYkn3gfA

# Unzip
unzip pretrained.zip -d models

# Finally
You should see two files: finetuned_weights_20.pth (pre-trained weights) and vocab.pkl (vocab) inside 'models' directory. 
This will be used later in language model fine-tuning. 
See accompanying jupyter notebook to see usage.

Pano gamitin to? 🤔

Ang model na ito ay compatible sa fastai v2 ++. Ang buong proseso mula sa pag preprocess ng data hanggang sa model evaluation ay available bilang jupyter notebook sa Filipino-ULMFiT repository.

Acknowledgements 🙏

Naging susi ang papel nina (Howard and Ruder, 2018), (Cruz and Cheng, 2019), at (Cruz and Cheng, 2020) sa project na ito. Big thanks to Blaise Cruz para sa pagbibigay ng oras sa pagsagot ng mga tanong ko at sa pagturo sa tamang direksyon ✌