
NLP with Prolog in IBM Watson - helwr
http://www.cs.nmsu.edu/ALP/wp-content/uploads/2011/03/PrologAndWatson1.pdf
======
catechu
While I do not know whether or not Watson actually does this, the paper
doesn't mention anything about parallelism -- I suspect that the exploitation
of structured parallelism is another handy benefit to using Prolog on as many
machines as Watson was using.

(For example: <http://lambda-the-ultimate.org/node/1867.>)

~~~
danieldk
There is so much ambiguity in language that parallelization is often possible
at a very course-grained level. This usually doesn't require more cleverness
than multi-processing or multi-threading.

Given that they switched from their own pattern matching language to an
optimized WAM, I suspect they use one of the common Prolog implementations.

------
mark_l_watson
Nice article. I haven't been hired for Prolog work in a number of years, but I
used to use the language a lot.

I liked the characterization of appropriate uses of Prolog: "excellent
solution for the problem of pattern matching and all problems that involve a
depth-first search and backtracking."

~~~
steve19
When was the last time you were hired to do prolog?

I have always longed to be paid to work in prolog since I was introduced to it
in college.

~~~
mark_l_watson
About 5 or 6 years ago. Prolog is still used so if you are enthusiastic you
might do an open source project in Prolog to draw attention of other people
using the language.

~~~
swannodette
You do Clojure, right? I've been working on a Prolog in Clojure,
<https://github.com/clojure/core.logic>. Hoping to get stratified negation and
Definite Clause Grammar support soon.

~~~
mark_l_watson
Thanks, I'll look at your project.

------
swannodette
Fascinating! Recently I've been falling in love with Prolog and it's
possibilities particularly when it's fast and embedded in a Lisp.

~~~
mahmud
Prolog is awesome as a library, embedded in another "normal" language.

Prolog as a culture is amazing; the depth of it, specially when it's submerged
in other disciplines, like constraint logic programming.

But, standalone, as a language, by itself: it either forces your problem into
a text-book toy exercise, or drives you to frustration. It does all the
difficult stuff out of the box, but you will need to cut through it with a
machete to accomplish the mundane.

~~~
danieldk
My experience is the opposite. I work on a parsing/generation system that was
developed in our group. Such a system consists of mundane parts (rewriting
trees, applying a log-linear model) and sophisticated parts (parser,
generator, guidance, grammar recompilation), and I find both to be natural in
Prolog.

I suspect that you have just used the wrong tool for the job. Prolog works
well for problems that require reasoning, and unification extensively. But if
you are trying to write, say, a parameter estimator in Prolog, you are using
the wrong tool for the job.

