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

如何用优雅方式统计句子中不同指定词汇的出现次数?

优雅统计句子中目标表述的数量

针对你需要统计句子中不同目标表述(比如提及的政客数量)的需求,原来逐一定义正则、逐个判断的写法在词汇量增大时会变得繁琐,这里提供两种更简洁可扩展的实现方式:

方法一:合并正则模式,统计唯一匹配项

这种方式适合需要精准匹配(比如全词匹配、忽略大小写)的场景,通过合并所有目标词汇为一个正则模式,一次性找出所有匹配项后去重统计:

import re

# 维护目标词汇列表,新增/删除直接修改这里即可
targets = ['Trump', 'Biden', 'Obama']
sentence = "Trump won the republican primaries, and Biden once defeated Trump."

# 构建带单词边界的正则模式,处理特殊字符并支持大小写忽略
pattern = re.compile(
    r'\b(' + '|'.join(re.escape(t) for t in targets) + r')\b',
    re.IGNORECASE
)
# 提取所有匹配项,转集合去重后统计数量
unique_mentioned = set(pattern.findall(sentence))
count = len(unique_mentioned)

print(count)  # 输出:2(仅提到Trump和Biden)

方法二:遍历目标列表,检查存在性

如果需求更简单,也可以直接遍历目标列表,逐个检查词汇是否在句子中出现(同样支持全词匹配):

import re

targets = ['Trump', 'Biden', 'Obama']
sentence = "Trump won the republican primaries, and Biden once defeated Trump."

# 用生成器表达式统计出现过的目标数量
count = sum(
    1 for t in targets
    if re.search(r'\b' + re.escape(t) + r'\b', sentence, re.IGNORECASE)
)

print(count)  # 输出:2

优势说明

  • 可扩展性强:只需维护目标词汇列表,无需为每个词汇单独编写正则和判断逻辑
  • 避免误匹配:通过\b单词边界确保匹配完整词汇,re.escape处理词汇中的特殊字符
  • 灵活适配需求:可通过修改正则参数(如re.IGNORECASE)快速调整匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:24:57