บทความเรื่อง ความรู้เบื้องต้นเกี่ยวกับกราฟความรู้
(Introduction to Knowledge Graph)

Nathaphon Nanthajirapong
Super AI Engineer
Published in
6 min readMar 28, 2021

สวัสดี/Hi/你好!อีกครั้งค่ะท่านผู้อ่านทุกท่าน บทความนี้เขียนขึ้นในช่วงที่ผู้เขียนได้เข้าร่วมโครงการ Super AI Engineer Level 3 ที่ต่อเนื่องมาจากโครงการ Super AI Engineer Level 2 และเป็นบทความที่ 2 ของผู้เขียน โดยบทความแรกที่ผู้เขียนได้เขียนไว้คือบทความเรื่อง จริยธรรมกับปัญญาประดิษฐ์ (AI and Ethics) หากท่านผู้อ่านสนใจ สามารถอ่านได้จาก URL: https://medium.com/super-ai-engineer/จริยธรรมกับปัญญาประดิษฐ์-ai-and-ethics-a471d6848e8a

แรงจูงใจในการเขียนเรื่อง Knowledge Graph

เหตุผลหลักที่ทำให้ผู้เขียนเลือกเขียนเรื่อง Knowledge Graph นั้นมาจากการที่ผู้เขียนได้มีโอกาสเข้าร่วมโครงการ Super AI Engineer Level 3 กับสมาคมปัญญาประดิษฐ์ (AIAT) ซึ่งเป็นรอบที่ผู้เข้าร่วมโครงการจะต้องเลือกหัวข้องานที่ตนเองสนใจหรือมีความถนัด แล้วนำความรู้กับประสบการณ์ที่ได้จากการเข้าร่วมโครงการ Super AI Engineer Level 2 ที่ผ่านไป มาพัฒนาเป็นผลงานให้เป็นรูปธรรมและสอดคล้องกับวัตถุประสงค์ของโครงการในการพัฒนาบุคลากรด้านปัญญาประดิษฐ์ทั้ง 4 ประเภทคือ AI Innovators, AI Engineers, AI Researchers และ AI Entrepreneurs ซึ่งหัวข้อ Knowledge Graph เป็นหัวข้อที่มีความทันสมัย น่าสนใจและเกี่ยวข้องกับการพัฒนาปัญญาประดิษฐ์ (Artificial Intelligence: AI) ให้มีความรู้เทียบเคียงกับมนุษย์ นอกจากนี้ขอบเขตงานของหัวข้อนี้ยังมีความสอดคล้องกับเป้าหมายของผู้เขียนคือเน้นที่การทำวิจัยเพื่อศึกษาค้นคว้าและพัฒนาองค์ความรู้ใหม่ ๆ ที่สามารถนำไปตีพิมพ์เผยแพร่ หรือนำไปประยุกต์ใช้งานการพัฒนาระบบงานในอนาคตต่อไป

ที่มาของ Knowledge Graph

กราฟความรู้ (Knowledge Graph) [1] [3] เป็นโครงการที่ถูกพัฒนาขึ้นโดยมหาวิทยาลัย 2 แห่งในประเทศเนเธอร์แลนด์ ในช่วงปี ค.ศ. 1980 ซึ่งเป็นเครือข่ายเชิงความหมาย (Semantic network) ชนิดหนึ่งที่ถูกคิดค้นขึ้นในปี ค.ศ. 1960 เพื่อตอบสนองความต้องการในการหากรอบแสดงความรู้ (Knowledge representation framework) สำหรับการแสดงความรู้ที่ได้จาก Entity ที่มีความหลากหลาย ได้แก่ วัตถุในโลกความเป็นจริง (Real world objects) เหตุการณ์ (Events) สถานการณ์ (Situations) หรือแนวคิดเชิงนามธรรม (Abstract concept) และความสัมพันธ์ (Relations) ที่สามารถเขียนแทนด้วยประโยคภาษาอังกฤษในรูปแบบของ ประธาน กริยา (ความสัมพันธ์) และกรรม ได้ โดยโครงสร้างของ Semantic network เป็นโครงสร้างเฉพาะที่ประกอบด้วย Labelled nodes และ Links (between labelled nodes) และในปี 2001 Tim Berners-Lee ได้นิยามความหมายของคำว่า “Semantic web” ว่าเป็นส่วนขยายของเว็บที่ถูกพัฒนาขึ้นโดยการประยุกต์เอาเครือข่ายเชิงความหมายมาผนวกรวมไว้กับเว็บ ทำให้ข้อมูลและสารสนเทศของเว็บมีนิยามความหมายที่ดี ส่งผลให้มนุษย์และคอมพิวเตอร์ทำงานร่วมกันได้ดียิ่งขึ้น

