11 กรกฎาคม 2560

Published กรกฎาคม 11, 2560 by with 0 comment

สร้างระบบผู้เชี่ยวชาญ (Expert System) ใน Python

บทความนี้จะพาผู้อ่านไปแนะนำระบบผู้เชี่ยวชาญ (Expert System) และลองสร้างระบบผู้เชี่ยวชาญ (Expert System) ใน Python


ระบบผู้เชี่ยวชาญ (Expert System) คือการที่ทำให้คอมพิวเตอร์มีความสามารถแก้ไขปัญหาที่ซับซ้อนได้ และเก็บเอาความชำนาญของผู้เชี่ยวชาญต่าง ๆ ไว้ เป็นส่วนหนึ่งของปัญญาประดิษฐ์ (Artificial Intelligence)

อ่านรายละเอียดระบบผู้เชี่ยวชาญ (Expert System) ได้ที่ https://www.gotoknow.org/posts/353661




PyKnow เป็นเครื่องมือสำหรับสร้างระบบผู้เชี่ยวชาญ (Expert System) ใน Python โดยประกอบไปด้วยฐานความรู้ (knowledge-based)และเครื่องอนุมาน (inference engine) อยู่ในตัว
รองรับเฉพาะ Python 3
ใช้ LGPLv3

สามารถติดตั้งได้ด้วยคำสั่ง pip install pyknow

เราลองศึกษาทำระบบผู้เชี่ยวชาญกันแบบง่าย ๆ กันครับ

ขั้นตอนการสร้างระบบผู้เชี่ยวชาญ

  1. วิเคราะห์ปัญหา

  2. การเลือกอุปกรณ์

  3. การถอดความรู้

  4. การสร้างต้นแบบ

  5. การขยาย การทดสอบและบำรุงรักษา

1.วิเคราะห์ปัญหา
ปัญหาเรื่อง ไปโรงเรียนสาย
เด็กชายหนึ่งอาศัยอยู่ในกรุงเทพ ทุก ๆ วันเขาก็ต้องไปโรงเรียนให้ทันและเขาไม่เคยตื่นสาย แต่เขากลับไปโรงเรียนสาย เขาพบว่า
ในวันที่ฝนตกและรถติด เขาจะไปโรงเรียนสาย แต่มีบางวันที่ฝนตกและรถไม่ติด เขาไปโรงเรียนทัน 
ส่วนวันที่ฝนไม่ตกและรถไม่ติด เขาไปโรงเรียนทัน แต่วันที่ฝนไม่ตกและรถติด เขาไปโรงเรียนสาย

จากประโยคขั้นบนในขั้นตอนการวิเคราะห์ปัญหาแยกออกได้เป็น 4 กรณีดังนี้

  1. หากวันนี้ฝนตก และ รถติด แล้วไปโรงเรียนสาย

  2. หากวันนี้ฝนไม่ตก และ รถติด แล้วไปโรงเรียนสาย

  3. หากวันนี้ฝนตก และ รถไม่ติด แล้วไม่ไปโรงเรียนสาย

  4. หากวันนี้ฝนไม่ตก และ รถไม่ติด แล้วไม่ไปโรงเรียนสาย

2. การเลือกอุปกรณ์
เราเลือกใช้ PyKnow เพราะมี knowledge-based และ inference engine อยู่ในตัวครบถ้วน
3. การถอดความรู้
จากวิเคราะห์ปัญหา เขียนเป็นเงื่อนไข if ได้

  1. if ฝนตก and รถติด than ไปโรงเรียนสาย

  2. if ~ฝนตก and รถติด than ไปโรงเรียนสาย

  3. if ฝนตก and ~รถติด than ~ไปโรงเรียนสาย

  4. if ~ฝนตก and ~รถติด than ~ไปโรงเรียนสาย

4. การสร้างต้นแบบ
ลงมือโค้ดระบบผู้เชี่ยวชาญต้นแบบ

ผลลัพธ์ ไปโรงเรียนสาย !!! :(
5. การขยาย การทดสอบและบำรุงรักษา
เพิ่มเอกสารการใช้งานลงไป และปรับปรุงโค้ด UI ให้ดียิ่งขึ้น ไม่ต้องแก้ไขโค้ดเพื่อหาผลลัพธ์เอง

ผลลัพธ์
ระบบผู้เชี่ยวชาญทำนายไปโรงเรียนสายหรือไม่

รายละเอียด
==============
ใช้ทำนายการไปโรงเรียนโดยใช้ข้อมูลฝนตก และ รถติด

ฝนตกหรือไม่ : กรอก 0 หากฝนตก
กรอก 1 หากฝนไม่ตก

รถติดหรือไม่ : กรอก 0 หากรถติด
กรอก 1 หากรถไม่ติด
==============


ฝนตกหรือไม่ : 1
รถติดหรือไม่ : 1
ไปโรงเรียนทัน :)

อ่านเอกสารและดูตัวอย่างเพิ่มเติมกันได้ที่ https://github.com/buguroo/pyknow/tree/develop/docs
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)