Sebastian, This sounds reasonable. However, I observe that running the factorize-movielens script computes recommendations for *all* users. Is there a way to compute the recommandation for only one user ?
The recommenditembased recommender allows for using an external file containing the user id, however that algorithm is so slow compared to the factorize (6minutes to run, compared to 6 minutes but for thousands of recommendations). But I didn't find such an option in the factorize script (besides, it seems that some of the ALS are precomputed and cached, so that the recommendation job is quicker). Thank you ! 2013/1/17 Sékine Coulibaly <scoulib...@gmail.com> > Sebastian, > > This sounds reasonable. However, I observe that running the > factorize-movielens script computes recommendations for *all* users. Is > there a way to compute the recommandation for only one user ? > > The recommenditembased recommender allows for using an external file > containing the user id, however that algorithm is so slow compared to the > factorize (6minutes to run, compared to 6 minutes but for thousands of > recommendations). > > Thank you ! > > > > 2013/1/14 Sebastian Schelter <s...@apache.org> > >> Then I would suggesz that you modify the shell script to periodically >> precompute the recommendations and put them into a database afterwards >> which you can query via PHP. >> >> It makes no sense IMO to call a webservice that starts a Hadoop job and >> wait for the results. >> >> /s >> >> >> >> >> On 14.01.2013 10:12, Sékine Coulibaly wrote: >> > Ibrahim, Sebastian, >> > >> > I precisely am trying to create a PHP Webservice to deliver >> recommendations. >> > >> > On a webpage, I would call that webservice, and I was imagining having >> that >> > webservice calling the factorize-movielens script itself, and >> transforming >> > the latter output to something like >> > >> [{itemID:557,value:5.988698},{itemID:578,value:5.0461025},{itemID:1149,value:4.9268165},{itemID:572,value:4.9265957},{itemID:3245,value:4.8139095}], >> > a JSON I could easily parse in my front-end. >> > >> > I don't want (if possible) to involve any Java application or http >> server >> > as suggested (kornapi,myrrix), although I understand these would be a >> > sensible way to do (I'm interested in learning MAhout, so obfuscating >> that >> > part is something I'd like to avoid). >> > >> > Regards >> > >> > >> > 2013/1/14 Sebastian Schelter <s...@apache.org> >> > >> >> This blog post might be useful for you: >> >> >> >> http://ssc.io/a-recommendation-webservice-in-10-minutes/ >> >> >> >> On 14.01.2013 09:31, Sékine Coulibaly wrote: >> >>> Hi Ibrahim, >> >>> >> >>> Actually, for now, I wish I could use it locally, in other words >> without >> >>> using Haddop framework. I've been successfull in trying to launch : >> >>> factorize-movielense-1M.sh ratings.dat >> >>> >> >>> I wish I could launch that very same command from PHP. The Apache >> user is >> >>> www-data indeed. The /tmp/mahout-work-www-data directory is created >> but >> >>> only contains the ratings.csv file. >> >>> >> >>> Regards >> >>> >> >>> >> >>> >> >>> >> >>> 2013/1/14 Ibrahim Yakti <iya...@souq.com> >> >>> >> >>>> your php scripts run using apache user which most probably doesn't >> have >> >>>> HADOOP_HOME, HADOOP_CONF_DIR, ...etc variables defined, please try >> to >> >>>> define them in the php script before making the call. >> >>>> >> >>>> I hope it works. >> >>>> >> >>>> >> >>>> -- >> >>>> Ibrahim >> >>>> >> >>>> >> >>>> On Sun, Jan 13, 2013 at 11:38 PM, Sékine Coulibaly < >> >> scoulib...@gmail.com >> >>>>> wrote: >> >>>> >> >>>>> Hi there, >> >>>>> >> >>>>> I've been able to start locally the factorize-movielens script. What >> >> I'd >> >>>>> like to do is basically create a PHP webservice able to start that >> very >> >>>>> same script, and return the recommendations. >> >>>>> >> >>>>> I'm using Apache2, and I use PHP's shell_exec to start the script as >> >>>>> follows : >> >>>>> >> >>>>> >> >>>>> putenv("JAVA_HOME=" .'/usr/local/jvm/jdk1.7.0_05'); >> >>>>> $output = >> >>>>> >> >>>>> >> >>>> >> >> >> shell_exec('/home/scoulibaly/Téléchargements/mahout-distribution-0.6/examples/bin/factorize-movielens-1M.sh >> >>>>> >> >>>>> >> >>>> >> >> >> /home/scoulibaly/Téléchargements/mahout-distribution-0.6/examples/bin/ratings.dat'); >> >>>>> echo $output; >> >>>>> >> >>>>> >> >>>>> Unfortunately the output I get is as follows : >> >>>>> >> >>>>> creating work directory at /tmp/mahout-work-www-data >> >>>>> >> >>>>> Converting ratings... >> >>>>> >> >>>>> MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. >> >>>>> no HADOOP_HOME set, running locally >> >>>>> MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. >> >>>>> no HADOOP_HOME set, running locally >> >>>>> MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. >> >>>>> no HADOOP_HOME set, running locally >> >>>>> MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath. >> >>>>> no HADOOP_HOME set, running locally >> >>>>> >> >>>>> RMSE is: >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> Sample recommendations: >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> removing work directory >> >>>>> >> >>>>> >> >>>>> I know this is not strictly a Mahout issue, but if someone could >> point >> >>>> me a >> >>>>> way to start Mahout jobs from a PHP script, I'd be very grateful ! >> >>>>> >> >>>>> Thank you >> >>>>> >> >>>> >> >>> >> >> >> >> >> > >> >> >