Like the 20Q, is there a published algorithm that allows a program to “learn” from user input?
Programs like junk mail filters learn from what you tell it and uses that information to make more insightful choices in the future when classifying an email as junk.
Mahout is one open source machine learning library. It has implementations of a few different algorithms