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

Python关键词提取仅匹配首个结果 如何提取所有关键词及后续词

缺陷根因

原代码存在两个核心问题:

  1. 调用list.index(keyword)仅能返回关键词在分词列表中第一次出现的索引,不会返回后续重复出现的位置,导致多次出现的关键词仅能匹配到第一条结果
  2. 未做边界判断:如果关键词恰好是文本最后一个词,直接取索引+1会触发列表越界错误
修复思路
  • 放弃单次index()查找逻辑,改为逐一遍历分词列表的所有位置,不漏掉任何一次关键词匹配
  • 匹配到关键词时先做边界校验,确认存在后续相邻词再提取结果
  • 遍历过程中同步统计每个关键词的匹配次数,遍历结束后统一输出未命中的关键词提示
  • 用集合存储关键词做成员判断,比列表遍历查找效率更高
修复后可直接运行的代码
import re

def keyword_extraction(text, keyword_list, f):
    # 分词处理
    word_list = re.findall(r"[\w']+", text)
    keyword_set = set(keyword_list)
    # 初始化匹配计数,用于后续判断未命中的关键词
    match_record = {kw: 0 for kw in keyword_list}
    total_word_num = len(word_list)

    # 遍历所有词的位置
    for pos in range(total_word_num):
        current_word = word_list[pos]
        if current_word in keyword_set:
            # 边界判断:确保当前词不是最后一个,存在后续相邻词
            if pos + 1 < total_word_num:
                following_word = word_list[pos + 1]
                f.write(f"{current_word}: {following_word}\n")
                match_record[current_word] += 1

    # 写入所有未命中的关键词提示
    for kw, hit_num in match_record.items():
        if hit_num == 0:
            f.write(f'Keyword "{kw}" not found\n')
测试结果

使用提供的测试用例执行后,写入文件的内容和预期完全一致:

like: this
day: dont
day: very

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:27:31