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

修改Python NLP函数:添加特定词汇出现次数双重校验条件

修改后的函数实现

我们需要调整原函数逻辑,同时满足两个校验条件:目标词汇总出现次数>2,且每个出现的目标词汇的次数都>2。以下是修改后的代码:

from collections import Counter

words = ['good', 'bad', 'excellent','delivery', 'quality','upset','better','poor','refund','fake','cheat','quick','long','scam','cheaper','aluminium']

def func(words, list1):
    final_list = []
    target_words = set(words)  # 转集合提升查找效率
    for sentence in list1:
        # 拆分句子并过滤出目标词汇
        filtered_words = [word for word in sentence.split() if word in target_words]
        if not filtered_words:
            continue  # 无目标词汇直接跳过
        
        # 统计每个目标词汇的出现次数
        word_count = Counter(filtered_words)
        # 校验两个核心条件
        total_over_2 = sum(word_count.values()) > 2
        each_over_2 = all(count > 2 for count in word_count.values())
        
        if total_over_2 and each_over_2:
            final_list.append(sentence)
    return final_list

# 示例测试调用
test_sentences = [
    "I am a good delivery person, but still customers cheat me sometimes.",
    "I am a good delivery boy, I do good things to people, I don't cheat anyone, yet people are not good to me and cheat me often.",
    "good good good delivery delivery delivery cheat cheat cheat",
    "bad bad bad poor poor poor"
]

final_list = func(words, test_sentences)
print(*final_list, sep='\n\n')

代码逻辑说明

  • 用collections.Counter高效统计目标词汇的出现次数,替代手动计数的冗余逻辑
  • 将words转为集合,大幅提升单词归属判断的效率
  • 先过滤出句子中的目标词汇,避免对非目标词汇做无效统计
  • 分别校验两个条件:
    1. sum(word_count.values()) > 2:所有目标词汇的总出现次数超过2
    2. all(count > 2 for count in word_count.values()):每个出现过的目标词汇,单独出现次数都超过2
  • 仅同时满足两个条件的句子,才会被加入结果列表

测试结果说明

  • 第一句:总目标词汇数3,但单个词汇出现次数均≤2,不满足条件,不会被选中
  • 第二句:good出现3次,但delivery仅1次、cheat仅2次,不满足条件,不会被选中
  • 第三句:good、delivery、cheat各出现3次,同时满足两个条件,会被选中
  • 第四句:bad、poor各出现3次,同时满足两个条件,会被选中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:45:30