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

Python文本关键词计数时多词组合关键词无法统计问题排查

问题根因

代码存在两个核心问题,直接导致多词关键词统计失效、后续逻辑无法正常执行:

  • 缩进语法错误:data字典定义、遍历统计、结果打印的全部代码,被错误缩进放在get_keyword_counts函数内部,且位于return语句之后,属于永远不会执行的死代码。代码运行时定义完函数和关键词列表就会结束,根本不会走到后续统计流程。
  • 统计逻辑不兼容多词关键词:原有逻辑通过text.split()将文本按空格拆分为独立单个单词,再用Counter统计单个词的频次,拆分结果中不存在my name这类带空格的多词组合,自然无法匹配到对应关键词。
修复方案
  • 调整代码缩进,将业务逻辑(data定义、遍历、打印)移到函数外部的全局作用域,保证执行流程通顺。
  • 重写关键词统计逻辑,放弃拆分单个词计数的方案,直接遍历每个关键词统计其在文本中的出现次数,同时兼容单词、多词短语场景。
修复后完整代码
from collections import Counter
import json 
from typing import List, Dict


keywords = ['is', 'my name']

def get_keyword_counts(text: str, keywords: List[str]) -> Dict[str, int]:
    count_result = {}
    for keyword in keywords:
        # 直接统计关键词出现次数,同时兼容单词、多词短语
        count_result[keyword] = text.count(keyword)
    return count_result

data = {
    "policy": {
        "1": {
            "ID": "ML_0",
            "URL": "www.a.com",
            "Text": "my name is Martin and here is my code"
        },
        "2": {
            "ID": "ML_1",
            "URL": "www.b.com",
            "Text": "my name is Mikal and here is my code"
        }
    }
}
    
for policy in data['policy'].values():
    policy.update(get_keyword_counts(policy['Text'], keywords))
print(json.dumps(data, indent=4))
效果说明

修复后运行代码,两个文本条目都可以正确输出统计值:is单词语句中出现2次,my name多词短语出现1次,统计结果会自动追加到对应的policy字典条目下。

如果需要更精准的匹配(比如避免把this中包含的is误判为关键词),可以引入正则基于单词边界做匹配优化,当前版本已经可以满足多词关键词统计的基础需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:45:38