2017-03-02 77 views
0

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

产品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

+0

检查此https://neo4j.com/graphgist/a7c915c8-a3d6-43b9-8127-1836fecc6e2f –

+0

我已经看到了这一点,但我有麻烦玩节点的属性。如何将节点的所有属性值作为可输入余弦相似度formaulae的向量。 –

回答

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选项LOAD CSV,因为它会将每条数据行转换为一张地图,而对于我们当前的目的而言,将每条数据行都作为值集合更方便。

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

如果将RETURN替换为WITH,则可以将附加子句附加到使用nameprops值的查询。