我有以下格式的数据,其中第一列代表产品节点,所有以下列代表产品的属性。我想在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
答案 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
,则可以在查询中附加使用WITH
和name
值的附加条款。