Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ການສ້າງລະບົບຖາມ-ຕອບ (Question-Answering System) ແບບງ່າຍໆ

ໂພສເມື່ອ # NLP # Python # Chatbot # Artificial Intelligence

ການສ້າງລະບົບຖາມ-ຕອບ (Question-Answering System) ແບບງ່າຍໆດ້ວຍ NLP

ລອງນຶກພາບເບິ່ງວ່າ ທ່ານກຳລັງສ້າງແອັບພລິເຄຊັນສຳລັບນັກທ່ອງທ່ຽວ ຫຼື ພັດທະນາລະບົບ Chatbot ສຳລັບຮ້ານຄ້າ SME ຂອງທ່ານໃນວຽງຈັນ ເຊິ່ງລູກຄ້າມັກຈະຖາມຄຳຖາມຊ້ຳໆກັນໃນ Facebook Page. ແທນທີ່ຈະໃຫ້ລູກຄ້າໄປອ່ານເອກະສານຍາວໆ ຫຼື ລໍຖ້າແອດມິນມາຕອບ, ຈະດີກວ່າບໍ່ຖ້າ AI ສາມາດອ່ານຂໍ້ມູນແລ້ວ “ດຶງເອົາຄຳຕອບ” ມາໃຫ້ລູກຄ້າໄດ້ທັນທີ? ຕົວຢ່າງ: “ຄ່າສົ່ງໄປຫຼວງພະບາງເທົ່າໃດ?” ຫຼື “ທາດຫຼວງສ້າງຂຶ້ນໃນປີໃດ?“.

ນີ້ຄືສິ່ງທີ່ເຮົາເອີ້ນວ່າ Question-Answering System (ລະບົບຖາມ-ຕອບ) ເຊິ່ງເປັນໜຶ່ງໃນແໜງການທີ່ສຳຄັນທີ່ສຸດຂອງ Natural Language Processing (NLP). ໃນບົດຄວາມນີ້, ເຮົາຈະມາລົງເລິກວິທີການສ້າງລະບົບນີ້ແບບງ່າຍໆສຳລັບນັກພັດທະນາລະດັບກາງ ໂດຍໃຊ້ Python ແລະ Pre-trained Model.

ລະບົບຖາມ-ຕອບ (QA System) ເຮັດວຽກແນວໃດ?

ໃນທາງ NLP, ລະບົບ QA ຫຼັກໆແບ່ງອອກເປັນ 2 ປະເພດຄື:

  1. Generative QA: ເປີດໃຫ້ AI (ເຊັ່ນ: ChatGPT ຫຼື Large Language Models ໃຫຍ່ໆ) ສ້າງຄຳຕອບໃໝ່ຂຶ້ນມາເອງຈາກຄວາມຮູ້ທີ່ມັນມີ.
  2. Extractive QA: ກຳນົດ “ບົດຄວາມອ້າງອີງ (Context)” ໃຫ້ AI, ແລ້ວໃຫ້ມັນໄປຄົ້ນຫາ ແລະ “ຕັດເອົາ” ຂໍ້ຄວາມທີ່ເປັນຄຳຕອບອອກມາ.

ມື້ນີ້ເຮົາຈະໂຟກັສໄປທີ່ Extractive QA ເພາະມັນເໝາະສຳລັບອົງກອນ ຫຼື ທຸລະກິດໃນລາວທີ່ຕ້ອງການຄວາມຖືກຕ້ອງສູງ ໂດຍອີງໃສ່ຂໍ້ມູນຂອງຕົນເອງ (ເຊັ່ນ: ຄູ່ມືການປູກກາເຟແຄມບໍລະເວນຢູ່ປາກຊ່ອງ ຫຼື ກົດລະບຽບການລາພັກຂອງພະນັກງານ).

ກະກຽມເຄື່ອງມືສຳລັບນັກພັດທະນາ (Intermediate Setup)

ເຮົາຈະນຳໃຊ້ transformers library ຂອງ Hugging Face ເຊິ່ງເຮັດໃຫ້ນັກພັດທະນາມີຄວາມສະດວກ ບໍ່ຈຳເປັນຕ້ອງຂຽນ Neural Network Architecture ຕັ້ງແຕ່ເລີ່ມຕົ້ນ, ແຕ່ສາມາດຮຽກໃຊ້ໂມເດວທີ່ຖືກຝຶກມາແລ້ວ (Pre-trained model) ໄດ້ເລີຍ.

ຂັ້ນຕອນທີ 1: ຕິດຕັ້ງໄລບຣາຣີ (Libraries)

ກ່ອນອື່ນໝົດ, ໃຫ້ເປີດ Terminal (Command Prompt) ແລ້ວຕິດຕັ້ງ Library ທີ່ຈຳເປັນໃນສະພາບແວດລ້ອມ Python ຂອງທ່ານ:

pip install transformers torch

ຂັ້ນຕອນທີ 2: ຂຽນໂຄ້ດເພື່ອສ້າງ AI Assistant

ເຮົາຈະໃຊ້ Multilingual Model ເຊິ່ງຖືກຝຶກໃຫ້ເຂົ້າໃຈຫຼາຍພາສາ ເພື່ອມາຊອກຫາຄຳຕອບຈາກບົດຄວາມກ່ຽວກັບ ພຣະທາດຫຼວງວຽງຈັນ.

