From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Amirouche Boubekki Newsgroups: gmane.lisp.guile.user Subject: Re: Presentation of traversi framework via graph recommendations Date: Fri, 09 Sep 2016 21:35:36 +0200 Message-ID: <04d7f69f75c75148aef9af6e8a3f69b9@hypermove.net> References: <20160909074901.5992528.49062.42610@ossau.homelinux.net> <580edbd59819dd1f16397b4818a1d711@hypermove.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1473449798 26107 195.159.176.226 (9 Sep 2016 19:36:38 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 9 Sep 2016 19:36:38 +0000 (UTC) User-Agent: Roundcube Webmail/1.1.2 Cc: Guile User , guile-user To: Neil Jerram Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Fri Sep 09 21:36:34 2016 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1biRbA-0005i1-5V for guile-user@m.gmane.org; Fri, 09 Sep 2016 21:36:28 +0200 Original-Received: from localhost ([::1]:59900 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1biRb8-0004Oe-5B for guile-user@m.gmane.org; Fri, 09 Sep 2016 15:36:26 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45294) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1biRaW-0004NU-U9 for guile-user@gnu.org; Fri, 09 Sep 2016 15:35:50 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1biRaV-0000Yq-Ly for guile-user@gnu.org; Fri, 09 Sep 2016 15:35:48 -0400 Original-Received: from relay6-d.mail.gandi.net ([2001:4b98:c:538::198]:37244) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1biRaP-0000UB-T1; Fri, 09 Sep 2016 15:35:42 -0400 Original-Received: from mfilter42-d.gandi.net (mfilter42-d.gandi.net [217.70.178.172]) by relay6-d.mail.gandi.net (Postfix) with ESMTP id 4692AFB8C6; Fri, 9 Sep 2016 21:35:39 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter42-d.gandi.net Original-Received: from relay6-d.mail.gandi.net ([IPv6:::ffff:217.70.183.198]) by mfilter42-d.gandi.net (mfilter42-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id IlRnSuz3VQoZ; Fri, 9 Sep 2016 21:35:37 +0200 (CEST) X-Originating-IP: 10.58.1.144 Original-Received: from webmail.gandi.net (webmail4-d.mgt.gandi.net [10.58.1.144]) (Authenticated sender: amirouche@hypermove.net) by relay6-d.mail.gandi.net (Postfix) with ESMTPA id 42F21FB8A7; Fri, 9 Sep 2016 21:35:36 +0200 (CEST) In-Reply-To: <580edbd59819dd1f16397b4818a1d711@hypermove.net> X-Sender: amirouche@hypermove.net X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4b98:c:538::198 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:12889 Archived-At: I updated the article with a schema and the code. http://hyperdev.fr/notes/a-graph-based-movie-recommender-engine-using-guile-scheme.html Delete the content of /tmp/wt and reload the database. Also, have a look at movielens-step01-*.scm file. The algorithm is very simple hence the recommendation is not very good... On 2016-09-09 16:05, Amirouche Boubekki wrote: > On 2016-09-09 09:49, Neil Jerram wrote: >> I got lost at the point of looking up the genres for Toy Story; why >> does that involve graph traversal?  >> > > Because genres are connected to movies using an edge. It's possible to > store genre information in a movie vertex assoc as a list value but > then > it will be difficult to fetch all movies for a given genre. > > With this graph layout, you can for instance fetch the "fantasy" genre > and ask the question "what are all the movies of fantasy genre" simply > using 'outgoings' proc... See below. > > >> >> Probably it would help to add a bit into the blog to explain how the >> movie information is mapped into a graph.  >> > > I should prolly add a drawing too. > > While trying to write down an explanation about how the graph > is built I figured there is a mistake in how the graph is built. > Movie and genre are connected by a genre edge, it doesn't make much > sens. It should be somekind of relation like "movie is instance > of genre". It will make more sens, it will be more explicit. > > I will rewrite the load script to avoid this mistake and rework > the article. > > I will keep you posted. Thanks for your interest. > >> >> >>   Original Message   >> From: Amirouche Boubekki >> Sent: Friday, 9 September 2016 07:32 >> To: Guile User >> Subject: Presentation of traversi framework via graph recommendations >> >> Héllo, >> >> I published an article on my blog about how to use `grf3` >> the graph database library built on top of wiredtiger [0]. >> >> [0] >> http://hyperdev.fr/notes/a-graph-based-movie-recommender-engine-using-guile-scheme.html >> >> This introduce traversi framework to do graph traversal. >> traversi is inspired from Tinkerpop's Gremlin. Traversi >> is a custom stream library which is faster than srfi-41 >> and support backtracking. >> >> I think that building traversi on top of streams make >> graph traversal much more approachable. >> >> This article is inspired from a *graph-based recommender engine* [1] >> >> >> [1] >> https://markorodriguez.com/2011/09/22/a-graph-based-movie-recommender-engine/ >> >> >> Have fun! -- Amirouche ~ amz3 ~ http://www.hyperdev.fr