Natural Language Processing in Prolog/Pop11/Lisp is
specifically intended to teach natural language processing and
computational linguistics: it does not attempt to teach programming or
computer science to linguists or to provide more than an implicit
introduction to linguistics for computer scientists.
The main focus of this book, as of the field to which it
provides an introduction, is on the processing of the orthographic
forms of natural language utterances and text.
Introduction - looks briefly at the origins
of natural language processing, the emergence of structural notions in
NLP, the ways in which researchers have attempted to represent meaning,
the increasing appreciation of the role of real-world knowledge, and
the early indications that NLP is moving from academic research into
commercial technology. The chapter concludes by considering the
appropriateness of using Prolog for NLP
Finite-state techniques - covers finite state
techniques for NLP, beginning with finite state transition networks and
their implementation in Prolog, more interesting and useful finite
state transducers, and a brief look at the limitations of finite state
machines
Recursive and augmented transition networks
Grammars - considers the declarative
representation of grammars, words, rules and structures, and introduces
the PATR grammar formalism
Parsing, search and ambiguity - looks at parsing,
search and ambiguity, considers a simple parsing problem is minute
detail, distinguishes bottom-up from top-down parsing, and
breadth first from depth first search strategies,
touches on the possibility of storing intermediate results,
investigates the major sources of ambiguity, and
explains determinism and lookahead
Well-formed substring tables and charts - pursues the
possibility of storing intermediate results in great detail by
introducing well-formed substring tables & charts.
The fundamental rule of active chart parsing is discussed, as are
such topics as chart initialization, rule invocation, search strategy,
housekeeping, efficiency, and alternative rule invocation strategie
Features and the lexicon - develops the
feature-theoretic view of syntax and then goes on to look at the nature
of the lexicon presupposed by feature-based language models. Feature
structures are treated as graphs and implemented in Prolog,
subsumption and unification are defined, and a Prolog realization
of PATR is presented. Issues that arise in chart parsing with
feature-based grammars, such as copying, duplication checking,
indexing, and the conflation of similar edges, are discussed.
The rest of the chapter is devoted to the representation of lexical
knowledge and the implemention of a lexicon in Prolog
Semantics - moves from syntax to semantics via the
notion of compositionality, and a look at meaning as reference
Question answering and inference - includes such
topics as the evaluation of DBQ formulae, standard logical inference,
the implementation in Prolog of backwards and forwards inference,
the pathological nature of logical inference, primitives and canonical
forms, inheritance and defaults. A simple
semantic network in Prolog is also covered
Pragmatics - considers the
semantic and pragmatic roles of noun phrases. It presents
the contrast given and new information, the notion of
understanding by prediction, and the use of discourse structure. It
ends by presenting language generation as a goal-oriented process and
language understanding as plan recognition
This book is aimed at computer scientists and linguists
at undergraduate, postgraduate, or faculty level, who have taken, or
are concurrently taking, a programming course in Prolog.
The work comprises two parts: Prolog Techniques and
Applications of Prolog. This volume is in four chapters and illustrates
special Prolog programming techniques. The second volume concentrates
on applications of Prolog, mainly from Artificial Intelligence.
This book provides a good compilation of programming
projects, case studies and exercises of various complexity.
Chapters cover:
Accumulator Technique - for defining predicates by
recursion. In the absence of a language construct for writing loops
such as while and for loops, repetition in Prolog is accomplished by
recursion
Difference Lists - a useful technique that allows
predicates involving certain list operations to be implemented very
efficiently
Program Manipulations - demonstrates how this feature
of Prolog can be made use of in practice. The chapter discusses the
built-in Prolog predicates for basic database maintenance work, a tool
for automated program unfolding, and how Prolog can be used to define a
Prolog program some features of which are specified at runtime
Exploratory Code Development - a software development
style that is interactive, incremental, exploratory and allows Prolog
code to be arrived in an easy way
Artificial intelligence is a tool for complex problems,
and its program examples can easily be extremely complicated. Neil Rose
has written a book designed to make it easier to learn. The author
explains difficult concepts in a simple, concrete way.
This book is intended for all first courses in
artificial intelligence at the undergraduate or graduate level,
requiring background of only a few computer science courses.
Chapters cover:
Representing facts
Variables and queries
Definitions and inferences
Arithmetic and lists in Prolog
Control structures for rule-based systems
Implementation of rule-based systems
Representing uncertainty in rule-based systems
Search
Implementing search
Abstraction in search
Abstraction of facts
Problems with many constraints
A more general logic programming
Testing and debugging of artificial intelligence
programs
The book integrates practical programming examples, in
the style of programming language and data structures books. Solving
problems is the best way to learn artificial intelligence. There are
lots of exercises in this book, at the ends of chapters.