Taste is a flexible, fast collaborative filtering engine for Java. Taste takes users' preferences for items ("tastes") and returns estimated preferences for other items. For example, a site that sells books or CDs could easily use Taste to figure out, from past purchase data, which CDs a customer might be interested in listening to.
Taste provides a rich set of components from which you can construct a customized recommender system from a selection of algorithms. Taste is designed to be enterprise-ready; it's designed for performance, scalability and flexibility. It supports a standard EJB interface for J2EE-based applications, but Taste is not just for Java; it can be run as an external server which exposes recommendation logic to your application via web services and HTTP.
· Top-level packages define the Taste interfaces to these key abstractions:
· UserCorrelation and ItemCorrelation
Subpackages of comp.planetj.taste.impl hold implementations of these interfaces. These are the pieces from which you will build your own recommendation engine. That's it! For the academically inclined, Taste supports both memory-based and item-based recommender systems, slope one recommenders, and a couple other experimental implementations. It does not currently support model-based recommenders.
· Java / J2SE 5.0
· Apache Ant 1.5 or later, if you want to build from source or build examples.
· Taste web applications require a Servlet 2.3+ container, such as Jakarta Tomcat. It may in fact work with older containers with slight modification.
· Taste EJB requires an EJB 2.x container. It may work with older EJB containers with slight changes to the deployment descriptor.
· MySQLJDBCDataModel implementation requires a MySQL 4.x (or later) database. Again, it may be made to work with earlier versions or other databases with slight changes.
What's New in This Release:
· Replaced PreferenceTransform with PreferenceTransform2 and CorrelationTransform. PreferenceTransform was a flawed abstraction. These new interfaces are, hopefully, more sound. The original implementations of PreferenceTransform have been ported to new implementations of the new interfaces.
· Removed Bayes Nets implementations -- no plans to complete these in near future
· Roll back change to super.setPreference() in SlopeOneRecommender, it caused a different problem. (Credit: daemmon)
· AbstractJDBCDiffStorage.getAverageItemDiff() now returns null if count of item prefs is 0, fixing a bug. (Credit: daemmon)