Добавление условия CASE WHEN в запрос сходства с Jaccard для Neo4J - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть еще один вопрос, связанный со сходством с Джакардом:

Поскольку предыдущий метод, который я пробовал (вызывая алгоритм сходства с jaccard), дал мне странные результаты (я спрошу продолжение этого вопроса в другой теме)):

Я попробовал другой метод для вычисления подобия jaccard моего тестового представления данных (следующим образом):

CSV, использованный для создания всех узлов заголовков:

title_id,title  
T1,Article Title 1  
T2,Article Title 2  

CSV, который я хочу использовать для создания отношений:

title_id,keyword_id,keyword  
T1,K1,aaa  
T1,K2,bbb  
T1,K3,ccc  
T1,K4,ddd  
T2,K1,aaa  
T2,K5,eee  
T2,K6,fff  
T2,K4,ddd  

Я смог рассчитать сходство jaccard, используя следующий код:

MATCH(t:Title)-[:HAS_KEYWORDS]->(k:Keyword)<-[:HAS_KEYWORDS]-(other:Title)  
WITH t, other, 
     count(k) AS intersection, 
     collect(k) AS i  
MATCH (t)-[:HAS_KEYWORDS]->(tk:Keyword)  
WITH t, other, intersection, i, 
     collect(tk) AS s1  
MATCH (other)-[:HAS_KEYWORDS]->(ok:Keyword)  
WITH t, other, intersection, i, s1, 
     collect(ok) AS s2  
WITH t, other, intersection, s1, s2  
WITH t, other, intersection, s1, s2,
     s1+filter(x IN s2 WHERE NOT x IN s1) AS union
RETURN t.title, other.title, s1,s2, 
      ((1.0*intersection)/SIZE(union)) AS jaccard   
ORDER BY jaccard DESC LIMIT 100  

Однако я также хотел бы установитьточка отсечения для рекомендаций, которые я бы сделал на основе этого сходства.
Я попытался добавить ограничение CASE WHEN (следующим образом):

...  
RETURN t, other, s1,s2, 
       CASE WHEN ((1.0*intersection)/size(union)) > 0.1 
         THEN s2.jaccard 
         ELSE null
       END AS jaccard  
...  

После некоторых попыток я понял, что мне нужно добавить... узел (?) перед битом THEN ... jaccard ELSE ..., но когда я это делаю, во время выполнения кода столбец jaccard заполняется нулем.

Поскольку я не слишком уверен, как назвать эту мою проблему, если бы кто-нибудь смог указать мне на некоторые базовые документы, чтобы прочитать и понять, в чем я ошибся, я был бы очень признателенмного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...