Expert System Design Funadmentals - HowTo?

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 (http://www.aiinc.ca/demos/whale.html)
- Medical (http://easydiagnosis.com/cgi-bin/expert/thorask/thorask.cgi)
- Financial (http://www.myacquire.com/aiinc/stock/rds.asp)
- Car won't start (http://www.expertise2go.com/webesie/tutorials/ESIntro/)

I find myself in the role of "Knowledge Engineer" as it is described towards the end of this wiki (http://en.wikipedia.org/wiki/Expert_system).

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

Steve
LVL 15
DrTribosAsked:
Who is Participating?
 
Scott McDaniel (Microsoft Access MVP - EE MVE )Infotrakker SoftwareCommented:
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
0
 
DrTribosAuthor Commented:
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...

LSMConsulting:
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
0
 
DrTribosAuthor Commented:
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
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.