Как применить фильтрацию на основе содержимого в ne04j

У меня есть данные в формате ниже, где 1-й столбец представляет узел продуктов, все следующие столбцы представляют свойства продуктов. Я хочу применить алгоритм фильтрации на основе контента с использованием косинусного сходства в 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


person Amar jaiswal    schedule 02.03.2017    source источник


Ответы (1)


Вы можете использовать ЗАГРУЗИТЬ 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, вы можете добавить к запросу дополнительные предложения, которые используют значения name и props.

person cybersam    schedule 02.03.2017