Hacker News new | past | comments | ask | show | jobs | submit login
NLP with Prolog in IBM Watson (nmsu.edu)
49 points by helwr on June 12, 2011 | hide | past | favorite | 14 comments



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.)


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.


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."


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.


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.


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.


Thanks, I'll look at your project.


Have you used Jess? If so, do you have any observations on their relative pros/cons?


I used Jess in one chapter of my Java AI book in the first edition, but Jess's licensing tightened up and I dropped coverage in later editions.


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


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.


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.


Prolog as a language has great features. Checkout out ciao prolog and others and you will know what you can do with it rather than just perceiving it as a library or some embedded language.


Couldn't agree more.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: