ແນະນຳການນຳໃຊ້ TF-IDF ກັບຂໍ້ມູນຂໍ້ຄວາມພາສາລາວ
ແນະນຳການນຳໃຊ້ TF-IDF ກັບຂໍ້ມູນຂໍ້ຄວາມພາສາລາວ
ໃນຍຸກດິຈິຕອນປະຈຸບັນ, ຂໍ້ມູນປະເພດຂໍ້ຄວາມ (Text Data) ແມ່ນມີຢູ່ທຸກຫົນທຸກແຫ່ງ ບໍ່ວ່າຈະເປັນການຣີວິວລົດຊາດ “ກາເຟປາກຊ່ອງ” ເທິງ Social Media, ຂ່າວສານກ່ຽວກັບ “ສະພາບລົດຕິດໃນນະຄອນຫຼວງວຽງຈັນ”, ຫຼື ບົດຄວາມກ່ຽວກັບ “ລະດັບນ້ຳຂອງ”. ຄຳຖາມຄື: ເຮົາຈະເຮັດໃຫ້ AI ຫຼື ຄອມພິວເຕີຮູ້ໄດ້ແນວໃດວ່າ ຄຳສັບໃດໃນເອກະສານນັ້ນເປັນ “ຄຳທີ່ສຳຄັນທີ່ສຸດ”?
ຄຳຕອບຂອງບັນຫານີ້ຢູ່ໃນເຕັກນິກພື້ນຖານທີ່ສຳຄັນຫຼາຍຂອງງາມປະມວນຜົນພາສາທຳມະຊາດ (NLP) ທີ່ເອີ້ນວ່າ TF-IDF. ມື້ນີ້ເຮົາຈະມາເຈາະເລິກຫຼັກການທາງຄະນິດສາດ ແລະ ການຂຽນໂຄດນຳໃຊ້ຕົວຈິງກັບຂໍ້ມູນພາສາລາວ.
TF-IDF ແມ່ນຫຍັງ?
TF-IDF ຫຍໍ້ມາຈາກ Term Frequency-Inverse Document Frequency. ມັນເປັນວິທີການທາງສະຖິຕິທີ່ໃຊ້ເພື່ອປະເມີນວ່າ ຄຳສັບໃດໜຶ່ງ (Word) ມີຄວາມສຳຄັນໜ້ອຍຫຼາຍສ່ຳໃດ ຕໍ່ກັບເອກະສານໜຶ່ງ (Document) ເມື່ອທຽບກັບເອກະສານທັງໝົດໃນລະບົບ (Corpus).
ລອງນຶກພາບວ່າ ເຮົາກຳລັງອ່ານບົດຄວາມກ່ຽວກັບ “ງານບຸນທາດຫຼວງ”:
- ຄຳວ່າ “ແລະ”, “ໃນ”, “ຢູ່”, “ທີ່” ອາດຈະປະກົດຂຶ້ນຫຼາຍທີ່ສຸດ ແຕ່ພວກມັນບໍ່ໄດ້ບອກເຖິງເນື້ອຫາສຳຄັນຂອງບົດຄວາມນັ້ນເລີຍ.
- ກົງກັນຂ້າມ ຄຳວ່າ “ພະທາດ”, “ທູບທຽນ”, “ມວນຊົນ”, ຫຼື “ວຽນທຽນ” ອາດຈະປະກົດໜ້ອຍກວ່າ ແຕ່ມີຄວາມໝາຍສະເພາະເຈາະຈົງກັບບົດຄວາມນີ້ຫຼາຍກວ່າ.
TF-IDF ຖືກສ້າງຂຶ້ນມາເພື່ອ “ລົງໂທດ” (Penalize) ຄຳສັບທີ່ພົບເຫັນໄດ້ທົ່ວໄປ ແລະ “ໃຫ້ຄະແນນ” (Reward) ຄຳສັບທີ່ພົບເຫັນໜ້ອຍ ແຕ່ມີຄວາມສຳຄັນໃນເອກະສານນັ້ນໆ.
ສູດຄິດໄລ່ທາງຄະນິດສາດທີ່ຢູ່ເບື້ອງຫຼັງ
ເພື່ອເຂົ້າໃຈການເຮັດວຽກທີ່ແທ້ຈິງ, ເຮົາຕ້ອງມາເບິ່ງ 2 ສ່ວນປະກອບຫຼັກ:
1. TF (Term Frequency) : ຄວາມຖີ່ຂອງຄຳສັບ
ວັດແທກວ່າຄຳສັບໜຶ່ງປະກົດຂຶ້ນເລື້ອຍສ່ຳໃດໃນເອກະສານໜຶ່ງ. ຍິ່ງປະກົດຫຼາຍ ກໍຍິ່ງອາດຈະສຳຄັນສຳລັບເອກະສານນັ້ນ.
TF(t, d) = (ຈຳນວນຄັ້ງທີ່ຄຳສັບ t ປະກົດໃນໜ້າເອກະສານ d) / (ຈຳນວນຄຳສັບທັງໝົດໃນເອກະສານ d)
2. IDF (Inverse Document Frequency) : ຄວາມຖີ່ກົງກັນຂ້າມຂອງເອກະສານ
ວັດແທກວ່າຄຳສັບນັ້ນ ພົບເຫັນໄດ້ຍາກ-ງ່າຍ ສ່ຳໃດໃນທຸກໆເອກະສານລວມກັນ. ຖ້າເປັນຄຳທີ່ພົບໃນທຸກເອກະສານ (ເຊັ່ນ: “ແລະ”, “ຂອງ”), ຄ່າ IDF ຈະເຂົ້າໃກ້ 0.
IDF(t, D) = log (N / DF(t))
- N ຄືຈຳນວນເອກະສານທັງໝົດ
- DF(t) ຄືຈຳນວນເອກະສານທີ່ມີຄຳສັບ t ປະກົດຢູ່
3. ສູດລວມ: TF x IDF
TF-IDF = TF(t, d) * IDF(t, D)
ຄວາມທ້າທາຍຂອງພາສາລາວ: ການຕັດຄຳ (Word Tokenization)
ໃນພາສາອັງກິດ ກ່ອນຈະນັບຄຳສັບເຮົາພຽງແຕ່ແຍກ (Split) ດ້ວຍ “ຍະຫວ່າງ” (Space). ແຕ່ສຳລັບພາສາລາວ ເຮົາຂຽນຕິດກັນເປັນປະໂຫຍກເຊັ່ນ: ກາເຟປາກຊ່ອງມີລົດຊາດແຊບຫຼາຍ.
ດັ່ງນັ້ນ, ກ່ອນຈະເຮັດ TF-IDF ໄດ້, ໃນຖານະນັກພັດທະນາ ເຮົາຈຳເປັນຕ້ອງມີຂັ້ນຕອນ “ການຕັດຄຳ” (Tokenization) ກ່ອນ. ໃນບົດຄວາມນີ້ ເຮົາຈະໃຊ້ Library ທີ່ຊື່ວ່າ laonlp.
ການຂຽນໂຄດດ້ວຍ Python ທົດລອງຕົວຈິງ
ສຳລັບນັກພັດທະນາ (Developers) ທີ່ຢາກລອງນຳໃຊ້, ໃຫ້ຕິດຕັ້ງຫ້ອງສະໝຸດທີ່ຈຳເປັນກ່ອນ:
pip install scikit-learn laonlp pandas
ຂັ້ນຕອນຕໍ່ໄປ ເຮົາຈະສ້າງຂໍ້ມູນຈຳລອງ (Corpus) ກ່ຽວກັບສະພາບແວດລ້ອມໃນລາວ ແລະ ໃຊ້ TfidfVectorizer ຂອງ scikit-learn ເພື່ອຄິດໄລ່:
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from laonlp.tokenize import word_tokenize
# 1. ສ້າງຂໍ້ມູນເອກະສານຈຳລອງ (Corpus)
documents = [
"ກາເຟປາກຊ່ອງມີລົດຊາດແຊບຫຼາຍ",
"ຊາວກະສິກອນປູກກາເຟຢູ່ເມືອງປາກຊ່ອງ",
"ສະພາບລົດຕິດຢູ່ນະຄອນຫຼວງວຽງຈັນໃນຊ່ວງງານບຸນທາດຫຼວງ",
"ນ້ຳຂອງບົກແຫ້ງຫຼາຍໃນປີນີ້"
]
# 2. ສ້າງ Custom Tokenizer ສຳລັບພາສາລາວ
# TfidfVectorizer ຈະເອີ້ນໃຊ້ function ນີ້ແທນການແຍກດ້ວຍຍະຫວ່າງແບບພາສາອັງກິດ
def lao_tokenizer(text):
return word_tokenize(text)
# 3. ຕັ້ງຄ່າ ແລະ ຄິດໄລ່ Model (ເອີ້ນໃຊ້ TfidfVectorizer ພ້ອມ Tokenizer ຂອງລາວ)
vectorizer = TfidfVectorizer(tokenizer=lao_tokenizer, token_pattern=None)
tfidf_matrix = vectorizer.fit_transform(documents)
# 4. ດຶງລາຍຊື່ຄຳສັບທັງໝົດທີ່ລະບົບແຍກໄດ້ (Features)
feature_names = vectorizer.get_feature_names_out()
# 5. ສະແດງຜົນການວິເຄາະສຳລັບເອກະສານທີ 1 (ກາເຟປາກຊ່ອງມີລົດຊາດແຊບຫຼາຍ)
doc_1_vector = tfidf_matrix[0]
# ສ້າງ DataFrame ເພື່ອໃຫ້ອ່ານງ່າຍຂຶ້ນ
df = pd.DataFrame(doc_1_vector.T.todense(), index=feature_names, columns=["TF-IDF Score"])
df = df[df["TF-IDF Score"] > 0].sort_values(by="TF-IDF Score", ascending=False)
print("--- ຄຳສັບທີ່ສຳຄັນໃນເອກະສານທີ 1 ---")
print(df)
ອະທິບາຍຜົນໄດ້ຮັບທີ່ຄາດຫວັງ:
ເມື່ອທ່ານລັນໂຄດນີ້ ທ່ານຈະເຫັນວ່າ ຄຳສັບເຊັ່ນ “ລົດຊາດ” ແລະ “ແຊບ” ອາດຈະມີຄະແນນ (Score) ສູງທີ່ສຸດໃນເອກະສານທີ 1. ສ່ວນຄຳວ່າ “ກາເຟ” ແລະ “ປາກຊ່ອງ” ຈະມີຄະແນນຮອງລົງມາ ເພາະວ່າຄຳສັບເຫຼົ່ານີ້ໄດ້ໄປປະກົດຊ້ຳໃນເອກະສານທີ 2 (ຊາວກະສິກອນປູກກາເຟຢູ່ເມືອງປາກຊ່ອງ) ເຮັດໃຫ້ຄ່າ IDF ຂອງມັນຫຼຸດລົງເລັກນ້ອຍ. ນີ້ຄືຄວາມສະຫຼາດຂອງຄະນິດສາດໃນການດຸ່ນດ່ຽງນ້ຳໜັກຂອງຄຳສັບ!
ການນຳໃຊ້ໃນພາກທຸລະກິດ (Business Applications in Laos)
ການເຂົ້າໃຈ TF-IDF ບໍ່ໄດ້ມີໄວ້ພຽງແຕ່ຂຽນໂຄດຫຼິ້ນໆ ແຕ່ສາມາດນຳໄປແກ້ບັນຫາທຸລະກິດຈິງໃນລາວໄດ້ເຊັ່ນ:
- ການຈັດປະເພດຄຳຮ້ອງຮຽນ (Customer Support Routing): ບໍລິສັດໂທລະຄົມ (ເຊັ່ນ Lao Telecom ຫຼື Unitel) ສາມາດໃຊ້ TF-IDF ເພື່ອຈັບຄູ່ຄຳສຳຄັນ (Keywords) ຮູ້ໄດ້ທັນທີວ່າລູກຄ້າກຳລັງເວົ້າເຖິງ “ອິນເຕີເນັດລົ້ມ” ຫຼື “ຕື່ມເງິນບໍ່ເຂົ້າ” ແລ້ວສົ່ງໃຫ້ພະແນກທີ່ກ່ຽວຂ້ອງ.
- ລະບົບຄົ້ນຫາອັດສະລິຍະ (Search Engines): ສຳລັບເວັບໄຊຂ່າວ ຫຼື ແອັບຂາຍເຄື່ອງອອນລາຍຂອງ SME ລາວ, ສາມາດຈັດລຳດັບຄວາມກ່ຽວຂ້ອງຂອງສິນຄ້າໃຫ້ກົງກັບສິ່ງທີ່ລູກຄ້າຄົ້ນຫາໄດ້ດີຂຶ້ນ.
- ການສະກັດຄຳສຳຄັນ (Keyword Extraction): ຊ່ວຍໃນການວິເຄາະຄວາມຄິດເຫັນຂອງການທ່ອງທ່ຽວໃນປະເທດ.
ສິ່ງທີ່ຄວນຈື່ (Key Takeaways)
- TF-IDF ເປັນເຕັກນິກພື້ນຖານທີ່ຊ່ວຍຊອກຫາຄຳທີ່ເປັນ “ເອກະລັກ” ແລະ “ສຳຄັນ” ໃນເອກະສານໜຶ່ງ ໂດຍການດຸ່ນດ່ຽງລະຫວ່າງຄວາມຖີ່ (TF) ແລະ ຄວາມຫາຍາກຊອກຄຳ (IDF).
- ພາສາລາວຕ້ອງການການຕັດຄຳ (Tokenization): ການຈະເຮັດ NLP ກັບພາສາລາວໄດ້ດີ ຕ້ອງເລີ່ມຕົ້ນດ້ວຍການໃຊ້ເຄື່ອງມືເຊັ່ນ
laonlpເພື່ອແຍກຄຳຢ່າງຖືກຕ້ອງເສຍກ່ອນ. - ຄະແນນ TF-IDF ທີ່ສູງ ໝາຍເຖິງຄຳສັບນັ້ນມີຄວາມກ່ຽວຂ້ອງສູງຫຼາຍກັບເບື້ອງຕົ້ນຂອງບົດຄວາມສະເພາະອັນນັ້ນ.
ສະຫຼຸບ ເຖິງແມ່ນວ່າໃນປະຈຸບັນຈະມີໂມເດວ LLMs ທີ່ຊັບຊ້ອນຢ່າງ ChatGPT ຫຼື Claude ເຂົ້າມາແລ້ວ, ແຕ່ເຕັກນິກດັ້ງເດີມຢ່າງ TF-IDF ກໍຍັງຄົງມີຄວາມສຳຄັນ, ປະມວນຜົນໄວ, ຮຽກຮ້ອງຊັບພະຍາກອນໜ້ອຍ (Low computing power), ແລະ ສາມາດນຳໄປຕໍ່ຍອດໃນຫຼາຍໆໂປຣເຈັກໄດ້ເປັນຢ່າງດີ. ມື້ນີ້ເຮົາໄດ້ເຫັນແລ້ວວ່າ ພຽງແຕ່ການເຂົ້າໃຈຄະນິດສາດ ແລະ ການຈັດການພາສາລາວໃຫ້ຖືກຕ້ອງ ນັກພັດທະນາລາວກໍ່ສາມາດສ້າງລະບົບວິເຄາະຂໍ້ຄວາມທີ່ສະຫຼາດຂຶ້ນໄດ້ແລ້ວ. ຢ່າລືມນຳເອົາເຕັກນິກນີ້ໄປລອງປັບໃຊ້ກັບໂປຣເຈັກຂອງທຸກຄົນເບິ່ງເດີ້!