Python中如何基于允许词列表实现句子内容过滤
Python实现句子白名单词汇过滤
核心逻辑
按照需求对每条输入句子做全词精确匹配过滤,仅保留出现在允许词汇列表中的词,其余内容全部剔除,无匹配词时返回空字符串:
- 先将允许词汇列表转为集合结构,大幅提升大批量数据下的词匹配查找速度
- 按顺序遍历每条原始句子,按空格拆分出所有独立单词
- 逐个校验单词是否在允许词汇集合中,筛选出所有命中的词
- 将命中的词用空格重新拼接为字符串,按原句子顺序存入结果列表
完整实现代码
# 原始输入数据 sentench = ['one from twooo or three people are here', 'he is here'] allow_wd = ['one', 'two', 'three', 'four'] # 构建允许词集合优化查找效率 allow_word_set = set(allow_wd) Newsentench = [] for single_sent in sentench: # 拆分句子为独立单词 word_list = single_sent.split() # 筛选命中白名单的词汇 matched_words = [word for word in word_list if word in allow_word_set] # 拼接结果存入列表 Newsentench.append(' '.join(matched_words)) # 验证输出 print(Newsentench)
代码运行后输出结果和预期完全一致:
['one three', '']
适配调整提示
- 需支持大小写不敏感匹配时,构建允许词集合阶段统一将所有允许词转为小写,匹配判断时同步将待校验单词转小写即可
- 句子包含标点符号时,可先通过正则
re.sub(r'[^\w\s]', ' ', 待处理句子)将标点替换为空格,再做单词拆分,避免标点附着在单词上导致匹配失效 - 需支持模糊匹配、词根匹配场景,直接替换单词校验逻辑为对应匹配规则即可
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

