Slashdot Mirror


Simple-to-setup Expert System?

Mark Hood writes: "I've been asked to provide a simple trouble-shooting guide for new engineers to follow when presented with an unfamiliar fault or bug report. Mainly this can be done with static web pages and a series of 'yes/no' questions... (Is it plugged in? Is it switched on? etc) but a nice facility would be to allow engineers to update it with what they did to fix faults / gather information. The question is: does anything simple like this already exist? Web searches turn up loads of 'Expert System Shells' or 'Programming Systems', but I was hoping for something that wouldn't require months of dedicated time (this is not my job, I'm just helping out :). Anyone done this at their workplace? Any hints? Or should I knuckle down and write a few CGI scripts for adding data to a web page?"

8 of 28 comments (clear)

  1. Simple? by helixblue · · Score: 4, Informative

    I'd almost make a real simple, searchable solution. Install PHPWiki (or insert your favorite WikiWikiWeb implementation), and have some pages like:

    --------
    * [After blah happens, Does this happen when this happens?]
    * [After blah happens, does this not happen?]

    Insert description of what may be going on if it's neither of the links to the next pages.

    ---------

    and have wiki links to other pages asking questions as similar links.

    It's simple, braindead, no custom coding, and laughingly easy for any engineer to update. It's not the most elegant solution, but in a pinch, it'll work. In my current and previous workplaces, the IT departments (at least the UNIX folks) have used wiki's for documenting just bout everything.

  2. CLIPS by ameoba · · Score: 3, Informative

    I've heard good things about CLIPS, for expert-system authoring. It's another one of those NASA projects. Another approach might be to read a usenet group on expert systems and see what ppl are talking about; while not the best approach, it's a decent indicator of popularity.

    http://www.ghg.net/clips/CLIPS.html

    --
    my sig's at the bottom of the page.
    1. Re:CLIPS by jilles · · Score: 3, Informative

      I think you are missing the point about expert systems. Expert systems are about specifying sets of rules. Clips is a system that provides an engine for interpreting such rules. There's no way you can somehow avoid specifying those rules for your system.

      If your problem is simple enough, maybe an expert system is overkill and you can program it with some if statements in a cgi script.

      Specifying the rules in an expert system is not that hard at all and certainly won't take you several months. Making the expert system interact with a bunch of cgi scripts shouldn't be that hard either.

      A system you might want to look at is JESS (Java Expert System Shell) which is based on CLIPS:
      http://herzberg.ca.sandia.gov/jess/

      You could use it in a servlet or as an applet.

      --

      Jilles
  3. Not too helpful but... by Bazzargh · · Score: 3, Informative

    I dont know of anything that does what you want off-the-shelf for little or no money. However, one step up from the 20-questions game approach is to get your system to optimise the decision tree.

    What you are trying to do here is supply incomplete information about a problem, in order to classify it, so you can suggest a fix. There is an algorithm (the ID3 algorithm, see eg http://www.cise.ufl.edu/~ddd/cap6635/Fall-97/Short -papers/2.htm) which can construct an optimal decision tree for classifying supplied data.

    In order for ID3 to work you need to supply it with examples where the data was classified correctly. This translates to faults where the problem was identified and resolved; you can learn from previous examples simply by treating every resolved problem as part of your training set (and rebuild your decision tree).

    You will also need to decide what data you are going to use for classification. This is simply done: when you fail to resolve a problem, ask the engineer what question should have been asked to identify the problem; something which takes a finite number of responses. Treat every question as having N 'known' responses (things that engineers have answered) and 1 'other' answer (this allows you to classify problems when data is incomplete, or known but not used in existing classified problems).

    This approach would probably work. I've thought about using it before when I ran a helpdesk. But, it is fairly restrictive (questions have to be completely independent, for example, so that ID3 can reorder the decision tree), and the questions engineers supply might not help to learn much (eg: if the problem turned out to be the 'flange widget being loose' then the engineer might suggest 'is the flange widget loose' as a question; instead of the better question - 'Q: is there a loose widget? A: Yes, the flange widget.')

    When I thought about writing this I thought it would also be useful to allow the engineer to add text suggesting how to determine the answer to the question ('examine all 6 washers under the grommit hinge') and an explanation of why the question is being asked, to teach the engineers ('loose or worn washers can rattle about. The gromit hinge washers have been prone to this in the past')

    Anyway, hope this helped a little showing you how you could create a trainable system. As other posters have commented, CLIPS and the like require the rules to be written in the first place. ID3 is actually simple enough that you could code this yourself without much trouble, and downloadable implementations exist on the net. There are incremental variants (search for ID5) which avoid rebuilding the whole decision tree when a new solved problem is added.

    For more sophisticated systems that actually try to do this right, take a look at the expert systems faq: http://www-2.cs.cmu.edu/Groups/AI/html/faqs/ai/exp ert/part1/faq.html , and machine learning faqs: http://www.andypryke.com/university/ai_ml.html

  4. "Expert" system by Mignon · · Score: 3, Informative

    The only simple to setup expert system I know of is the Magic 8 Ball.

  5. Maybe I'm missing something, but... by Anonymous Coward · · Score: 2, Informative
    It looks like the needs are closer to a bug tracker. Sure it won't have a Q & A interface where an engineer is asked questions and provides the answer. But it is easier to get an open source bug tracker up and running with minimal maintenance over head.

    I know of support systems that utilize expert system shells implemented either with iLog or some other java Expert system shell. They typically require about 3-5 months with 3 knowledge engineers to build the knowledgebase. Writing efficient rules is an art, which many people do not realize. I've know and heard of people writing rules as if it was procedural programming and took a dozen pages or more.

    My advice is don't go down that route unless it is an authorized project and has the funds allocated for it. Working with expert system shells takes a lot of skill and experience to do effectively. How the rules are written can greatly impact the performance of the engine and application. CLIPs and JESS both implement the RETE algo, which is a forward chaining algo. For support purposes RETE is fine, since you're dealing with simple question and answers. You may want to check out iLog, since they have done that type of thing in the past.

  6. Case Based Reasoning by regen · · Score: 4, Informative
    You may want to investigate using a case based reasoning system (I believe ART Enterprise has CBR capabilities, its been a while since I've worked with A*E)

    In general, I think you are going to find that even if you pick a general rule based package such as CLIPS or iLog Rules or go with some that has CBR capabilities such as A*E the project is going to be a lot more difficult than you think.

    Diagnositic expert systems are not simple, and having a good tool is only the begining. If you want a usuable effective system plan to have 2-3 experts work at least a year to develop it.

    Disclaimer: I develop expert system for a living, and have extensive experience developing diagnostic systems. Most clients I've worked with have no idea how difficult a problem this is. You really have restrict your problem domain or the task is impossible.

  7. WebLS by leov211 · · Score: 2, Informative

    This is a free tool, from Amzi, for putting together an expert system that's assessible through CGI. http://www.amzi.com/download/webls.htm According to Amzi this is not a supported tool, but I've found it to be sufficient for simple problems. For a full fledge solution go for their KnowledgeWright.