|SnapGuide Graph Schema|
Trasversing the Tutorials Graph
Now that the data is represented as graph, let's make some queries. Behind the scene what we make are some traversals. In recommender systems there are two general typs of recommendation approaches: the collaborative filtering and content-based one.
I like the tutorials Amanda preferred, what other tutorials does Amanda like that I haven't seen ?
I like food tutorials, what other food tutorials are there ?
Let's begin with collaborative filtering. I will use some complex traversal queries at our graph. Let's start with the tutorial: "How to Make Sous Vide Chicken at Home". Yes, I love chicken! :)
|Great dish by the way!|
Which users liked Make Sous Vide Chicken at Home and what other tutorials did they liked most in common to ?
What is the query above express ?
There are 37323 paths from Make Sous Vide Chicken at Home to other tutorials and only 8766 of those tutorials are unique. Using this information we can use these duplications to build a ranking mechanism to build recommendations.
And the recommendation for a particular user ? That comes the user-based filtering.
Ok, we have interesting recommendations, but if I desire to make another styles of chicken like Chicken Ramen Soup for my dinner, I probably do not want some tutorial of How to Solve a Rubik Cube 3x3. To adapt to this situation, it is possible to mix collaborative filtering and content-based recommendation into a traversal so it would recommend similar chicken and food tutorials based on similar keywords.
Which tutorials are most highly co-rated with Vide Chicken that share the same keyword 'chicken' with Vide Chicken?