Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
01-20-2020 10:02 AM
I am going to replace algo.similarity.jaccard
with the new algo.nodeSimilarity
. In my experiments with nodeSimilarity
I noticed that max
, min
, and mean
are all -1.0
in the result. Then I wrote a query to actually calculate those values from the similarity scores written back to the graph and I was successful. So I am not sure why I see those -1
s in the result of algo.nodeSimilarity
. Here are the params I pass to algo.nodeSimilarity
:
{graph: "cypher", write:true, writeRelationshipType: "SIMILAR", similarityCutoff: 0.3, direction:"OUTGOING"}
Solved! Go to Solution.
01-24-2020 07:46 AM
Thank you for pointing this out.
If you add any of the percentile
properties (p1 for instance) to the YIELD
/RETURN
statements the min
, max
and mean
are populated in the result.
We have prepared a fix for this which will be included in the next patch.
01-22-2020 03:04 PM
I tried this using the sample graph in the docs, and wasn't able to reproduce your results:
CREATE (alice:Person {name: 'Alice'})
CREATE (bob:Person {name: 'Bob'})
CREATE (carol:Person {name: 'Carol'})
CREATE (dave:Person {name: 'Dave'})
CREATE (eve:Person {name: 'Eve'})
CREATE (guitar:Instrument {name: 'Guitar'})
CREATE (synth:Instrument {name: 'Synthesizer'})
CREATE (bongos:Instrument {name: 'Bongos'})
CREATE (trumpet:Instrument {name: 'Trumpet'})
CREATE (alice)-[:LIKES]->(guitar)
CREATE (alice)-[:LIKES]->(synth)
CREATE (alice)-[:LIKES]->(bongos)
CREATE (bob)-[:LIKES]->(guitar)
CREATE (bob)-[:LIKES]->(synth)
CREATE (carol)-[:LIKES]->(bongos)
CREATE (dave)-[:LIKES]->(guitar)
CREATE (dave)-[:LIKES]->(synth)
CREATE (dave)-[:LIKES]->(bongos)
CALL algo.nodeSimilarity(
'MATCH (n) WHERE n:Person or n:Instrument RETURN id(n) as id',
'MATCH (n:Person)-[:LIKES]->(m:Instrument) RETURN id(n) as source, id(m) as target',
{graph: "cypher", write:true, writeRelationshipType: "SIMILAR", similarityCutoff: 0.3, direction:"OUTGOING"}
)
I get min =0.33, max = 1.00, mean=0.6. I tested putting an invalid query in (not specifying both the source and target nodes in the first cypher query, having no matches for the second) and I just get 0. Can you share what version of the graph algorithms library you're using, and any more about your data model, input data, etc?
01-23-2020 08:05 AM
Thank you @alicia.frame
I think I found out when that problem happens. If I YIELD
those values and then RETURN
, I get -1.0
for min
, max
, and mean
, but the other values are right:
CALL algo.nodeSimilarity(
'MATCH (n) WHERE n:Person or n:Instrument RETURN id(n) as id',
'MATCH (n:Person)-[:LIKES]->(m:Instrument) RETURN id(n) as source, id(m) as target',
{graph: "cypher", write:true, writeRelationshipType: "SIMILAR", similarityCutoff: 0.3, direction:"OUTGOING"})
YIELD min, max,writeMillis,loadMillis,nodesCompared,relationships
RETURN min, max,writeMillis,loadMillis,nodesCompared,relationships
Am I missing something?
I am using version 3.5.13.0
of the graph algorithms library.
01-24-2020 07:46 AM
Thank you for pointing this out.
If you add any of the percentile
properties (p1 for instance) to the YIELD
/RETURN
statements the min
, max
and mean
are populated in the result.
We have prepared a fix for this which will be included in the next patch.
All the sessions of the conference are now available online