ການກຳນົດຊະນິດຂອງຄຳ (Part-of-Speech Tagging) ສໍາລັບພາສາລາວ
ການກຳນົດຊະນິດຂອງຄຳ (Part-of-Speech Tagging) ສໍາລັບພາສາລາວ
ພາສາລາວເປັນພາສາທີ່ອຸດົມສົມບູນ ແລະ ມີເອກະລັກສະເພາະຕົວ ແຕ່ໃນຂະນະດຽວກັນກໍມີຄວາມທ້າທາຍສູງໃນວຽກງານປະມວນຜົນພາສາທຳມະຊາດ (NLP). ຫນຶ່ງໃນຂັ້ນຕອນພື້ນຖານແຕ່ສຳຄັນທີ່ສຸດໃນການສ້າງໃຫ້ຄອມພິວເຕີເຂົ້າໃຈພາສາລາວຢ່າງເລິກເຊິ່ງນັ້ນຄືການເຮັດ Part-of-Speech (POS) Tagging ຫຼື ການລະບຸຊະນິດຂອງຄຳ ເຊັ່ນ: ຄຳນາມ (Noun), ຄຳກຳມະ (Verb) ແລະ ຄຳຄຸນນາມ (Adjective).
ສຳລັບນັກພັດທະນາທີ່ເນັ້ນໜັກໄປທາງ AI, ຫາກຕ້ອງການຈະສ້າງລະບົບສະກັດຂໍ້ມູນລູກຄ້າສຳລັບທຸລະກິດ SME, ການສ້າງ Chatbot ຕອບຄຳຖາມ, ຫຼື ລະບົບແປພາສາ, ການມີ POS Tagger ທີ່ມີຄວາມແມ່ນຍໍາສູງແມ່ນກຸນແຈສຳຄັນທີ່ຂາດບໍ່ໄດ້. ໃນບົດຄວາມນີ້, ເຮົາຈະມາເຈາະເລິກເຖິງສະຖາປັດຕະຍະກຳຂັ້ນສູງ ໃນການສ້າງໂມເດວແທັກຄຳສຳລັບພາສາລາວ.
ຄວາມທ້າທາຍຂອງພາສາລາວໃນວຽກງານ POS Tagging
ກ່ອນທີ່ຈະລົງເລິກເຖິງໂມເດວ, ລອງມາເບິ່ງລັກສະນະສະເພາະຕົວຂອງພາສາລາວທີ່ເຮັດໃຫ້ການເຮັດ POS Tagging ກາຍເປັນໂຈດທີ່ຊັບຊ້ອນ:
- ບໍ່ມີຊ່ອງຫວ່າງລະຫວ່າງຄຳ (No Explicit Word Boundaries): ຮູບແບບການຂຽນພາສາລາວຈະຕໍ່ເນື່ອງກັນ ເຊັ່ນ “ສະພາບການສັນຈອນນະຄອນຫຼວງວຽງຈັນ”. ດັ່ງນັ້ນ, ກ່ອນຈະເຮັດ POS Tagging ໄດ້ ປະໂຫຍກຕ້ອງຜ່ານການຕັດຄຳ (Word Tokenization) ໃຫ້ເປັນຊຸດຄຳກ່ອນ. ຄວາມຜິດພາດໃນຂັ້ນຕອນການຕັດຄຳ ຈະສົ່ງຜົນກະທົບແບບ Domino effect ຕໍ່ຄວາມເໝາະສົມຂອງ POS Tag ທັນທີ.
- ບໍ່ມີການປ່ຽນຮູບຄຳຕາມໄວຍະກອນ (Isolating Language): ພາສາລາວບໍ່ມີການຕື່ມ Suffix ເພື່ອບອກວ່າເປັນ Noun ຫຼື Verb ຄືພາສາອັງກິດ (ເຊັ່ນ teach -> teacher). ຄຳວ່າ “ຮັກ” ສາມາດເປັນໄດ້ທັງ ຄຳກຳມະ (ຂ້ອຍຮັກເຈົ້າ) ຫຼື ຄຳນາມເມື່ອປະສົມຄຳ (ຄວາມຮັກ).
- ຄວາມໝາຍຂຶ້ນກັບບໍລິບົດ (High Context-Dependency): ຄຳວ່າ “ແກ່” ໃນ “ຜູ້ເຖົ້າແກ່” (ແທັກເປັນ Adjective) ກັບ “ລົດແກ່ເຄື່ອງ” (ແທັກເປັນ Verb) ມີຄວາມໝາຍ ແລະ ຊະນິດຂອງຄຳທີ່ແຕກຕ່າງກັນ ທັງທີ່ສະກົດຄືກັນແທ້ໆ.
ສະຖາປັດຕະຍະກຳຂັ້ນສູງ: ໂມເດວ BiLSTM-CRF
ເພື່ອແກ້ໄຂບັນຫາທີ່ກ່າວມາ, ວິທີການ State-of-the-Art ສຳລັບ Sequence Tagging ທີ່ພິສູດແລ້ວວ່າໄດ້ຜົນດີ ແມ່ນການໃຊ້ Deep Learning ດ້ວຍສະຖາປັດຕະຍະກຳ Bidirectional LSTM ຮ່ວມກັບ Conditional Random Fields (BiLSTM-CRF).
- BiLSTM: ປຽບເໝືອນການອ່ານໜັງສືຈາກຊ້າຍໄປຂວາ (Forward) ແລະ ຂວາໄປຊ້າຍ (Backward) ເພື່ອທົບທວນຄວາມໝາຍຂອງປະໂຫຍກ. ມັນຈະຊ່ວຍເຂົ້າລະຫັດຄຳ (Encoding) ໂດຍຮຽນຮູ້ບໍລິບົດອ້ອມຂ້າງທັງໝົດໄດ້ຢ່າງສົມບູນ.
- CRF: ຊ່ວຍຮຽນຮູ້ກົດເກນການລຽງລຳດັບ POS Tag (Sequence Constraints) ເຊັ່ນ: ໃນພາສາລາວ ໂອກາດທີ່ “ຄຳຄຸນນາມ” ຈະຕາມຫຼັງ “ຄຳນາມ” ແມ່ນມີສູງ (ຕົວຢ່າງ: ເຂົ້າປຽກ(Noun) ແຊບ(Adj)) ແຕ່ເກືອບຈະບໍ່ມີໂອກາດເລີຍທີ່ຄຳບຸພະບົດ (Preposition) ຈະຢູ່ທ້າຍປະໂຫຍກສຸດ.
ທິດສະດີທາງຄະນິດສາດຂອງ CRF (CRF Mathematical Concept)
ສຳລັບລຳດັບຄຳເຂົ້າ ແລະ ລຳດັບແທັກທີ່ຄາດເດົາ , ຄະແນນລວມ (Score) ໃນເຄືອຂ່າຍ CRF ຖືກຄຳນວນດັ່ງນີ້:
- ຄວາມໝາຍຂອງຕົວແປ:
- (Emission Matrix): ແມ່ນມາຕຣິກຄະແນນທີ່ຖືກປ່ອຍອອກມາຈາກຊັ້ນ BiLSTM ສຳລັບຄຳທີ ກັບແທັກ .
- (Transition Matrix): ແມ່ນມາຕຣິກຄະແນນການປ່ຽນສະຖານະຂອງແທັກ ໂດຍສະແດງເຖິງຄວາມເປັນໄປໄດ້ໃນການປ່ຽນຈາກແທັກກ່ອນໜ້າ ໄປເປັນແທັກປັດຈຸບັນ .
ການສ້າງໂມເດວດ້ວຍ PyTorch (Implementation)
ລອງມາເບິ່ງວິທີສ້າງໂຄງຮ່າງ Model ດ້ວຍ PyTorch ສຳລັບ Lao POS Tagging:
import torch
import torch.nn as nn
class BiLSTM_CRF(nn.Module):
def __init__(self, vocab_size, tagset_size, embedding_dim, hidden_dim):
super(BiLSTM_CRF, self).__init__()
self.embedding_dim = embedding_dim
self.hidden_dim = hidden_dim
self.vocab_size = vocab_size
self.tagset_size = tagset_size
# Embedding Layer ສຳລັບພາສາລາວ
self.word_embeds = nn.Embedding(vocab_size, embedding_dim)
# BiLSTM Layer ຮັບ embedding ແລະ ວິເຄາະບໍລິບົດທັງສອງທິດທາງ
self.lstm = nn.LSTM(embedding_dim, hidden_dim // 2,
num_layers=1, bidirectional=True, batch_first=True)
# Linear Layer ປ່ຽນ hidden dimension ໄປເປັນຂະໜາດຂອງ tags (ເຊັ່ນ NOUN, VERB, ADJ)
self.hidden2tag = nn.Linear(hidden_dim, tagset_size)
# CRF Transition Matrix
# (ໝາຍເຫດ: ໃນການໃຊ້ງານຈິງແນະນຳໃຫ້ໃຊ້ Library ເຊັ່ນ pytorch-crf ເພື່ອຄຳນວນ Viterbi Decoding ຢ່າງສົມບູນ)
self.transitions = nn.Parameter(torch.randn(tagset_size, tagset_size))
def forward(self, sentence):
# 1. ປ່ຽນຊຸດຄຳເປັນ Dense Vectors
embeds = self.word_embeds(sentence)
# 2. ເອົາຜ່ານ BiLSTM
lstm_out, _ = self.lstm(embeds)
# 3. ໄດ້ຮັບ Emission scores (ຕົວແປ P ກ່ອນເຂົ້າສົມຜົນ CRF)
lstm_feats = self.hidden2tag(lstm_out)
return lstm_feats
ການກຽມຂໍ້ມູນການເຝິກສອນທີ່ສະທ້ອນບໍລິບົດຂອງລາວ (Training Data Structure)
ຂໍ້ມູນທີ່ໃຊ້ໃນການເຝິກສອນ Model ຈະຕ້ອງຜ່ານການຕັດຄຳ ແລະ ກຳນົດແທັກທີ່ຖືກຕ້ອງ. ຕົວຢ່າງປະໂຫຍກເຊັ່ນ “ນ້ຳຂອງບົກແຫ້ງໃນລະດູແລ້ງ” ຫຼື “ການສັນຈອນໃນນະຄອນຫຼວງວຽງຈັນຕິດຂັດຫຼາຍ” ສາມາດຈັດຮູບແບບ Tuple ດັ່ງນີ້:
training_data = [
(
["ນ້ຳຂອງ", "ບົກແຫ້ງ", "ໃນ", "ລະດູແລ້ງ"],
["PROPN", "VERB", "ADP", "NOUN"]
),
(
["ການສັນຈອນ", "ໃນ", "ນະຄອນຫຼວງວຽງຈັນ", "ຕິດຂັດ", "ຫຼາຍ"],
["NOUN", "ADP", "PROPN", "VERB", "ADV"]
)
]
(PROPN = Proper Noun (ຄຳນາມຊີ້ສະເພາະ), ADP = Adposition, ADV = Adverb)
ການຍົກລະດັບໂມເດວດ້ວຍ Character-Level Convolution
ເນື່ອງຈາກພາສາລາວມີຄຳສັບເກີດໃໝ່ ຫຼື ຄຳທັບສັບເກີດຂຶ້ນຢ່າງຕໍ່ເນື່ອງ (Out-Of-Vocabulary: OOV) ເຊັ່ນ: “ສະມາດໂຟນ” ຫຼື “ອິນເຕີເນັດ”, ການລວມເອົາແຫຼ່ງຮຽນຮູ້ລະດັບຕົວອັກສອນ ຫຼື ພະຍາງ (Character/Syllable-level embeddings) ດ້ວຍ 1D Convolutional Neural Network (CNN) ເຂົ້າໃນສະຖາປັດຕະຍະກຳຂ້າງເທິງ ຈະຊ່ວຍໃຫ້ໂມເດວຈັບຮູບແບບການສະກົດຄຳໄດ້.
ເຖິງແມ່ນວ່າໂມເດວຈະບໍ່ເຄີຍພົບຄຳວ່າ “ດິຈິຕອລ” ມາກ່ອນ, ແຕ່ດ້ວຍໂຄງສ້າງການລຽງຕົວອັກສອນຍ່ອຍ ທີ່ຄ້າຍຄືກັບຄຳທັບສັບອື່ນໆ ໂມເດວຈະສາມາດຄາດເດົາໄດ້ຖືກຕ້ອງຫຼາຍຂຶ້ນວ່າຄຳນີ້ຄວນຈະເຮັດໜ້າທີ່ເປັນ Noun ຫຼື Adjective ເຊິ່ງຊ່ວຍເພີ່ມຄ່າ F1-score ຂຶ້ນໄດ້ຢ່າງຊັດເຈນໃນການໃຊ້ງານເທິງໂລກຄວາມເປັນຈິງ.
ສິ່ງທີ່ຄວນຈື່ (Key Takeaways)
- Word Tokenization ຄືຈຸດເລີ່ມຕົ້ນ: ໂມເດວ POS Tagging ຂອງພາສາລາວຈະມີປະສິດທິພາບສູງ ກໍຕໍ່ເມື່ອການຕັດແບ່ງຄຳ (Tokenization) ໃນປະໂຫຍກອອກມາໄດ້ຢ່າງຖືກຕ້ອງເສຍກ່ອນ.
- BiLSTM ຮ່ວມກັບ CRF ແກ້ໄຂບັນຫາທີ່ຊັບຊ້ອນໄດ້ຄົບຖ້ວນ: ໃຫ້ RNN ຈັດການຮຽນຮູ້ເລື່ອງບໍລິບົດໜ້າຫຼັງ ແລະ CRF ຄວບຄຸມບົດບາດຂອງໄວຍະກອນ-ການລຽງຄຳທີ່ເປັນໄປໄດ້ຂອງພາສາລາວ.
- ການຈັດການກັບ OOV (ຄຳສັບນອກວັດຈະນານຸກົມ) ສຳຄັນຫຼາຍ: ການໃຊ້ Character-Level Embedding ຈະຊ່ວຍເພີ່ມຄວາມແຂງແກ່ນໃຫ້ກັບໂມເດວ ໃນເວລາທີ່ຕ້ອງວິເຄາະຫາຊະນິດຂອງຄຳສັບໃໝ່ໆທີ່ບໍ່ມີໃນ Data ທີ່ໃຊ້ເຝິກສອນ.
ສະຫຼຸບ
ການພັດທະນາລະບົບ Part-of-Speech Tagging ສຳລັບພາສາລາວ ໃນລະດັບຂັ້ນສູງນັ້ນ ບໍ່ແມ່ນພຽງແຕ່ການນຳເອົາ Algorithm ຂອງພາສາອື່ນມາໃຊ້ແບບກົງໄປກົງມາ ແຕ່ມັນທ້າທາຍໃຫ້ນັກພັດທະນາຕ້ອງເຊື່ອມໂຍງເຂົ້າກັບຄຸນລັກສະນະຂອງພາສາທີ່ເປັນ Isolating Language ແລະ ບໍ່ມີການແບ່ງວັກຕອນເຂົ້າຫາກັນ. ດ້ວຍການນຳໃຊ້ພະລັງຂອງເຄືອຂ່າຍ BiLSTM-CRF ຮ່ວມກັບການກະກຽມຂໍ້ມູນການເຝິກສອນຢ່າງປະນີດ ຕະຫຼອດຈົນເຖິງການໃຊ້ເຕັກນິກ Character-embedding, ພວກເຮົາສາມາດສ້າງລະບົບຕິດແທັກຄຳທາງຄອມພິວເຕີທີ່ຖືກຕ້ອງແລະຊັດເຈນ ເປີດທາງໃຫ້ແກ່ການພັດທະນາຜະລິດຕະພັນ AI ທີ່ເຂົ້າໃຈພາສາລາວໄດ້ເຖິງແກ່ນແທ້ໃນອະນາຄົດ.