Neo4j 做推荐 (4)—— 基于内容的过滤(续)

Neo4j 做推荐 (2)—— 基于内容的过滤前文只是简单描述了内容过滤的概念和简单演示。

在此,我们将从具体实例来介绍如何使用基于内容的过滤方法来给用户推荐电影。

首先,基于共同类型的相似性,如果用户看过《Inception》,我们就可以给用户推荐和该电影具有相同分类(流派)的电影。

// Find similar movies by common genres

MATCH (m:Movie)-[:IN_GENRE]->(g:Genre)<-[:IN_GENRE]-(rec:Movie)

WHERE m.title = "Inception"

WITH rec, COLLECT(g.name) AS genres, COUNT(*) AS commonGenres

RETURN rec.title, genres, commonGenres

ORDER BY commonGenres DESC LIMIT 10;

通过上面的Cypher语句,可以很清晰地看到,筛选出 m 的条件是title 属性为“Inception”,然后通过关系(:IN_GENRE)找出流派(g:Genre),此处注意关系的方向是 -> 。找出 (g:GENRE) 之后,反向查询 <- 有该流派的所有电影。

在结果返回中,COLLECT 首先把流派名放入一个集合中,然后计算所属流派的数量(此数量是电影m 和电影rec 具有相同流派的数量)。返回结果再排个序,取最多的前10条。

Neo4j 做推荐 (1)—— 基础数据

Neo4j 做推荐 (2)—— 基于内容的过滤

Neo4j 做推荐 (3)—— 协同过滤

Neo4j 做推荐 (4)—— 基于内容的过滤(续)

Neo4j 做推荐 (5)—— 基于类型的个性化建议

Neo4j 做推荐 (6)—— 加权内容算法

Neo4j 做推荐 (7)—— 基于内容的相似度量标准

Neo4j 做推荐 (8)—— 协同过滤(利用电影评级)

Neo4j 做推荐 (9)—— 协同过滤(人群的智慧)

Neo4j 做推荐 (10)—— 协同过滤(皮尔逊相似性)

Neo4j 做推荐 (11)—— 协同过滤(余弦相似度)

Neo4j 做推荐 (12)—— 协同过滤(基于邻域的推荐)

你可能感兴趣的:(Neo4j 做推荐 (4)—— 基于内容的过滤(续))