You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j Cypher查询问题:计算文档的Token与Lemma比值

解决Cypher查询中按文档统计Token/Lemma比值的问题

我来帮你搞定这个查询问题,先直接给修正后的语句,再慢慢拆解问题所在:

修正后的Cypher查询

MATCH (d:DOCUMENT)--(t:TOKEN)--(l:LEMMA)
WHERE d.id IN {documentIds}
WITH d, count(DISTINCT t) AS tokenCount, count(DISTINCT l) AS lemmaCount
RETURN d.id AS id, toFloat(lemmaCount)/tokenCount AS ttr

问题原因分析

你原来的查询有两个需要注意的点,其中一个直接导致了ttr全为0.0:

  • 整数除法截断:Cypher里如果两个整数做除法,会直接舍弃小数部分返回整数。比如你期望的2/3会被计算成0,这就是所有结果都是0.0的核心原因。通过把其中一个统计值转成浮点数(toFloat()),就能得到正确的小数比值。
  • 关于你担心的「跨文档统计」:其实原查询里的WITH d已经是按单个Document节点分组统计了,这部分逻辑是没问题的,不需要额外调整分组规则。

验证示例结果

用这个修正后的查询,你提到的两个文档会得到预期结果:

  • id10023:tokenCount=3,lemmaCount=2,ttr≈0.6667
  • id10050:tokenCount=2,lemmaCount=2,ttr=1.0

内容的提问来源于stack exchange,提问作者Hannes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:45:03