Expert System Design Funadmentals - HowTo?

Posted on 2009-02-17
Last Modified: 2013-11-15
Hi Experts,

I am looking at designing an Expert System. I have done some looking around and it seems that most examples of expert systems drill down to a single goal.

For example:
- Whale watcher (
- Medical (
- Financial (
- Car won't start (

I find myself in the role of "Knowledge Engineer" as it is described towards the end of this wiki (

So, I'm out of my depth - again - in a major way :-)

In short there is no 'single' answer for my application. The output of the expert system should look something like this:

"Cause A"  seems to be your main problem, we suggest trying the following...
"Cause D" and "Cause F" seem to be contributing factors... we suggest checking...

We have 6 Major categories - I would generally expect 2 to 3 of these to be implicated as Cause of a problem and with 1 being a clear "main cause".

The recommendations are based on sub-categories... so for each category we need to drill down further to determine the sub-causes... (I think this makes sense...).

So, questions:

* How can I best structure my information?
* Do I use Forward or Reverse chaining?
* Is there a generic template available where I can test my own data tables?
* Should I ask questions 1 at a time or in groups?
* Should I ask yes not questions or also include option lists?
* What is a small/large data set (I envisage ~100 If-Thens)
* Is there a download that I can just plug in my data without having to create a whole ES?

Any advice greatly appreciated - many thanks

Question by:DrTribos
    LVL 84

    Accepted Solution

    This is a very broad question ... and you've got about a dozen questions rolled up into one.

    It seems your last link would be a very good resource, if not the best way to go.

    If, however, you want to build this on your own, then:

    Access can likely handle this, but you might be better off with SQL Server as the data store, since it can handle Full Text Indexing. I don't know of any templates available, but a search might turn some up.

    Unless you have a very narrow set of "questions" that could be asked, it'd seem to me that you'd have to pick out keywords in the question and in the answers, and base your "results" on that, and the more keywords that were entered, the better the "matches". So if I enter:

    "My car won't start"

    I'd likely get a very generic list, but if i enter:

    "My 1999 Ford F-350 with 7.3 diesel has trouble starting on cold mornings"

    I'd get a much more focused list.

    So it would seem that you would (a) have to have some sort of idea of the questions to be asked and then (b) build a set of answers to those questions and then (c) pick out the relevant keywords and relate them to the answer. It would also seem that you'd want to "weight" certain keywords in terms of focus. In my second example, perhaps the terms "1999", "Ford", "F-350" would carry more "weight" that the terms "cold" and "starting", as they are far more focused and thus should be given more precedence.

    I did something similar to this with a wizard I built. The db stored WorkOrders and associated Problems encountered during the course of execution of those workorders. Since it was quite common for the same issue to creep up again and again (this was an R&D application), they needed some way to view Problems that might be associated with older, similar WorkOrders. I picked out keywords from the associated WorkOrder (a WO was always present if a problem was being entered), compared them to keywords from older WorkOrders and determined if those older WO had a Problem associated with them ... I then assigned a "value" to those problems (based simply on the number of keywords matched) and presented the user with a list.

    It would seem something like this would be a suitable start.

    And again - this seems like a big task. Try breaking it up into more manageable questions and post those. You'll probably get better answers that way.

    But that's just me ... I'm sure there are many other ways to do this
    LVL 14

    Author Comment

    Hi LSMConsulting

    Thanks for your reply. Unless I don't understand your comments (snippet below) I think that I may have miss-led you. I'm looking a solution whereby I (the expert system) asks questions and the next question that the expert depends on the answer to the first question...

    From your comment I'm thinking the user starts the "interview" by asking a question and the expert system picks up on the theme/problem and starts building questions from there...

    Unless you have a very narrow set of "questions" that could be asked, it'd seem to me that you'd have to pick out keywords in the question and in the answers, and base your "results" on that, and the more keywords that were entered, the better the "matches". So if I enter:"My car won't start"I'd likely get a very generic list, but if i enter:"My 1999 Ford F-350 with 7.3 diesel has trouble starting on cold mornings"I'd get a much more focused list.
    My expert does not have to be that smart, well might do an upgrade in time to come but not in the foreseeable future.

    Presumably what I want to achieve is now a simpler task? (hopeful thinking)

    Thanks, Steve
    LVL 14

    Author Closing Comment

    Hi LCM - I figured some point are better than none? Anyway, I'm closing this very broad question and will be looking for more specific solutions. Kind regards, Steve

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Course: HTML5 Mobile App Development with PhoneGap

    PhoneGap can help you leverage your already existing HTML5, JavaScript, and CSS skills in order to create and deploy cross-platform mobile apps.This program comprehensively covers HTML5 mobile app development from top to bottom.

    Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
    Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
    An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …
    In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…

    737 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    19 Experts available now in Live!

    Get 1:1 Help Now