Menu

Plista Contest Java Implementation

Plista, a Berlin based company for personalized reading recommendations and advertisements, offers an interesting recommendation contest. The contest is about live recommendations on different websites. Evaluated is the Click-Through-Rate (CTR) on a daily and weekly basis. The contest is a good way to test recommendation algorithms with real users instead of using offline datasets for evaluation. For more details see http://contest.plista.com/content/the_contest

My research group, CC IRML, is participating: currently alan, mjoelnir and me (mtp) are trying our best. As Plista is only offering a JS and PHP implementation, I programmed a JAVA implementation for the client side to communicate with the Plista contest server. Coming with the implementation is a simple most popular recommender. We use this recommender as a baseline to see if our more advanced approaches perform better or worse.

The recommender was running the last week, and results show that the most popular approach performs ok so far.

Get it running
The system requires (or at least is tested with) Java (1.6), Maven (3.x), Git and a Plista contest account. The system uses an embedded Jetty server (default port 8080, but it is customizable).

Create folder for the JAVA codee.g. mkdir plistacontest

Switch to the folder. To use Git you have to setup a repositorygit init

#Setting for the plista contest server
#id of the plista team
plista.teamId=-1
#Port of the server
plista.port=8080

The plista.teamId is required

To run the project, it first must be compiledmvn clean package

End then it can be started (with the standard most popular recommender)mvn exec:java -Dexec.mainClass=”de.dailab.plistacontest.client.Client” -Dexec.args=”teamId.properties de.dailab.plistacontest.recommender.ContestMPRecommender” &

To add your own recommender you can implement the de.dailab.plistacontest.recommender.ContestRecommender interface and pass it to the client.

Like this:

Related

2 comments on “Plista Contest Java Implementation”

Thanks for this contribution, Till. One little remark: In order to get the client running, one has to use pass the right name of the properties file to the invoker. In this case, it would be “team.properties”, not “teamId.properties”, as explained above.