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.
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 👌😉
+------------------------------------+-------------+ | 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.
# 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.