from transformers import pipeline

# ຂັ້ນຕອນ 1: ໂຫຼດໂມເດວແບບ Pipeline ສຳລັບ Question-Answering
# ໃນທີ່ນີ້ພວກເຮົາໃຊ້ xlm-roberta ທີ່ຝຶກເທິງຊຸດຂໍ້ມູນ SQuAD2 ເຊິ່ງຮອງຮັບຫຼາກຫຼາຍພາສາ
print("ກຳລັງໂຫຼດໂມເດວ (ອາດໃຊ້ເວລາຈັກໜ່ອຍສຳລັບການໂຫຼດຊ່ວງທຳອິດ)...")
qa_pipeline = pipeline("question-answering", model="deepset/xlm-roberta-large-squad2")

# ຂັ້ນຕອນ 2: ກຳນົດຂໍ້ມູນອ້າງອີງ (Context)
context = """
ພຣະທາດຫຼວງ ເປັນປູຊະນີຍະສະຖານທີ່ສຳຄັນທີ່ສຸດໃນນະຄອນຫຼວງວຽງຈັນ, ປະເທດລາວ. 
ຖືກສ້າງຂຶ້ນໃນສະຕະວັດທີ 16 (ປີ 1566) ໂດຍສົມເດັດພຣະເຈົ້າໄຊເສດຖາທິຣາດ. 
ງານບຸນນະມັດສະການພຣະທາດຫຼວງຈະຈັດຂຶ້ນຢ່າງຍິ່ງໃຫຍ່ໃນເດືອນ 12 ລາວຂອງທຸກໆປີ.
"""

# ຂັ້ນຕອນ 3: ຕັ້ງຄຳຖາມ (Question)
question = "ພຣະທາດຫຼວງສ້າງຂຶ້ນໃນປີໃດ?"

# ຂັ້ນຕອນ 4: ປະມວນຜົນເພື່ອຫາຄຳຕອບ
prediction = qa_pipeline(question=question, context=context)

# ສະແດງຜົນ
print(f"ຄຳຖາມ: {question}")
print(f"ຄຳຕອບທີ່ AI ດຶງມາໄດ້: {prediction['answer']}")
print(f"ຄວາມໝັ້ນໃຈ (Confidence Score): {prediction['score']:.4f}")

ຜົນໄດ້ຮັບທີ່ຄາດຫວັງ (Expected Output):

ຄຳຖາມ: ພຣະທາດຫຼວງສ້າງຂຶ້ນໃນປີໃດ?
ຄຳຕອບທີ່ AI ດຶງມາໄດ້: 1566
ຄວາມໝັ້ນໃຈ (Confidence Score): 0.9852

(ໝາຍເຫດ: ເນື່ອງຈາກພາສາລາວຍັງມີຂໍ້ຈຳກັດໃນໂມເດວຫຼາຍພາສາ ຜົນການທົດສອບຕົວຈິງໃນປະໂຫຍກທີ່ຊັບຊ້ອນຂຶ້ນ ອາດມີການຕັດຄຳທີ່ຜິດພ້ຽນໄປແດ່)

ຄວາມທ້າທາຍຂອງ NLP ໃນພາສາລາວ (Localizing the Tech)

ເຖິງແມ່ນວ່າໂມເດວລະດັບໂລກຈະສະຫຼາດຫຼາຍ, ແຕ່ການນຳມາໃຊ້ໃນປະເທດລາວຍັງມີຄວາມທ້າທາຍເຊັ່ນ:

ຂໍ້ສັງເກດສຳຄັນ (Key Takeaways)

ສະຫຼຸບ

ການສ້າງລະບົບຖາມ-ຕອບດ້ວຍກົນໄກຂອງ Natural Language Processing ບໍ່ແມ່ນເລື່ອງທີ່ໄກຕົວນັກພັດທະນາລາວອີກຕໍ່ໄປ. ດ້ວຍ Code ພຽງບໍ່ເທົ່າໃດແຖວໃນ Python, ພວກເຮົາຍັງສາມາດປ່ຽນຂໍ້ມູນຄູ່ມືບ໋ອກ, ກົດລະບຽບການເຮັດວຽກ, ຫຼື ປະຫວັດສາດການທ່ອງທ່ຽວ ໃຫ້ກາຍເປັນ AI ທີ່ສາມາດໂຕ້ຕອບ ແລະ ໃຫ້ຂໍ້ມູນທີ່ຊັດເຈນແກ່ຜູ້ຄົນໄດ້ຕະຫຼອດ 24 ຊົ່ວໂມງ. ການເລີ່ມຕົ້ນທົດລອງຂຽນໂປຣແກຣມ NLP ໃນມື້ນີ້ ຈະເປັນພື້ນຖານອັນສຳຄັນໃນການແກ້ໄຂບັນຫາໃນສັງຄົມ ແລະ ຊຸກຍູ້ທຸລະກິດ SME ຂອງລາວໃຫ້ມຸ່ງໜ້າສູ່ຍຸກດິຈິຕອນຢ່າງເຕັມຕົວ.