ในปี ค.ศ. 2012 กราฟความรู้ หรือ “Knowledge Graph”[2] ได้เริ่มเป็นที่รู้จักอย่างกว้างขวางขึ้น เมื่อ Google ได้เปิดตัว Knowledge Graph ที่ช่วยเพิ่มประสิทธิภาพในการสืบค้นข้อมูลให้กับ Google search engine กล่าวคือ ทุกครั้งที่ผู้ใช้งานใส่คำค้น (Keyword) ลงไปในช่องรับคำค้น Google search engine จะทำการสืบค้นข้อมูลกราฟความรู้ที่สร้างขึ้นจากฐานข้อมูลขนาดใหญ่ที่จัดเก็บความจริง (Facts) เกี่ยวกับ บุคคล (People) สถานที่ (Places) และสิ่งของ (Things) ซึ่ง Google ได้รวบรวมมาจากแหล่งข้อมูลที่เป็นสาธารณะได้แก่ คะแนนการแข่งขันกีฬา (Sports scores) ราคาหุ้น (Stock prices) และพยากรณ์อากาศ (Weather forecasts) และข้อมูลจากแหล่งอื่น ๆ อีกหลาย ๆ แหล่งที่รับได้อนุญาตอย่างถูกต้องจากเจ้าของข้อมูล ซึ่งผลลัพธ์ที่ได้จากการสืบค้นความรู้จากกราฟความรู้ของ Google (Google Knowledge Graph) จะปรากฎในพื้นที่ที่เรียกว่า “Knowledge panel” ซึ่งแสดงอยู่ทางด้านขวามือของหน้าจอ ดังตัวอย่างที่แสดงในรูปที่ 1 ทำให้ Google กลายเป็น Search engine ที่ได้รับความนิยมอย่างแพร่หลาย หลังจากนั้นกราฟความรู้ก็ได้รับความนิยมในการทำวิจัยทางวิชาการและนำไปประยุกต์ใช้ในภาคอุตสาหกรรมเพิ่มขึ้นมาอย่างต่อเนื่องจนถึงปัจจุบัน

รูปที่ 1 Knowledge panel ที่แสดงความรู้เกี่ยวกับ Google Knowledge Graph ที่ได้จากการสืบค้นของ Google search engine

การให้คำนิยามความหมายของกราฟความรู้เป็นประเด็นที่มีการอภิปรายอย่างกว้างขวาง เนื่องจากกราฟความรู้มีที่มาจากความก้าวหน้าทางด้านวิทยาศาสตร์และการวิจัยในหลากหลายสาขา ได้แก่ เว็บเชิงความหมาย (Semantic Web) ฐานข้อมูล (Database) การแสดงความรู้และการให้เหตุผล (Knowledge Representation and Reasoning) การประมวผลภาษาธรรมชาติ (Natural Language Processing: NLP) การเรียนรู้ของเครื่อง (Machine Learning) และสาขาอื่น ๆ ที่เกี่ยวข้อง

นิยามความหมายของกราฟความรู้ (Knowledge Graph definition)

Valentina Janev, Damien Graux, Hajira Jabeen, and Emanuel Sallinger. (2020) [3] ให้นิยามความหมายของกราฟความรู้ในมุมมองของเครื่องมือในการแสดงความรู้ (Knowledge Graph as Representation tools) โดย Knowledge Graph มาจากคำว่า Knowledge รวมกับ Graph โดย Graph คือโครงสร้างข้อมูล (Data Structure) ที่ประกอบด้วย Nodes และ Edges ที่มีความสัมพันธ์กันผ่านคุณสมบัติที่เชื่อมต่อกัน ส่วน Knowledge คือความรู้ที่สร้างขึ้นจากส่วนหนึ่งหรือทั้งหมดของ Graph ในทางวิทยาการคอมพิวเตอร์ (Computer Science) Knowledge Graph คือการรวบรวมข้อเท็จจริงเกี่ยวกับ Entities ซึ่งส่วนใหญ่มาจาก แหล่งข้อมูลที่มีโครงสร้าง เช่น Babelnet, OpenCyc, DBpedia, Yago, Wikidata, NELL เป็นต้น ดังแสดงไว้ในรูปที่ 2

