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

XQuery统计XML文本中单词后续词频率结果错误问题排查

错误原因

原有代码的计数逻辑存在问题:count() 函数会统计序列中所有项的总数量,你在统计频次的for循环中,每次都会返回一个eq判断得到的布尔值(true/false),无论判断结果是否为真,都会被算作序列的一项计入总数,因此最终所有关联词的计数都等于"has"的总出现次数26。

修正方案

你可以先一次性收集所有符合条件的后续词汇,再基于这个统一的序列做去重和计数,不仅逻辑更清晰,也避免重复遍历XML节点提升执行效率,修改后代码如下:

let $all_w_nodes := doc("C:/Users/money/Desktop/xml/files/KS0.xml")/bncDoc/stext/div/u/s/w
(: 先提取所有值为"has"的<w>节点对应的下一个相邻节点归一化内容 :)
let $follow_word_list := 
  for $node in $all_w_nodes
  where $node/text() = "has"
  return normalize-space(lower-case($node/following-sibling::node()[1]))
return
  for $word in distinct-values($follow_word_list)
  (: 直接统计目标词在预生成的后续词列表中的出现次数 :)
  let $count := count($follow_word_list[. = $word])
  return concat($word, " ", $count)

如果你只想修改原有代码的计数部分,只需把判断条件移到for循环的where子句中,只返回符合匹配要求的节点即可,修改后的计数行如下:

let $count := count(for $node in $file where $node[text()] = "has" and normalize-space(lower-case($node/following-sibling::node()[1])) eq $value return $node)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:06:03