[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now


Expert System Design Funadmentals - HowTo?

Posted on 2009-02-17
Medium Priority
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 (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

Question by:DrTribos
  • 2
LVL 85

Accepted Solution

Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 1500 total points
ID: 23658944
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 15

Author Comment

ID: 23664711
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 15

Author Closing Comment

ID: 31547694
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

Featured Post

Prep for the ITIL® Foundation Certification Exam

December’s Course of the Month is now available! Enroll to learn ITIL® Foundation best practices for delivering IT services effectively and efficiently.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In real business world data are crucial and sometimes data are shared among different information systems. Hence, an agreeable file transfer protocol need to be established.
Instead of error trapping or hard-coding for non-updateable fields when using QODBC, let VBA automatically disable them when forms open. This way, users can view but not change the data. Part 1 explained how to use schema tables to do this. Part 2 h…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…

873 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