如何在ne04j中应用基于内容的过滤

时间:2017-03-02 12:34:43

标签: neo4j cosine-similarity

我有以下格式的数据,其中第一列代表产品节点,所有以下列代表产品的属性。我想在Neo4j中使用余弦相似性来应用基于内容的过滤算法。为此,我认为,我需要将fx列定义为每个产品节点的属性,然后将这些属性称为向量,然后在产品之间应用余弦相似性。我无法做两件事: 1.如何一次性将这些列定义为属性(因为列可能超过100)。 2.如何将所有属性值称为向量,以便能够应用余弦相似度。

产品f1 f2 f3 f4 f5

P1 0 1 0 1 1

P2 1 0 1 1 0

P3 1 1 1 1 1

P4 0 0 0 1 0

1 个答案:

答案 0 :(得分:0)

您可以使用LOAD CSS输入数据。

例如,此查询将读入您的数据文件并输出每个输入行(忽略标题行)name字符串和props集合:

LOAD CSV FROM 'file:///data.csv' AS line FIELDTERMINATOR ' '
WITH line SKIP 1
RETURN HEAD(line) AS name, [p IN TAIL(line) | TOFLOAT(p)] AS props

即使您的数据有标题行,上面的查询也会跳过它,因为它不需要。事实上,我们不想使用WITH HEADERS的{​​{1}}选项,因为这会将每条数据线转换为地图,而我们目前的目的是更方便地获取每个数据作为价值集合的行。

上面的查询假设所有列都是空格分隔的,第一列将始终包含LOAD CSV字符串,并且所有其他列包含应放入同一集合的数值(命名name)。

如果您将props替换为RETURN,则可以在查询中附加使用WITHname值的附加条款。