For further details about my research in AI, please see my DEA page.
I present in this page some tools I have written during my training
period in AI at ENSEEIHT in the G.R.A.A.L. team. We use
SWI-Prolog as a programming
language. If you are reading this page it is useless to tell you about
the power of such a language :-).
Treatment of Natural
Language
Two methods have been implemented to parse natural language in a
simple way. For a more elaborate parsing, report to the work of David Ricordel (DEA at
ENSEEIHT) who made an extension of the Montague categorial grammar.
Categorial Grammar
Lambek-Gentzen’s Calculus
Lambda-calculus
Top-Down Parser
Bottom-Up Parser
Lexical Functional Grammar
Implementation of LFG Formalism in Prolog
Lambda-calculus
Top-Down Parser
Expert Systems
In a first approach of dialogue we wrote small expert systems in
Prolog. First versions were very simple but still had interesting
features:
Parametrisable inference rules: The inference engine is not
frozen. On the contrary it can interpret a set of inference rules to
apply it to a knowledge base.
Backward and forward chaining: These expert systems can use
inference rules with forward and backward chaining. These two kinds of
chaining are interesting and complementary. As a matter of fact backward
chaining is equivalent to asking a question and forward chaining to
blindly exploring facts.
Use of a modal first order logic
Maintenance of
Consistency in a Knowledge Base
The main point in the use of a knowledge base is the maintenance of
the consistency. We have chosen a probabilistic approach. Inspired from
the DEA an adaptation of RMS to probabilistic logic (see DEA lesson about Plausible Reasoning and
Uncertainty) leads us to “Probabilistic Truth Maintenance System”
(PTMS). The main idea is to associate a probability to every logical
formulas. We use a modal first order logic (RMS is limited to
propositional logic).
Not yet fully implemented.
Dialogue Game
My training period deals with dialogue modelling. We want to model
dialogue agents and different kinds of dialogues. At present agents
dialogue using a formal language (first order logic). The program
simulates two agents that have each their own characteristics (inference
engine, knowledge, goal, …).
Some useful tools in Prolog
The implementation of above programs needs some predicates that prove
to be very useful in a lot of cases. The topics are diversified:
Error Handling
Data Bases
User Interface
Sorting
Control Structures
Unification
Term Substitution
…
I won’t develop there all these subjects. Meanwhile it is interesting
to say something about unification and term substitution.
Unification
Unification is of course integrated in Prolog. In the mean time a lot of
compilers/interpretors only have a simplified unification (without occur
check). These Prolog implementations run fast and allow the use of
cyclic terms (see the implementation of PTMS). In some cases it is
better to avoid cyclic terms (X=f(X) should fail). The implementation of
unification that we use is based on a unification with occur check
available in every AI repositories on Internet.
Substitution
As soon as one programs in Prolog, rewriting systems appear to be
necessary. I use a term rewriting system in the dialogue simulator to
transform agent and game descriptions into machine interpretable
descriptions. This rewriting system is powerful enough in this case to
produce a simulable description from a human readable description. This
rewriting system can also be used to transform logical formulas. The
substitution program has been entirely written during my training
period. I couldn’t find such a Prolog program on Internet. If somebody
has already written something similar I’m open to any discussions.