ADRIAN@IBM.COM.UUCP (02/19/87)
A new book which may be of interest to readers of AILIST-- KNOWLEDGE SYSTEMS AND PROLOG A LOGICAL APPROACH TO EXPERT SYSTEMS and NATURAL LANGUAGE PROCESSING Adrian Walker (Ed.), Michael McCord, John F. Sowa, Walter G. Wilson Addison-Wesley, 1987 This book introduces Prolog and two important areas of Pro- log use-- expert systems and natural language processing systems (together known as knowledge systems.) The book covers basic and more advanced Prolog programming, describes practical expert systems and natural language processing in depth, and provides an introduction to the formal basis in mathematical logic for the meaning of Prolog programs. HIGHLIGHTS y Presents significant examples of knowledge systems, with useful parts of actual programs included. y Describes important research results in expert systems, natural language processing, and logic programming. y Integrates many trends in knowledge systems by bringing diverse representations of knowledge together in one practical framework. y Though useful with any Prolog implementation, provides an introductory tutorial followed by advanced program- ming techniques for IBM Prolog. TABLE OF CONTENTS Chapter 1. Knowledge Systems: Principles and Practice (Adrian Walker ) 1.1 What is a Knowledge System? 1.2 From General to Specific, and Back Again 1.3 Prolog and Logic Programming 1.4 Knowledge Representation 1.5 Getting the Computer to Understand English 1.6 Some Trends in Knowledge Acquisition 1.6.1 Learning by Being Told 1.6.2 Learning by Induction from Examples 1.6.3 Learning by Observation and Discovery 1.7 Summary Chapter 2. A Prolog to Prolog (John Sowa) 2.1 Features of Prolog 2.1.1 Nonprocedural Programming 2.1.2 Facts and Predicates 2.1.3 Variables and Rules 2.1.4 Goals 2.1.5 Prolog Structures 2.1.6 Built-in Predicates 2.1.7 The Inference Engine 2.2 Pure Prolog 2.2.1 Solving Problems Stated in English 2.2.2 Subtle Properties of English 2.2.3 Representing Quantifiers 2.2.4 Choosing a Data Structure 2.2.5 Unification: Binding Values to Variables 2.2.6 List-Handling Predicates 2.2.7 Reversible Predicates 2.3 Procedural Prolog 2.3.1 Backtracking and Cuts 2.3.2 Saving Computed Values 2.3.3 Searching a State Space 2.3.4 Input/Output 2.3.5 String Handling 2.3.6 Changing Syntax 2.4 Performance and Optimization 2.4.1 Choosing an Algorithm 2.4.2 Generate and Test 2.4.3 Reordering the Generate and Test 2.4.4 Observations on the Method Exercises Chapter 3. Programming Techniques in Prolog (Walter Wilson) 3.1 How to Structure Prolog Programs 3.1.1 Logic Programming Development Process 3.1.2 Declarative Style 3.1.3 Data Representation 3.1.4 Structuring and Verifying Recursive Programs 3.1.5 Control Structures 3.2 Techniques and Examples 3.2.1 Meta-level Programming 3.2.2 Graph Searching 3.2.3 Balanced Trees 3.2.4 Playing Games and Alpha-beta Pruning 3.2.5 Most-Specific Generalizations 3.3 Summary of Prolog Programming Principles Exercises Chapter 4. Expert Systems in Prolog (Adrian Walker) 4.1 Knowledge Representation and Use 4.1.1 Rules 4.1.2 Frames 4.1.3 Logic 4.1.4 Summary 4.2 Syllog: an Expert and Data System Shell 4.2.1 Introduction to Syllog 4.2.2 A Manufacturing Knowledge Base in Syllog 4.2.3 Inside the Syllog Shell 4.2.4 Summary of Syllog 4.3 Plantdoc 4.3.1 Using Plantdoc 4.3.2 The Plantdoc Inference Engine 4.3.3 Weighing the Evidence 4.3.4 Summary of Plantdoc 4.4 Generating Useful Explanations 4.4.1 Explaining Yes Answers, Stopping at a Negation 4.4.2 Explaining Yes and No Answers, Stopping at a Negation 4.4.3 Full Explanations of Both Yes and No Answers 4.5 Checking Incoming Knowledge 4.5.1 Subject-Independent Checking of Individual Rules 4.5.2 Subject-Independent Checking of the Knowledge Base 4.5.3 Subject-Dependent Checking of the Knowledge Base 4.6 Summary Exercises Chapter 5. Natural Language Processing in Prolog (Michael McCord) 5.1 The Logical Form Language 5.1.1 The Formation Rules for LFL 5.1.2 Verbs 5.1.3 Nouns 5.1.4 Determiners 5.1.5 Pronouns 5.1.6 Adverbs and the Notion of Focalizer 5.1.7 Adjectives 5.1.8 Prepositions 5.1.9 Conjunctions 5.1.10 Nonlexical Predicates in LFL 5.1.11 The Indexing Operator 5.2 Logic Grammars 5.2.1 Definite Clause Grammars 5.2.2 Modular Logic Grammars 5.3 Words 5.3.1 Tokenizing 5.3.2 Inflections 5.3.3 Slot Frames 5.3.4 Semantic Types 5.3.5 Lexical Look-up 5.4 Syntactic Constructions 5.4.1 Verb Phrases, Complements, and Adjuncts 5.4.2 Left Extraposition 5.4.3 Noun Phrases 5.4.4 Left-Recursive Constructions 5.5 Semantic Interpretation 5.5.1 The Top Level 5.5.2 Modification 5.5.3 Reshaping 5.5.4 A One-Pass Approach 5.6 Application to Question Answering 5.6.1 A Sample Database 5.6.2 Setting up the Lexicon 5.6.3 Translation to Executable Form 5.6.4 A Driver for Question Answering Exercises Chapter 6. Conclusions (Adrian Walker) Appendix A. How to Use IBM Prolog (Adrian Walker & Walter Wilson) A.1 A Simple Example A.2 Detailed Programming of a Metainterpeter A.3 Testing the Metainterpreter at the Terminal A.4 VM/Prolog Input and Output A.5 VM/Prolog and the VM Operating System A.6 Tailoring VM/prolog A.7 Clause Names and Modules A.8 Types, Expressions, and Sets A.9 MVS/Prolog Appendix B. Logical Basis for Prolog and Syllog (Adrian Walker) B.1 Model Theory Provides the Declarative View B.2 Logical Basis for Prolog without Negation B.3 Logical Basis for Prolog with Negation B.4 Further Techniques for Interpreting Knowledge Bibliography Author Index Subject Index The book can be ordered direct from Addison-Wesley. In the USA, phone 617-944-3700, ask for the Order Department, and quote title, authors, and Order Number ISBN 09044. Adrian Walker IBM T.J. Watson Research Center PO Box 704 Yorktown Heights NY 10598 Tel: 914-789-7806 Adrian @ IBM.COM