views:

163

answers:

3

Is LISP or something like Jess the best choice? I'm interested in writing a program that makes a suggestion based on users' answers. Computational considerations are not really a factor this is pretty much a pattern matching engine. Also I would like to make an app for this and put it up on the web.

UPDATE: I would like to put this up on a blog or website and let people use it from there. I guess my question then is there a particular inference engine that works with the .NET family, or PHP, or something to that effect? What are some of the pros and cons of each options etc.

+5  A: 

Step 1. Pick an inference engine. There are many choices. Here's a list: http://en.wikipedia.org/wiki/Expert_system#Shells_or_Inference_Engine

Step 2. Use the language that interfaces with the inference engine.

You'll be much happier leveraging an inference engine for expert systems work.


I would like to put this up on a blog or website and let people use it from there

Trivial.

is there a particular inference engine that works with the .NET family, or PHP, or something to that effect?

Doesn't matter.

Here's the confusion. Your "web site" and your "inference application" have NOTHING to do with each other. Nothing.

Your web site can be done in any tool set you can find. It doesn't matter.

Your inference application can be done in any tool set you can find. It doesn't matter.

Your web site will invoke the inference application through any API that makes sense. The lowest common denominator in API's (the reason that none of these choices matter) is to do this.

  1. Write your inference application as a stand-alone command line tool.

  2. Write your web application to run the stand-alone tool, collect the output and turn the output into an HTML page.

Note that this multi-porocess implementation may be faster and make better use of multi-core processors. It forces the OS to manage the web server (Apache HTTPD, for example), the web application and the expert system as potentially three, separate, parallel processes.

S.Lott
I used CLIPS to get my prototype up and running but I have no idea how to make that web accessible or put into an app. Any suggestions?
nmr
@nmr: "I have no idea how to make that web accessible". That's not your question, is it? Please either update your question or ask another question.
S.Lott
+2  A: 

You will hear a lot of subjective opinions here, since few people have experience in more than one language writing expert systems.

I can recommend Common Lisp, as there is quite some literature and existing code available in this language, and it is a very powerful language and not too difficult to learn (read "Practical Common Lisp" by Peter Seibel). Of course, any new high level language requires some effort to learn. For the web application, you can use, e.g., Hunchentoot and CL-WHO, and there are a lot of database bindings (I like Postmodern and CL-SQLite).

Svante
+3  A: 

You can also take a look at Prolog. SWI-Prolog (http://www.swi-prolog.org) is very complete and has an HTTP support library included (http://www.swi-prolog.org/pldoc/package/http.html). This paper might be helpful in using SWI-Prolog on the web ("SWI-Prolog and the web" http://dare.uva.nl/record/285350)

And, you can find a tutorial on building expert systems with prolog at: http://www.amzi.com/ExpertSystemsInProlog/

Roman