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

如何使用filter从文本词对统计数据中查询指定单词的相邻词及出现频次

实现方案

你可以通过「筛选+映射」的组合逻辑完成需求,这里提供两种写法:

写法1:列表推导式(更简洁)

neighbours pairs c = [ (neighbour, cnt) | ((w1, w2), cnt) <- pairs, w1 == c || w2 == c, let neighbour = if w1 == c then w2 else w1 ]

逻辑说明:

  • 遍历所有词对频次条目,先筛选出包含目标词c的条目
  • 对符合条件的条目,取出和c配对的另一个词,和对应频次组成新的元组

写法2:filter + map 组合(匹配你最初的思路)

你最初的filter条件逻辑写反了,我们需要保留包含目标词的条目,所以匹配条件是两个词任意一个等于目标词即可:

neighbours pairs c = map extract $ filter match pairs
  where
    -- 筛选包含目标词c的词对条目
    match ((w1, w2), _) = w1 == c || w2 == c
    -- 转换格式,取出相邻词和对应频次
    extract ((w1, w2), cnt) = if w1 == c then (w2, cnt) else (w1, cnt)

效果验证

用你给出的测试用例调用:

neighbours [(("red","car"),2),(("house","red"),1)] "red"

返回结果为[("car",2),("house",1)],完全符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:36:01