วันอังคารที่ 20 เมษายน พ.ศ. 2553

Ontology

As part of knowledge engineering, ontology is A formal explicit description of concepts (classes) in a domain of discourse, properties of each concept, and (role) restrictions on properties. Ontology is composed of machine-interpretable definitions (i.e. ชื่อคลาสดต่างๆที่ประกอบกันเป็น ontology) of basic concepts in the domain and relations among them. To share common understanding of the structure of information among people or software agents is one of the more common goals in developing ontologies. (For example, suppose several different Web sites contain medical information or provide medical e-commerce services. If these Web sites share and publish the same underlying ontology of the terms they all use, then computer agents can extract and aggregate information from these different sites. The agents can use this aggregated information to answer user queries or as input data to other applications.) Information ontologies are normally described by means of visual languages, so that they can be easily understood by humans. A Mind Map is a good example of this type of visual language. Ontology is typically created with OWL (Web ontology language) automatically generated by using Protege tool, which can facilitate greater machine interpretability of Web content.

Source of reference: http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html

Representation or specification of knowledge.

วิธีการประเมิน ontology ที่สร้างขึ้นมี 3 วิธี
  1. Application คือลองนำไปพัฒนาระบบจริง
  2. Data คือลองนำข้อมูลมาจัดเก็บลง ontology ว่าจัดเก็บได้ครบถ้วนหรือไม่
  3. Expert คือให้ผู้เชี่ยวชาญ 2-3 คนประเมิน
ภาษาที่ใช้ในการเขียน ontology คือ OWL และโปรแกรมสำหรับเขียน OWL คือ Protege freeware



การนำไปใช้งานนั้น เมื่อเรายัดเอา ontology ไปให้คอมพิวเตอร์ประมวลผลแล้ว เราก็จะส่งข้อมูลให้มันนำไปเปรียบเทียบและใช้ความรู้นั้นทำการเชื่อมโยงโดยนำเอา keywords จากข้อมูลที่คนส่งคำถามเข้าไป แล้วอนุมานออกมาเป็นผลสรุปนำเสนอให้กับคนที่ป้อนข้อมูลถามระบบอีกที  - การอนุมาน(Inference) ไม่ใช่การดึงข้อมูลจากเงื่อนไขตรงๆ แบบ query ในฐานข้อมูล แต่การอนุมานจะใช้หลักความสัมพันธ์ของ class ต่างๆ มาประกอบกัน โดยที่ข้อมูลเงื่อนไขนำเข้านั้นจะครบหรือไม่ครบก็ได้ มันก็ยังสามารถประมวลผลเพื่อนุมานได้ นอกจากนี้มันยังมี rule มาช่วยในการอนุมานอีกด้วยทำให้มันมีความเป็นอัจฉะริยะมากกว่าเดิมมาก เช่น คนป้อนข้อมูลนำเข้า ป้อนแค่ profile ของของตนเอง ซึ่งจะป้อนครบหรือไม่ก็ตาม ระบบก็จะนำไปประมวลผลเพื่ออนุมานตามความรู้ที่มันมี(ontology) แล้วสรุปมาเป็นคำเสนอแนะ หรือช่วยคนตัดสินใจบางอย่าง เช่น ถ้าระบบนี้เป็นระบบให้คำเสนอแนะเกี่ยวกับสุขภาพ มันก็อาจให้ข้อมูลว่าคนที่ป้อนข้อมูลมานั้นมีสุขภาพเป็นอย่างไร มีความเสี่ยงเป็นโรคอะไรไหม และเสนอว่าควรปฏิบัติตัวอย่างไรเพื่อให้มีสุขภาพดีขึ้น ซึ่งถ้าเป็นฐานข้อมูลปกติคงต้องเก็บข้อมูลมากมายมหาศาลเพื่อรองรับทุกๆ เงื่อนไข และเสนอผลลัพธ์จาก algorithm ที่ผู้เขียนโปรแกรมเขียนขึ้น ถ้าจะให้เก่งขึ้นอีกก็ต้องแก้รื้อโปรแกรมใหม่ แม้จะเพิ่มข้อมูลด้านสุขภาพเพิ่มเติมก็ต้องทำโปรแกรมใหม่ แต่ถ้าใช้ ontology ตัวโปรแกรมไม่ต้องแก้ แค่เราเพิ่มความรู้เข้าไปใน ontology หรือเพิ่ม rule เข้าไปใน ontology คอมพิวเตอร์ก็จะฉลาดขึ้นทันที ตัวอย่างที่ดีมากๆ อีกตัวอย่าง คือ กรณีที่เรามีความรู้ว่า A เป็นพี่ชาย B และ C เป็นลูกของ B ถ้าเป็นฐานข้อมูล เราก็จะ query ก็ได้ข้อมูลเพียงเท่านี้ ไม่มากกว่านี้ จะถามว่าใครเป็นหลานใครจะใช้ query ธรรมดาก็ไม่ได้ข้อมูลเพราะไม่ได้เก็บข้อมูลเอาไว้ ถ้าจะให้คอมฯ ตอบคำถามนี้ได้ก็ต้องไปเขียนโปรแกรมเพิ่ม งั้นถ้าในเวลาต่อมาเกิดมีคนถามอีกว่าใครเป็นลุง(uncle) จากฐานข้อมูลก็ไม่มีอีก ถ้าจะแก้ไขฐานข้อมูลเลยก็อาจถึงขั้นต้องออกแบบฐานข้อมูลใหม่เพื่อรองรับคำถามใหม่ๆ เหล่านี้ ทั้งๆ ที่มีข้อมูลพื้นฐานพออยู่แล้ว หรือแก้ปัญหาเฉพาะหน้าก็ไปแก้โปรแกรมใหม่อยู่ดี แบบนี้แสดงว่าคอมพิวเตอร์มันไม่ฉลาด อนุมานไม่เป็น แต่หากเราเขียน rule เข้าไปเพิ่มจากฐานความรู้เดิมที่มีอยู่ คำถามพวกนี้สามารถตอบได้ทันที โดยไม่ต้องไปรับแก้ ontology เพียงแต่เขียน SWRL สร้าง rule ใหม่ๆ ได้ตลอด

สรุป SWRL คือภาษาที่ใช้เขียน rules ที่ใช้หาข้อสรุป (อนุมาน) โดยอาศัยความรู้ที่อยู่ใน ontology และยังเป็นภาษาที่ใช้สืบค้นข้อมูลใน ontology ได้ด้วย

Rule engine ที่ใช้ประมวลผล SWRL ก็คือ JESS

และถ้าต้องการพัฒนา Java application ที่ใช้ ontology สามารถใช้ Jena เป็น Java framework ในการ access ontology และทำงานร่วมกับ JESS ได้ทันที

--http://mrkrich.blogspot.com

Corpus = a collection of written and spoken language stored on computer and used for language research  เช่น UMLS (Unified Medical Language System)

Inference = The process by which a conclusion is inferred from multiple observations, called inductive reasoning.