如何使用Neo4js算法插件在字符串列表上计算Jaccard?

时间:2019-07-14 13:50:53

标签: neo4j cypher

我的图形包含标签XUnknownX,它们通过关系:MAYBE链接在一起,如果{{1 }}。为此,我认为Jaccard可能是不错的初始方法。

Neo4j的算法插件的Jaccard相似性实现的https://docs.mongodb.com/manual/tutorial/modify-chunk-size-in-sharded-cluster/指出

X

我想使用该实现来计算字符串值列表的相似度。 Neo4j是否可以通过某种方式来计算字符串的相似度?

示例查询:

match (u:UnknownX {name: 'John Doe'})-[r:MAYBE]-() return count(r) > 1

1 个答案:

答案 0 :(得分:1)

您可以尝试将每个字符串转换为字符代码数组(基于某种编码,例如UTF-8或UTF-16)。

例如,比较“ hello”和“ hello!”使用UTF-8编码,此查询:

RETURN algo.similarity.jaccard(
  apoc.text.bytes('hello'),
  apoc.text.bytes('hello!')
)

将返回0.5714285714285714

apoc.text.bytes函数根据某些字符编码(默认情况下使用UTF-8)返回字符代码列表。