2017-03-02 3 views
0

第1列が製品ノードを表し、次のすべての列が製品のプロパティを表す下位の形式のデータがあります。 Neo4jでのコサイン類似度を使ったコンテンツベースのフィルタリングアルゴリズムを適用したい。そのためには、各製品ノードのプロパティとしてfx列を定義し、次にこれらのプロパティをベクトルとして呼び出して、製品間のコサイン類似度を適用する必要があります。私は2つのことをするのに苦労しています: 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

これはすでに見てきましたが、ノードのプロパティで遊ぶのに問題があります。ノードのすべてのプロパティ値を、コサイン類似度形式に入力できるベクトルとしてどのように取るか。 –

答えて

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の名前)になることを、すべての列がスペースで区切られていることを前提としています。

あなたはWITHRETURNを交換する場合は、nameprops値を利用するクエリに追加条項を追加することができます。

関連する問題