Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ແນະນຳການນຳໃຊ້ TF-IDF ກັບຂໍ້ມູນຂໍ້ຄວາມພາສາລາວ

ໂພສເມື່ອ # Natural Language Processing # Machine Learning # Python

ແນະນຳການນຳໃຊ້ 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))

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 ບໍ່ໄດ້ມີໄວ້ພຽງແຕ່ຂຽນໂຄດຫຼິ້ນໆ ແຕ່ສາມາດນຳໄປແກ້ບັນຫາທຸລະກິດຈິງໃນລາວໄດ້ເຊັ່ນ:


ສິ່ງທີ່ຄວນຈື່ (Key Takeaways)


ສະຫຼຸບ ເຖິງແມ່ນວ່າໃນປະຈຸບັນຈະມີໂມເດວ LLMs ທີ່ຊັບຊ້ອນຢ່າງ ChatGPT ຫຼື Claude ເຂົ້າມາແລ້ວ, ແຕ່ເຕັກນິກດັ້ງເດີມຢ່າງ TF-IDF ກໍຍັງຄົງມີຄວາມສຳຄັນ, ປະມວນຜົນໄວ, ຮຽກຮ້ອງຊັບພະຍາກອນໜ້ອຍ (Low computing power), ແລະ ສາມາດນຳໄປຕໍ່ຍອດໃນຫຼາຍໆໂປຣເຈັກໄດ້ເປັນຢ່າງດີ. ມື້ນີ້ເຮົາໄດ້ເຫັນແລ້ວວ່າ ພຽງແຕ່ການເຂົ້າໃຈຄະນິດສາດ ແລະ ການຈັດການພາສາລາວໃຫ້ຖືກຕ້ອງ ນັກພັດທະນາລາວກໍ່ສາມາດສ້າງລະບົບວິເຄາະຂໍ້ຄວາມທີ່ສະຫຼາດຂຶ້ນໄດ້ແລ້ວ. ຢ່າລືມນຳເອົາເຕັກນິກນີ້ໄປລອງປັບໃຊ້ກັບໂປຣເຈັກຂອງທຸກຄົນເບິ່ງເດີ້!