* Presentation of traversi framework via graph recommendations
@ 2016-09-09 6:38 Amirouche Boubekki
2016-09-09 7:31 ` Neil Jerram
2016-09-09 7:49 ` Neil Jerram
0 siblings, 2 replies; 6+ messages in thread
From: Amirouche Boubekki @ 2016-09-09 6:38 UTC (permalink / raw)
To: Guile User
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!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Presentation of traversi framework via graph recommendations
2016-09-09 6:38 Presentation of traversi framework via graph recommendations Amirouche Boubekki
@ 2016-09-09 7:31 ` Neil Jerram
2016-09-10 6:39 ` Amirouche Boubekki
2016-09-09 7:49 ` Neil Jerram
1 sibling, 1 reply; 6+ messages in thread
From: Neil Jerram @ 2016-09-09 7:31 UTC (permalink / raw)
To: Amirouche Boubekki, Guile User
Your blog includes:
Mind the fact that -ref procedures have no ! at the end which means they return a new record.
I think that should be -set instead of -ref
Neil
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!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Presentation of traversi framework via graph recommendations
2016-09-09 6:38 Presentation of traversi framework via graph recommendations Amirouche Boubekki
2016-09-09 7:31 ` Neil Jerram
@ 2016-09-09 7:49 ` Neil Jerram
2016-09-09 14:05 ` Amirouche Boubekki
1 sibling, 1 reply; 6+ messages in thread
From: Neil Jerram @ 2016-09-09 7:49 UTC (permalink / raw)
To: Amirouche Boubekki, Guile User
I got lost at the point of looking up the genres for Toy Story; why does that involve graph traversal?
Probably it would help to add a bit into the blog to explain how the movie information is mapped into a graph.
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!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Presentation of traversi framework via graph recommendations
2016-09-09 7:49 ` Neil Jerram
@ 2016-09-09 14:05 ` Amirouche Boubekki
2016-09-09 19:35 ` Amirouche Boubekki
0 siblings, 1 reply; 6+ messages in thread
From: Amirouche Boubekki @ 2016-09-09 14:05 UTC (permalink / raw)
To: Neil Jerram; +Cc: Guile User
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!
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Presentation of traversi framework via graph recommendations
2016-09-09 14:05 ` Amirouche Boubekki
@ 2016-09-09 19:35 ` Amirouche Boubekki
0 siblings, 0 replies; 6+ messages in thread
From: Amirouche Boubekki @ 2016-09-09 19:35 UTC (permalink / raw)
To: Neil Jerram; +Cc: Guile User, guile-user
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Presentation of traversi framework via graph recommendations
2016-09-09 7:31 ` Neil Jerram
@ 2016-09-10 6:39 ` Amirouche Boubekki
0 siblings, 0 replies; 6+ messages in thread
From: Amirouche Boubekki @ 2016-09-10 6:39 UTC (permalink / raw)
To: Neil Jerram; +Cc: Guile User
On 2016-09-09 09:31, Neil Jerram wrote:
> Your blog includes:
>
> Mind the fact that -ref procedures have no ! at the end which means
> they return a new record.
>
> I think that should be -set instead of -ref
>
That's correct. I fixed that.
By the way, I forgot to mention in the other thread
that the code changed and that you need to git pull.
Best regards,
Amirouche
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-09-10 6:39 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-09 6:38 Presentation of traversi framework via graph recommendations Amirouche Boubekki
2016-09-09 7:31 ` Neil Jerram
2016-09-10 6:39 ` Amirouche Boubekki
2016-09-09 7:49 ` Neil Jerram
2016-09-09 14:05 ` Amirouche Boubekki
2016-09-09 19:35 ` Amirouche Boubekki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).