รูปที่ 2 แหล่งข้อมูลที่มีโครงสร้างที่ใช้ในการสร้าง Knowledge Graph
(ที่มา https://www.csee.umbc.edu/courses/graduate/691/fall19/07/)

ในความเป็นจริงแล้ว การให้นิยามความหมายของ Knowledge Graph สามารถพิจารณาได้หลายมุมมอง ซึ่งถ้าพิจารณาในมุมมองของเครื่องมือในการแสดงข้อมูลแล้ว Knowledge Graph คือ โครงสร้างทางคณิตศาสตร์ (Mathematical structure) ที่ Vertices คือหน่วยความรู้ (Knowledge units) ที่เชื่อมต่อกัน ด้วย Edges ที่แสดงถึงความสัมพันธ์ข้อกำหนดเบื้องต้น (Prerequisite relation) ดังตัวอย่างที่แสดงไว้ในรูปที่ 3 ซึ่งในทางปัญญาประดิษฐ์ (AI) หรือการเรียนรู้ของเครื่อง (Machine Learning: ML) ถือว่า Knowledge Graph คือฐานของความฉลาดของเครื่องคอมพิวเตอร์

รูปที่ 3 ตัวอย่าง Knowledge Graph ของ Google Search Engine (ที่มา https://searchengineland.com/laymans-visual-guide-googles-knowledge-graph-search-api-241935)

องค์ประกอบของกราฟความรู้ (Knowledge Graph components)

Knowledge Graph คือเครื่องมือในการแสดงความรู้ ที่ประกอบด้วยองค์ประกอบ 4 ส่วนที่สำคัญ ดังต่อไปนี้ [3]

· Entity ในที่นี้หมายถึง Entity ในโลกแห่งความเป็นจริง

· Edge เป็นความสัมพันธ์ (Relation) ของ Entity ที่อยู่ในรูปแบบของ Schema

· Attribute คือ Metadata เกี่ยวกับ Entity

· Ontology หมายถึง นิยามที่เป็นไปได้ของ Entities, Relations, และ Attributes

ซึ่ง Attribute และ Ontology เป็น 2 องค์ประกอบในแนวคิดที่ต้องได้รับการพิจารณาเป็นพิเศษ มากกว่าการพิจารณาโครงสร้าง Graph เนื่องจากในความเป็นจริงแล้ว 2 องค์ประกอบนี้มีความสำคัญต่อการแสดงความรู้ที่เป็นการเพิ่มคุณสมบัติของ Knowledge Graph ในขณะที่ Entities กับ Relations จะรวบรวมข้อมูลและถูกจัดเก็บไว้ในส่วนที่เรียกว่า ฐานความรู้ (Knowledge Base) ดังแสดงในรูปที่ 4 ส่วนตัวอย่างของ Knowledge Graph ที่แสดงส่วนของ Attribute ของ Entity ได้แสดงไว้ในรูปที่ 5

รูปที่ 4 องค์ประกอบของ Knowledge Graph (ส่วนของ Knowledge base)

รูปที่ 5 ตัวอย่าง Knowledge Graph ที่มีการแสดง Attribute ของ Entity (ที่มา https://github.com/SmartDataAnalytics/Knowledge-Graph-Analysis-Programming-Exercises)

ส่วน Ontology [4] คือ โครงสร้างแบบลำดับชั้นที่ใช้แสดงความรู้ในขอบเขตความรู้ที่สนใจ (Knowledge domain) โดยนำเสนอด้วยคำศัพท์ทั่วไปที่ใช้ร่วมกันในขอบเขตความรู้ (Domain) โดย Knowledge ใน Ontology ถูกแสดงในรูปแบบของ (1) Set ของ Class ที่ระบุแนวคิดของขอบเขตความรู้ และ (2) Relationship หรือความสัมพันธ์ระหว่าง Classes ต่าง ๆ (คล้ายแนวคิดของหลักการออกแบบระบบที่เรียกว่า Object-Oriented approach) ที่มีอยู่ใน Ontology โดยทั่วไป Ontology ประกอบด้วย 4 องค์ประกอบที่สำคัญคือ Class, Property, Restriction และ Individual ดังที่แสดงไว้ในรูปที่ 6

รูปที่ 6 โครงสร้างและองค์ประกอบของ Ontology (ที่มา http://accidental-taxonomist.blogspot.com/2020/12/differing-definitions-of-ontologies.html)

โดยมีรายละเอียดดังนี้

· Classes คือแนวคิดของขอบเขตความรู้ หรือ Objects

· Relations คือความสัมพันธ์ระหว่าง Classs/Objects

· Attributes คือคุณสมบัติของ Classes/Objects

· Individual คือตัวอย่างข้อมูล (Instances) ของ Classes/Objects ซึ่งทุก ๆ Instance ของ Classes จะมีคุณสมบัติ (Attributes) เหมือนกัน

การสร้าง Ontology ทำได้โดยการใช้ภาษา OWL (Web Ontology Language) ที่ถูกเผยแพร่โดยองค์กรมาตรฐานที่ชื่อว่า W3C (World Wide Web Consortium) ครั้งแรกในปี ค.ศ. 2004 โดยข้อกำหนดของภาษา OWL ถูกพัฒนาต่อมาจาก RDF (Resource Description Framework) ที่ใช้สำหรับการพัฒนา Semantic web และใช้ในการนำเสนอความรู้เกี่ยวกับสิ่งต่าง ๆ กลุ่มของสิ่งต่าง ๆ และความสัมพันธ์ของสิ่งต่าง ๆ ที่ถูกเผยแพร่และเป็นที่ยอมรับกันโดยทั่วไป ซึ่งท่านผู้อ่านสามารถศึกษารายละเอียดเพิ่มเติมของ OWL และ RDF ได้จาก URL: https://www.w3.org/TR/owl-features/ และ https://www.w3.org/TR/rdf-syntax-grammar/ ตามลำดับ

โครงสร้างข้อมูลของกราฟความรู้ (Knowledge Graph structure)

โครงสร้างข้อมูลของ Knowledge Graph ประกอบด้วย 1) Knowledge ถูกจัดเก็บในลักษณะของ Triples ที่ประกอบด้วยองค์ประกอบ 3 ส่วนคือ (S, P, O) หรือ (Subject, Predicate, Object) โดย Subject และ Object ทำหน้าที่แทน Entities ส่วน Predicate แสดงถึงความสัมพันธ์ และ 2) Graphs ที่ถูกสร้างจาก Triples ที่ประกอบด้วย Nodes และ Edges ซึ่ง Nodes นำเสนอ Entities ที่เป็น Subject และ Object ในขณะที่ Edges คือความสัมพันธ์ที่อยู่ในรูปของ Predicate ส่วน Metadata ของแต่ละ Entitles เรียกว่า “Attributes” ซึ่งโครงสร้าง Graphs ของ Knowledge Graph คือ Directed Graphs หรือ Labeled Graphs ที่สามารถอธิบายความหมายได้ จึงถูกเรียกอีกชื่อหนึ่งว่า “Unambiguous Graphs” ดังรูปที่ 7 ส่วนรูปที่ 8 คือ ตัวอย่าง Knowledge Graph ที่ถูกสร้างขึ้นเพื่อแสดงความรู้ที่เกี่ยวข้องกับผู้ก่อตั้งชั้นนำด้านไอที

รูปที่ 7 โครงสร้าง Triples ที่ใช้ในการจัดเก็บ Knowledge ของ Knowledge Graph

รูปที่ 8 Knowledge Graph Example of IT Company founder (ที่มา https://medium.com/@fakrami/re-evaluation-of-knowledge-graph-completion-methods-7dfe2e981a77)

จากรูปที่ 8 การแสดงความรู้ในรูปแบบของโครงสร้างประโยค เช่น “Bill Gates founded Microsoft” สามารถแสดงในรูปแบบของ Triples ได้เป็น (Bill Gates, founded, Microsoft) เมื่อ Bill Gates คือตัวแทนข้อมูล (Instance data) ของ Subject entity ส่วน Microsoft คือตัวแทนข้อมูลของ Object entity และ founded เป็นตัวแทนข้อมูลของ Predicate ที่แสดงความสัมพันธ์ระหว่าง Bill Gates และ Microsoft

ตัวอย่างงานวิจัยที่เกี่ยวข้องข้อง และการประยุกต์ใช้งานกราฟความรู้ (Examples of Knowledge Graph research and application)

จากที่กล่าวมา ท่านผู้อ่านคงพอเข้าใจและเห็นภาพว่า Knowledge Graph เป็นเครื่องมือที่สามารถใช้ในการแสดงความรู้ที่เป็นความจริงในโลกที่ทั้งมนุษย์และคอมพิวเตอร์สามารถเข้าใจได้ในลักษณะเดียวกัน ดังนั้นจึงมีนักวิชาการและนักพัฒนางานด้านปัญญาประดิษฐ์นำไปประยุกต์ใช้ในการจัดการความรู้ (Knowledge Management) รวมถึงการพัฒนาเว็บเชิงความหมายเพิ่มขึ้น ซึ่งผู้เขียนนำยกตัวอย่างงานวิจัยที่เกี่ยวข้อง รวมถึงการนำ Knowledge Graph ไปประยุกต์ใช้งาน ตามประเด็นหัวข้อที่มีความน่าสนใจและอาจเป็นประโยชน์ต่อการศึกษาเพิ่มเติมของท่านผู้อ่านต่อไป ดังต่อไปนี้

  1. “Name Entity Recognition” คือการรู้จำชื่อของ Entity ในที่นี้ขอยกตัวอย่างงานวิจัยที่นำเสนอการสร้าง Knowledge Graph ChatBot (KBot) [6] โดย Knowledge Graph ที่สร้างขึ้นในงานวิจัยนี้มีวัตถุประสงค์เพื่อใช้เป็นฐานความรู้ในการตอบคำถามเกี่ยวกับชื่อคนของ ChatBot ที่ชื่อว่า KBot ดังรูปที่ 9

รูปที่ 9 Knowledge Graph ของงานวิจัยที่ใช้ตอบคำถามของ ChatBot (KBot) (ที่มา https://www.researchgate.net/publication/343618564_KBot_A_Knowledge_Graph_Based_ChatBot_for_Natural_Language_Understanding_Over_Linked_Data)

Knowledge Graph ที่แสดงในรูปที่ 9 เป็นกราฟความรู้ที่ใช้สำหรับตอบคำถามของประโยค “Who is Alan Turing?” โดยคำตอบที่ KBot ใช้ประกอบการตอบคำถามของผู้ใช้ เกิดจากการสืบค้นข้อมูลจาก Knowledge Graph ที่สร้างขึ้นด้วยการสร้าง SPARQL Query ซึ่งมีลักษณะของโครงสร้างคำสั่งและการทำงานคล้ายคลึงกับภาษา SQL ที่เรา ๆ ท่าน ๆ ต่างคุ้นเคยกับการค้นคืนข้อมูลจากฐานข้อมูลชนิด RDBMS หากท่านผู้อ่านสนใจ สามารถศึกษารายละเอียดเพิ่มเติมได้จาก https://www.w3.org/TR/sparql11-overview/ และ https://jena.apache.org/tutorials/sparql.html ค่ะ

2. Covid Knowledge Graph คือ Application ที่โครงการ CovidGraph ที่เกิดจากความร่วมมือร่วมใจของนักวิจัย (Researchers) นักพัฒนาซอฟต์แวร์ (Software developers) นักวิทยาศาสตร์ข้อมูล (Data Scientists) และผู้เชี่ยวชาญทางการแพทย์ (Medical professional) โดยมีเป้าหมายที่จะช่วยให้นักวิจัยสามารถสืบค้นและเข้าถึงข้อมูล Covid-19 dataset ได้อย่างรวดเร็วและมีประสิทธิภาพ และจัดหาเครื่องมือสำหรับพัฒนางานด้านปัญญาประดิษฐ์ที่สามารถแสดงผลการสืบค้นข้อมูลด้วยเทคนิคการสร้างภาพนามธรรมขั้นสูง (Advanced visualization technique) และมีส่วนต่อประสานกับผู้ใช้ (User Interface) ที่ใช้งานง่าย โดยข้อมูลที่สนับสนุนประกอบด้วย บทความวิจัย สิทธิบัตร วิธีการรักษาที่มีอยู่ และยาต่าง ๆ ที่เกี่ยวข้องกับ ไวรัสโคโรน่า ทั้งหมด ซึ่งจัดเก็บไว้ในรูปแบบของฐานข้อมูลกราฟ (Graph database) ที่สร้างขึ้นด้วยเครื่องมือที่ชื่อว่า “Neo4j” โดยผลลัพธ์ของการสืบค้นสามารถแสดงได้ 2 รูปแบบบคือรูปแบบกราฟความรู้และฐานข้อมูลกราฟ ดังตัวอย่างที่แสดงไว้ในรูปที่ 10 และ 11 ตามลำดับ

รูปที่ 10 Application COVID GRAPH ที่แสดงผลในรูปแบบของ Knowledge Graph (ที่มา https://covidgraph.org/#aims)

รูปที่ 11 Application COVID GRAPH ที่แสดงผลในรูปแบบของ Graph Database ผ่านเครื่องมือแสดงผล Neo4j Browser (ที่มา https://covidgraph.org/#aims)

โดยท่านผู้อ่านที่สนใจ สามารถเข้าไปทดลองใช้งาน Application COVID GRAPH ได้ที่ URL: https://live.yworks.com/covidgraph/

บทสรุป

จากเนื้อหาที่กล่าวมาทั้งหมด สามารถสรุปได้ว่า Knowledge Graph = Ontology + Data (Instance of Object) และ Knowledge Graph เป็นโครงสร้างการนำเสนอความรู้ที่ถูกจัดเก็บไว้ในรูปแบบของ Graph Database ที่สามารถนำไปประยุกต์ใช้ในการพัฒนา Semantic web ใน Domain ต่าง ๆ ที่กำลังเป็นที่นิยม และถือเป็นหัวใจสำคัญที่ผู้สนใจเรียนรู้และพัฒนางานด้านปัญญาประดิษฐ์เพื่อการจัดการความรู้ (Knowledge Management) ควรติดตามและศึกษาเรียนรู้ วิจัย รวมถึงนำไปพัฒนาความฉลาดให้กับเครื่องคอมพิวเตอร์ด้วยฐานความรู้ที่อยู่ในรูปของ Knowledge Graph ต่อไป

ขอบคุณค่ะ/Thank you/謝謝

แหล่งอ้างอิงข้อมูล

[1] Sudip Chowdhury.(2019) “Knowledge Graph: The Perfect Complement to Machine Learning”. (Online) เข้าถึงได้จาก https://towardsdatascience.com/knowledge-graph-bb78055a7884

[2] CLAUDIO GUTIERREZ AND JUAN SEQUEDA. (2019) “A Brief History of Knowledge Graph’s Main Ideas: A tutorial”. (Online). เข้าถึงได้จาก https://knowledgegraph.today/

[3] Valentina Janev, Damien Graux, Hajira Jabeen, and Emanuel Sallinger. (2020) “Knowledge Graph and Big data Processing”. Springer International Publishing.

[4] Kim, Mijung & Cobb, Jake & Harrold, Mary & Kurc, Tahsin & Orso, Alessandro & Saltz, Joel & Post, Andrew & Malhotra, S. & Navathe, Shamkant. (2012). Efficient Regression Testing of Ontology-Driven Systems. Proceedings of the 2012 International Symposium on Software Testing and Analysis. 320–330. 10.1145/2338965.2336792.

[5] Google. “How Google’s Knowledge Graph works” (Online). เข้าถึงได้จาก
https://support.google.com/knowledgepanel/answer/9787176?hl=en

[6] Sasaki, B. M. (2018). “Graph Databases for Beginners: Other Graph Technologies”. https://neo4j.com/blog/other-graph-database-technologies/

[7] Ait-Mlouk, Addi & Jiang, Lili. (2020). KBot: A Knowledge Graph Based ChatBot for Natural Language Understanding Over Linked Data. IEEE Access. PP. 1–1. 10.1109/ACCESS.2020.3016142.

--

--