Introduction to Ontology
Download
Report
Transcript Introduction to Ontology
Introduction to Ontology
Sudarsun S
Director – Research
Checktronix India
Chennai 600010
แปลและเรี ยบเรี ยงโดย บรรเจิด วิโรจน์วฒ
ุ ิกุล
คณะวิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา
Ontology คืออะไร?
สาขาปรัชญา – แขนงหนึ่งของปรัชญา ที่วา่ ด้วยธรรมชาติ
และองค์กรของความจริ ง
การศึกษาเกี่ยวกับการดารงอยู่ (ปรัชญาว่าด้วยความจริ งในธรรมชาติ)
ทดลองหาคาตอบของคาถามที่วา่ :
อะไรคือคุณลักษณะของการดารงอยู?่
่ ย่างไร?
ในที่สุดแล้วดารงอยูอ
แบ่งแยกสายสิ่ งต่างๆอย่างไร?
Ontology in Computers
Ontology คือ สิ่ งประดิษฐ์ทางวิศวกรรม ที่ประกอบด้วย
คาศัพท์ที่จะอธิบายถึงขอบเขต (ของสิ่ งที่เจาะจง)
ข้อมูลจาเพาะที่ชด
ั เจน ของความหมายคาศัพท์
ข้อจากัดของการเพิ่มความรู ้ใหม่เข้าไปในขอบเขต
ในอุดมคติแล้ว an ontology ควรจะ :
เข้าถึงความเข้าใจทัว่ ไป ของขอบเขตที่สนใจ
เตรี ยมรู ปแบบ และ แบบจาลองที่เครื่ องจักรจัดการได้ ของขอบเขตที่สนใจ
Example
คาศัพท์ และ ความหมาย (การนิยาม)
ช้าง เป็ นสมาชิกหนึ่งของ สัตว์
สัตว์กินพืช เป็ นสมาชิกของ สัตว์ ซึ่ ง กินเฉพาะพืช หรื อส่ วนหนึ่ งของพืช
ช้างโตเต็มวัย เป็ นสมาชิกของ ช้าง ซึ่ ง มีอายุมากกว่า 20 ปี
เบื้องหลังของความรู ้/ข้อจากัดบนขอบเขต (กฎเกณฑ์ที่ยอมรับกัน
ทัว่ ไป)
ช้างโตเต็มวัย หนัก อย่างต่า 2000 กิโลกรัม
ั หรื อ ช้างอินเดีย
ช้างทุกตัว เป็ น ช้างแอฟริ กน
ไม่มี สิ่ งมีชีวต
ิ ใด เป็ นได้ท้ งั สัตว์กินพืช และ สัตว์กินเนื้อ
Example Ontology (Protégé)
What??
Why Ontology?
เพื่อแชร์ความเข้าใจพื้นฐานของโครงสร้างข้อมูล ระหว่างคนและ
Software agents
เพื่อทาให้นาขอบเขตความรู ้เดิมกลับมาใช้ใหม่ได้
เพื่อสร้างขอบเขตที่สมมุติข้ ึนมาให้มีความชัดเจน
เพื่อแยกขอบเขตความรู ้ออกจากความรู ้ทวั่ ไปได้
เพื่อวิเคราะห์ขอบเขตของความรู ้
Few Applications
e-Science, ตัวอย่างในด้าน Bioinformatics
Databases
The Gene Ontology (GO)
The Protein Ontology (MGED)
Schema design and integration
Query optimisation
User interfaces
The Semantic Web & so-called Semantic Grid
Importance towards E-Commerce
Taxonomies provide :
เข้ามาควบคุมในการใช้คาศัพท์ร่วมกัน (search engines,
authors, users, databases, programs / ทุก
agent ใช้ภาษาเดียวกัน)
Site ช่วยเหลือด้าน Organization และ Navigation
ถูกกาหนดให้เป็ นมาตรฐาน (เช่น ตั้งไว้ที่โซนซ้ายของหลายๆเวปไซด์)
“Umbrella” ระดับโครงสร้างที่สูงขึ้น (เพื่อการ Extension)
ตัวช่วยค้นหา (แถบช่วยเหลือของ Yahoo!)
Sense disambiguation
Importance towards E-Commerce
ตรวจสอบความสอดคล้อง
การทาให้สมบูรณ์
สนับสนุนการทาให้ขอ
้ มูลในระบบต่างๆพูดคุยกันได้
(Interoperability)
สนับสนุนองค์ประกอบภายนอก
เป็ นโครงสร้าง, เปรี ยบเทียบเพื่อปรับปรุ งการค้นหาข้อมูล
Generalization/ Specialization
Observations
Ontologies อย่างง่าย สามารถสร้างได้โดยไม่ตอ้ งมีความชานาญ โดยใช้
Ontologies สามารถสร้างขึ้นได้แบบกึ่งอัตโนมัติ
Verity’s Topic Editor, Collaborative Topic Builder,
GFP,Chimaeras, Protégé, OIL-ED,etc
โดยอ้างอิงจากเวปไซด์ เช่น yahoo!, Amazon, excite
Semi-structured sites can provide starting points
Ontologies มีการใช้เพิ่มขึ้นอย่างรวดเร็ว(โดยมีธุรกิจเป็ นตัวผลักดัน)
เวปไซด์ทางธุรกิจส่วนมากใช้ เช่น Amazon, Yahoo! Shopping
ธุรกิจที่เจริ ญรุ่ งเรื องกาลังสนใจ
ภาษาที่ใช้กาลังเติบโต จาพวก Markup Languages XML,RDF
“Real” ontologies เหมาะสมที่จะเป็ นศูนย์กลาง Application
Implications & Need
ไวยกรณ์และความหมายของ Ontology Language
(DAML+OIL)
ทรัพยากรที่ใช้ในการสร้างและบารุ งรักษาของ Ontologies
ฝึ กฝน (Conceptual Modeling,การอ้างเหตุผลของสิ่ งที่
เกี่ยวข้อง, ……)
Issues
การร่ วมมือ ระหว่างกลุ่มที่เปิ ดเผยข้อมูล
การเชื่อมต่อระหว่างระบบหลายๆแห่งเข้าด้วยกัน
วิเคราะห์และวินิจฉัย
ประมาณ
แบบฉบับ
ความปลอดภัย
ง่ายต่อการใช้
การฝึ กหลากหลายระดับ / สนับสนุนผูใ้ ช้
กลวิธีนาเสนอ
วงจรชีวติ
ความสามารถในการแพร่ ขยายออก
Chimaera
An interactive web-based tool aimed at supporting:
วิเคราะห์ Ontology (ความถูกต้อง, ความสมบูรณ์, ลักษณะ, …)
Merging of ontological terms จากหลายแหล่งเข้าด้วยกันได้
บารุ งรักษา ontologies ตลอดเวลา
การให้เหตุผลของข้อมูลเข้า
Features: multiple I/O languages, loading and merging
into multiple namespaces, collaborative distributed
environment support, integrated browsing/editing
environment, extensible diagnostic rule language
ถูกใช้ในด้านการพาณิ ชย์และวิชาการ
แหล่งข้อมูล: www.ksl.stanford.edu/software/chimaera
Building Ontology
กาหนด classes
จัดเตรี ยมให้อยูใ่ นรู ป Taxonomic hierarchy
sub-class/super-class model
เตรี ยม slots และ facets สาหรับ slots
กาหนดค่าสาหรับ slots ในแต่ละกรณี
Thumb-Rules
ไม่มีวิธีการที่ถูกต้องในการสร้างขอบเขต
มีช่องทางในการทาได้เสมอ
ั การนาไปใช้และขยายต่อ
วิธีการที่ดีที่สุดขึ้นอยูก่ บ
กระบวนการทาซ้ า
แนวความคิดใน Ontology คล้ายกับ objects(รู ปธรรม/
นามธรรม) และ relationships ในขอบเขตที่สนใจ
Objects คือ คานามทัว่ ไป
Relationships คือ กริ ยาทัว่ ไปในประโยค
Step 1: Domain & Scope
อะไรคือขอบเขตที่สนใจ?
อะไรคือจุดประสงค์ของ Ontology นี้ ?
อะไรคือสิ่ งคาดหวังของคาถาม?
ใครเป็ นผูใ้ ช้และบารุ งรักษา Ontology ?
ตัวอย่างคาถาม:
ช้างเป็ นสัตว์กินพืชหรื อสัตว์กินเนื้อ?
ช้างกินอะไรเป็ นอาหาร?
ั มีนิสัยเป็ นอย่างไร?
ช้างแอฟริ กน
Step 2: Re-Use Existing Ontology
ถ้าเข้ากันได้ ก็สามารถใช้ได้แน่นอน
ปั ญหาในการ merging Ontologies?
รู ปแบบขัดแย้ง
แนวคิดเดียวกัน, การนาเสนอต่างกัน
Step 3: Enumerate Terms
Terms คืออะไร?
Properties ของ terms คืออะไร?
Relationships ของ terms คืออะไร?
ตัวอย่าง:
Animal, elephant, lion
ความสู ง, น้ าหนัก, อาหารที่กิน
ั เองได้, ช้างอยูร่ วมกันเป็ นกลุ่ม
ช้างกับควาญช้าง, ช้างผสมพันธุ ์กน
Step 4: Define Classes & Hierarchy
Top-Down Approach
Bottom-Up Approach
Mixed
Object Oriented Programming Analogy
อะไรที่เราจะได้รับ?
การจัดเรี ยง Hierarchical ของ concepts
ถ้า class P is a super-class of class Q, และทุกๆกรณี ของ B
คือ หนึ่งในกรณี ของ P
หมายความว่า : class Q represents a “kind-of” P
Step 5: Properties of Classes - Slots
“intrinsic” properties เช่น softness of silk
“extrinsic” properties เช่น bike’s model
name
Parts, ถ้า object เป็ นรู ปแบบ Structured; สามารถ
กาหนดให้เป็ น physical และ abstact parts ได้
เช่น: เวลาหากินช่วงเช้าของช้าง
Relationships ระหว่างสมาชิกของ class
เช่น: ช้าง กับ ควาญช้าง, สามารถแสดงถึงความสัมพันธ์ระหว่าง ช้าง
อ้างอิงถึงที่อยูข่ องช้าง ผ่านทางควาญช้างได้
Step 6: Define Slots
จานวน values ของ Slot
ตั้งค่า ว่า slot ควรจะมี values ได้กี่ค่า?
ใส่ ค่าของ Slot
มีค่าอะไรที่สามารถใส่ ได้บา้ ง?
ค่ามาตรฐานทัว่ ไป:
String
Number
Boolean
Enumeration
Instance
Step 7: Create Instances
ยกตัวอย่างการสร้าง instance ชื่อ african_elephant
ซึ่งเป็ น instance ของ class elephant
High : 400 cm
Weight : 6,500 Kg
Eat : fruit, leaf (instance of food class)
Behavioer : aggressive
Kind : Herbivore (instance of animal_type
class)
Consistency Checks ??
ทาให้แน่ใจว่า Class hierarchy ถูกต้อง
สิ่ งที่อยูใ่ นระดับเดียวกันของ tree ควรจะมี สิ่ งทัว่ ไปคล้ายๆกัน
classes ที่มีความหมายเหมือนกัน แต่แยกเป็ นคนละ class
ตรวจความสัมพันธ์ “is-a” และ “kind-of”
สิ่ งที่มากเกินไปหรื อน้อยเกินไป
Multiple Inheritance
Consistency Checks ??
เราจะเพิม่ class ใหม่ได้เมื่อไหร่ ?
การเพิ่ม Subclass ของ class โดยทัว่ ไปจะ
Class ใหม่ หรื อ property-value ใหม่?
มีคุณสมบัติเพิ่มเติมที่ super-class ไม่มี
มีขอ้ จากัดที่แตกต่างจาก super-class
มีการอ้างอิง relationships มากกว่าใน super-class มี
class “african_elephant” หรื อ class “elephant” ที่มี
property type เป็ น “african” ขึ้นอยูก่ บั จุดมุ่งหมายที่เราสนใจ
เป็ น Instance หรื อ Class?
Individual Instances เป็ น การแสดงถึงกรณี เจาะจงในฐานความรู้
ถ้า concept ที่สนใจเกิดจากการจาแนกโดยธรรมชาติ จะเป็ น classes
Limiting the Scope
ต้องการที่จะไม่ใส่ ขอ้ มูลที่เป็ นไปได้ท้ งั หมดที่เกี่ยวกับขอบเขต
ต้องการที่จะไม่ใส่ กรณี ทวั่ ไป หรื อ กรณี เฉพาะ มากไปกว่าอะไรที่เรา
ต้องการนาไปใช้
ต้องการที่จะไม่ใส่ properties ที่เป็ นไปได้ท้ งั หมดและ สิ่ งที่
แตกต่าง ในหมู่ classes บน hierarchy
Ontology Merging/Alignment
สิ่ งที่ตอ้ งการ
การช่วยเหลือและคาแนะนาของของกระบวนการ
เครื่ องมือพิเศษสาหรับ ontology merging and
alignment
สิ่ งที่ตอ้ งการ (แต่ยงั ไม่สามารถทาได้)
เครื่ องที่สามารถ merging and alignment ได้อตั โนมัติอย่าง
สมบูรณ์
Mapping, Merging, Alignment
Approaches
การแก้ปัญหาขัดแย้งหลังจาก merging
เปลี่ยนรู ปก่อนทาการ merging
ผลลัพธ์โดยตรง
เกิดการปกคลุมของข้อมูล
ยากที่จะทาซ้ า
กระบวนการสามารถทาซ้ าได้
ไม่เป็ นผลลัพธ์โดยตรง
ใช้เครื่ องมือปรับโดยตรงให้เหมาะสม
สามารถได้ผลลัพธ์โดยตรงจากการปรับเปลี่ยน
ยากที่จะทาซ้ า แต่เป็ นไปได้
SMART Algorithm
Merge Classes (contd..)
Merge Classes (contd..)
Suggestions (contd..)
Source – Car Rental
Source –Airline Reservation
Features
ผลที่ตอบสนองกับผูใ้ ช้
คาชี้แจง
กระบวนการแก้เมื่อเกิดปั ญหา
ดูแลรักษาจุดที่สนใจ
ปรับปรุ งการให้ขอ้ แนะนา
สร้างข้อมูลชัว่ คราวเพื่อยืดเวลาสาหรับการแก้ปัญหา
การสะกดรอยความสัมพันธ์
เก็บความสัมพันธ์ที่อา้ งอิงถึง
เก็บข้อมูลอย่างย่อไว้
Ontology Languages - RDF
RDF คือ Resource Description Framework
เป็ น W3C candidate recommendation
(http://www.w3.org/RDF
RDF เป็ น graphical formalism (+XML syntax +
semantics)
เพื่อเป็ นตัวแทนข้อมูลที่อธิบายถึงข้อมูลอีกชุดหนึ่ง
เพื่ออธิบายถึงความหมายของข้อมูลในสิ่ งที่เครื่ องจักรเข้าใจได้
RDFS extends RDF กับ “schema vocabulary”ตัวอย่างเช่น
Class, Property
Type, subClassOf, subPropertyOf
Range, domain
RDF Syntax --Triples
Subject
Ex: Subject
Property
Object
Ex: Property
Ex: Object
RDF Syntax --Triples
Subject
Ex: Subject
_: xxx
Property
Object
Ex: Property
Ex: Object
RDF Syntax --Triples
Subject
Ex: Subject
_: xxx
Property
Object
Ex: Property
Ex: Object
RDF Syntax --Triples
Subject
Ex: Subject
_: xxx
Property
Object
Ex: Property
Ex: Object
_: yyy
RDF Syntax --Triples
Subject
Ex: Subject
_: xxx
Property
Object
Ex: Property
Ex: Object
_: yyy
<< plain litteral >>
RDF Syntax --Triples
Subject
Ex: Subject
_: xxx
Property
Object
Ex: Property
Ex: Object
_: yyy
<< plain litteral >>
<< lexical >>^^data type
RDF Syntax -- Graph
_: xxx
RDF Syntax -- Graph
<< Palani Ramasamy >>
Ex: name
_: xxx
rdf: type
Ex: Person
RDF Syntax -- Graph
<< Palani Ramasamy >>
Ex: name
_: yyy
_: xxx
Ex: member-of
rdf: type
Ex: Person
RDF Syntax -- Graph
<< Palani Ramasamy >>
<< University of Madras >>
Ex: name
Ex: name
_: yyy
_: xxx
Ex: member-of
rdf: type
Ex: Person
rdf: type
Ex: Organisation
RDFS
RDFS
RDFS vocabulary adds constraints on models, e.g.:
x,y,z type(x,y) subClassOf(y,z) type(x,z)
RDFS
RDFS vocabulary adds constraints on models, e.g.:
x,y,z type(x,y) subClassOf(y,z) type(x,z)
Ex: Person
rdf: subClassof
Ex: Animal
RDFS
RDFS vocabulary adds constraints on models, e.g.:
x,y,z type(x,y) subClassOf(y,z) type(x,z)
Ex: Animal
Ex: Person
rdf: subClassof
Ex: John
rdf: type
Ex: Person
RDFS
RDFS vocabulary adds constraints on models, e.g.:
x,y,z type(x,y) subClassOf(y,z) type(x,z)
Ex: Animal
Ex: Person
rdf: subClassof
Ex: John
rdf: type
Ex: Person
rdf: type
Ex: Animal
Problems with RDFS
RDFS อ่อนในการที่จะอธิ บายทรัพยากรในรายละเอียดที่เพียงพอ
ไม่มีขอ้ บังคับ ของการจากัดวง range และ domain
ไม่สามารถบอกได้วา่ ขอบเขตของ hasChild คือ person เมื่อประยุกต์เป็ น person
and elephant และเมื่อประยุกต์เป็ น elephants
ไม่มีขอ
้ จากัด existence/cardinality
ไม่สามารถบอกได้วา่ ทุกๆกรณี ของ person มี 1 mother นัน
่ คือ mother เป็ น 1
person เช่นกัน หรื อ person มี 2 parents ได้อย่างถูกต้อง
ไม่มีคุณสมบัติ transitive, inverse หรื อ symmetrical
ไม่สามารถบอกได้วา่ isPartOf คือคุณสมบัติ transitive, isPartOf คือ inverse
ของ isPartOf และ touches คือ symmetrical
ความยากในการจาแนก เหตุผลสนับสนุน
ไม่มี “native” reasoners สาหรับ เหตุผลที่ไม่ใช่มาตรฐาน
May be possible to reason via FO axiomatisation
Axiomatisation
An Axiomatisation สามารถถูกใช้ฝัง RDFS ใน FOL,
ตัวอย่าง:
Triple x P y translated as holds2 (P,x,y)
Axioms capture ในส่ วนความหมายของ language
ปัญหาการ axiomatisations include
จะต้องการ set ที่ใหญ่และซับซ้อน ของ axioms
ยากที่จะพิสูจน์ความหมายให้เป็ นการ captured อย่างถูกต้อง
Axiomatisation จะเพิ่มภาระการคานวณอย่างมาก
complexity
RDFS → undecidable (subset of) FOL
ไม่มี interoperability นอกจาก ทุกภาษาที่ axiomatised เช่นเดียวกัน
เช่น C subClassOf D equivalent to
แต่ตอ้ ง axiomatise เช่น holds2(subClass, C, D)
RDF to OWL
สองภาษาที่ถกู พัฒนาโดย extending(ส่ วนหนึ่งของ) RDF
ความพยายามMerged เพื่อสร้าง DAML+OIL
OIL : Ontology Inference Layer
DAML-ONT : DARPA Agent Markup Language
Extends (“DL subset” of) RDF
DAML+OIL
Web-Ontology(WebOnt) Working Group formed
WebOnt group ถูกพัฒนาโดย OWL Language based on
DAML+OIL
OWL language now a W3C Proposed
Recommendation
Description Logics
ครอบครัวหนึ่งของ logic based Knowledge
Representation formalisms
สื บทอดมาจาก semantic networks และ KL-ONE
อธิบายขอบเขตในรู ปแบบของ concepts(classes),
roles(properties, relationships) และ individuals
มีลกั ษณะเด่นคือ
Formal semantics (แบบจาลองอย่างเป็ นแบบฉบับตามหลักทฤษฎี)
ตัดสิ นใจได้ในส่วนที่แยกจาก FOL
มีความเกี่ยวข้องอย่างใกล้ชิดกับ Prepositional Model & Dynamic Logics
การจัดเตรี ยมของ inference services
การตัดสิ นใจใช้กระบวนการสาหรับการแก้ไขปัญหา (ความพึงพอใจ, การสมมติฐาน, ฯลฯ)
Implemented systems (highly optimized)
DL Basics
Concept คือ สิ่ งที่เทียบได้กบั unary predicates
โดยทัว่ ไป, concepts จะเท่ากับ สูตรที่มีตวั แปรอิสระ 1 ตัว
Role คือ สิ่ งที่เทียบได้กบั binary predicates
โดยทัว่ ไป, roles จะเท่ากับ สูตรที่มีตวั แปรอิสระ 2 ตัว
Individual คือสิ่ งที่เทียบได้กบั ค่าคงที่
Operators จากัดความได้วา่ :
ภาษาตัดสิ นใจได้ และ ถ้าเป็ นไปได้, มีความซับซ้อนน้อย
ไม่ตอ้ งการที่จะใช้ตวั แปรอย่างชัดเจน
จากัดความจาก และ (ติดต่อกันโดยตรงด้วย < > และ [ ])
ลักษณะ เหมือนกับ การนับที่ส้ นั กระชับว่องไว
DL System Architecture
DL Family
ถูกใช้บ่อยสาหรับ
ใน transitive roles(R+)
Additional letters บ่งบอกถึง extensions อื่นๆ
ตัวอย่างเช่น
+ R+ + role hierachy + inverse + QNR =
is the basis for W3C’s OWL Web Ontology
Language
OWL DL
OWL Lite
(นัน่ คือ
)
extended with nominal (นัน่ คือ
)
with only functional restrictions
DL Knowledge Base
A TBox is a set of “schema” axioms(sentences)
An ABox is a set of “data” axioms (ground facts)
ตัวอย่าง
ตัวอย่าง
A Knowledge Base (KB) คือการรวมของ TBox บวก ABox
DL Reasoning
W
marriedTo
hasChild
HappyParrent J
hasChild
M ~Doctor
DL Reasoning
ตัวอย่าง : KB:
W
marriedTo
hasChild
HappyParrent J
hasChild
M ~Doctor
DL Reasoning
ตัวอย่าง : KB:
W
marriedTo
hasChild
HappyParrent J
hasChild
M ~Doctor
DL Reasoning
ตัวอย่าง : KB:
W
marriedTo
hasChild
HappyParrent J
hasChild
M ~Doctor
DL Reasoning
ตัวอย่าง : KB:
W
marriedTo
hasChild
HappyParrent J
hasChild
M ~Doctor,
(Doctor _ hasChild.Doctor),
hasChild.Doctor
DL Reasoning
ตัวอย่าง : KB:
W
marriedTo
HappyParrent J
hasChild
M ~Doctor,
hasChild
(Doctor _ hasChild.Doctor),
hasChild.Doctor
hasChild
?
Doctor
OWL
3 สายพันธุ์ ของ OWL
Semantic layering
OWL DL
OWL full ภายใน DL fragment
OWL DL พื้นฐานบน
OWL full เป็ น union ของ OWL syntax และ RDF
OWL DL ซึ่งมีขอบเขตใน FOL fragment (
DAML+OIL)
OWL Lite คือ “simpler” subset ของ OWL DL
ในความเป็ นจริ ง มีค่าเทียบได้กบั
Description Logic
DL
OWL DL ผลประโยชน์ที่ได้จากการวิจยั DL เป็ นเวลาหลายปี
ง่ายในการนิยาม semantics
Formal properties ง่ายต่อการเข้าใจ (ความซับซ้อน, ความสามารถในการตัดสิ นใจ)
รู้จกั reasoning algorithms
Implemented systems (ใช้ให้เหมาะสมได้ดี)
OWL constructors
OWL constructors
XMLS datatypes และ classes ใน
ตัวอย่าง
hasAge.nonNegativeInteger
P.C และ
P.C
OWL constructors
XMLS datatypes และ classes ใน
ตัวอย่าง
P.C และ
P.C
hasAge.nonNegativeInteger
ไม่มีกฎเกณฑ์ที่ซบั ซ้อน nesting ของ constructors
ตัวอย่าง Person
hasChild.Doctor
hasChild.Doctor
RDFS Syntax
RDFS Syntax
OWL Axioms
OWL Axioms
References
Thanks
ติดต่อผูเ้ ขียนได้ที่ [email protected]
Checktronix India Pvt Ltd,
9 Ramanathan Street,
Kilpauk, Chennai 600010
Phone: 044 30570028-32
ที่ปรึ กษาเรี ยบเรี ยงบทความ อ.ธวัชชัย เอี่ยมไพโรจช์